Category:

Диалог ввода данных в 1С

Ввод числа

Для ввода числа в 1С можно использовать одну из двух функций: ВвестиЧисло или ПоказатьВводЧисла. ВвестиЧисло синхронная функция, ПоказатьВводЧисла — асинхронная. ВвестиЧисло считается устаревшей, так как будет работать только если разрешено использование модальности.

Рассмотрим обе функции на примерах.

ВвестиЧисло

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимоеЧисло;
	//Если переменной ВводимоеЧисло присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	//число ограничено длиной 15 разрядов и точностью 2 знака
	Если ВвестиЧисло(ВводимоеЧисло, "Введите число", 15, 2) Тогда
		//функция вернет Истина, если число введено
		//в переменной ВводимоеЧисло будет само число 
		Сообщить(ВводимоеЧисло);
	Иначе
		//функция вернет Ложь, если пользователь закрыл окно ввода
		Сообщить("Ничего не введено!");
	КонецЕсли;	
	
КонецПроцедуры


ПоказатьВводЧисла

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимоеЧисло;
	//Если переменной ВводимоеЧисло присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	ОбратныйВызов = Новый ОписаниеОповещения("ОбратныйВызов", ЭтотОбъект);
	//число ограничено длиной 15 разрядов и точностью 2 знака
	ПоказатьВводЧисла(ОбратныйВызов, ВводимоеЧисло, "Введите число", 15, 2);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбратныйВызов(Число, ДопПар) Экспорт 
	Если Число = Неопределено Тогда
		//Число = Неопределено, если пользователь закрыл окно ввода
		Сообщить("Ничего не введено!");	
	Иначе
		//в переменной Число будет само число 
		Сообщить(Число);
	КонецЕсли;	
КонецПроцедуры


Ввод строки

Для ввода строки в 1С можно использовать одну из двух функций: ВвестиСтроку или ПоказатьВводСтроки. ВвестиСтроку синхронная функция, ПоказатьВводСтроки — асинхронная. ВвестиСтроку считается устаревшей, так как будет работать только если разрешено использование модальности.

Рассмотрим обе функции на примерах.

ВвестиСтроку

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимаяСтрока;
	//Если переменной ВводимаяСтрока присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение	

	//строка ограничена длиной 100 символов, 
	//Истина - значит что будет многострочное поле ввода
	Если ВвестиСтроку(ВводимаяСтрока, "Введите строку", 100, Истина) Тогда
		//функция вернет Истина, если строка введена
		//в переменной ВводимаяСтрока будет сама строка 
		Сообщить(ВводимаяСтрока);
	Иначе
		//функция вернет Ложь, если пользователь закрыл окно ввода
		Сообщить("Ничего не введено!");
	КонецЕсли;	
	
КонецПроцедуры


ПоказатьВводСтроки

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимаяСтрока;
	//Если переменной ВводимаяСтрока присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	ОбратныйВызов = Новый ОписаниеОповещения("ОбратныйВызов", ЭтотОбъект);
	//строка ограничена длиной 100, 
	//Истина - значит что будет многострочное поле ввода
	ПоказатьВводСтроки(ОбратныйВызов, ВводимаяСтрока, "Введите строку", 100, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбратныйВызов(Строка, ДопПар) Экспорт 
	Если Строка = Неопределено Тогда
		//Строка = Неопределено, если пользователь закрыл окно ввода
		Сообщить("Ничего не введено!");	
	Иначе
		//в переменной Строка будет сама строка 
		Сообщить(Строка);
	КонецЕсли;	
КонецПроцедуры	


Ввод даты

Для ввода даты в 1С можно использовать одну из двух функций: ВвестиДату или ПоказатьВводДаты. ВвестиДату синхронная функция, ПоказатьВводДаты — асинхронная. ВвестиДату считается устаревшей, так как будет работать только если разрешено использование модальности.

Рассмотрим обе функции на примерах.

ВвестиДату

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимаяДата;
	//Если переменной ВводимаяДата присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	//будем вводить только дату, без времени
	Если ВвестиДату(ВводимаяДата, "Введите дату", ЧастиДаты.Дата) Тогда
		//функция вернет Истина, если дата введена
		//в переменной ВводимаяДата будет сама дата 
		Сообщить(ВводимаяДата);
	Иначе
		//функция вернет Ложь, если пользователь закрыл окно ввода
		Сообщить("Ничего не введено!");
	КонецЕсли;	
	
КонецПроцедуры


ПоказатьВводДаты

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимаяДата;
	//Если переменной ВводимаяДата присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	ОбратныйВызов = Новый ОписаниеОповещения("ОбратныйВызов", ЭтотОбъект);
	//будем вводить только дату, без времени
	ПоказатьВводДаты(ОбратныйВызов, ВводимаяДата, "Введите дату", ЧастиДаты.Дата);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбратныйВызов(Дата, ДопПар) Экспорт 
	Если Дата = Неопределено Тогда
		//Дата = Неопределено, если пользователь закрыл окно ввода
		Сообщить("Ничего не введено!");	
	Иначе
		//в переменной Дата будет сама дата 
		Сообщить(Дата);
	КонецЕсли;	
КонецПроцедуры


Ввод значения

Помимо функций для ввода примитивных типов, в 1С есть функции для ввода значения произвольного типа данных: синхронная ВвестиЗначение и асинхронная ПоказатьВводЗначения. ВвестиЗначение можно использовать только если разрешено использование модальности.

В данных функциях последним параметром можно передать тип значения, который нужно будет ввести. Если тип не указать, то будет использоваться тип переменной, в которую будет получен результат. Также можно указать составной тип данных, тогда до ввода значения нужно будет выбрать тип.

Рассмотрим обе функции на примерах.

ВвестиЗначение

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимоеЗначение;
	//Если переменной ВводимоеЗначение присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	//будем выбирать из справочника товаров
	Тип = Тип("СправочникСсылка.Товары");
	Если ВвестиЗначение(ВводимоеЗначение, "Выберите значение", Тип)  Тогда
		//функция вернет Истина, если пользователь выбрал товар
		//в переменной ВводимоеЗначение будет сам товар 
		Сообщить(ВводимоеЗначение);
	Иначе
		//функция вернет Ложь, если пользователь закрыл окно выбора
		Сообщить("Ничего не выбрано!");
	КонецЕсли;	
	
КонецПроцедуры


ПоказатьВводЗначения

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимоеЗначение;
	//Если переменной ВводимоеЗначение присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	//будем выбирать из справочника товаров
	Тип = Тип("СправочникСсылка.Товары");
	
	ОбратныйВызов = Новый ОписаниеОповещения("ПослеВыбораТовара", ЭтотОбъект);
	ПоказатьВводЗначения(ОбратныйВызов, ВводимоеЗначение, "Выберите значение", Тип);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораТовара(ВыбранныйТовар, ДопПараметры) Экспорт 
	Если ВыбранныйТовар = Неопределено Тогда
		//ВыбранныйТовар = Неопределено, если пользователь закрыл окно выбора
		Сообщить("Ничего не введено!");	
	Иначе
		//в переменной ВыбранныйТовар будет сам товар 
		Сообщить(ВыбранныйТовар);
	КонецЕсли;	
КонецПроцедуры


Составной тип

&НаКлиенте
Процедура Команда1(Команда)
	
	Перем ВводимоеЗначение;
	//Если переменной ВводимоеЗначение присвоить какое-то значение, 
	//то оно будет использоваться как первоначальное значение
	
	//будем выбирать из справочника товаров или контрагентов
	ТипТовар = Тип("СправочникСсылка.Товары");
	ТипКонтр = Тип("СправочникСсылка.Контрагенты");
	Типы = Новый Массив;
	Типы.Добавить(ТипТовар);
	Типы.Добавить(ТипКонтр);
	СоставнойТип = Новый ОписаниеТипов(Типы);
	
	ОбратныйВызов = Новый ОписаниеОповещения("ПослеВыбора", ЭтотОбъект);
	ПоказатьВводЗначения(ОбратныйВызов, ВводимоеЗначение, "Выберите значение", СоставнойТип);
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбора(ВыбранныйЭлемент, ДопПараметры) Экспорт 
	Если ВыбранныйЭлемент = Неопределено Тогда
		//ВыбранныйЭлемент = Неопределено, если пользователь закрыл окно выбора
		Сообщить("Ничего не введено!");	
	Иначе
		//в переменной ВыбранныйЭлемент будет товар или контрагент 
		Сообщить(ВыбранныйЭлемент);
	КонецЕсли;	
КонецПроцедуры


Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Программное решение для сдачи и подготовки к экзаменам
Программирование в 1С 8.3 с нуля — краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

promo luckyea77 november 4, 2024 21:52 5
Buy for 10 tokens
В прошлом посте " Эпоха интеллекта" я публиковал эссе генерального директора OpenAI Сэма Альтмана. В нем Альтман пишет, что мы можем представить себе возможности создавать любое программное обеспечение, которое только можно представить, и многое другое. Недавно я с помощью нейросети создал…