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

Apr 10, 2022 13:21

Ввод числа

Для ввода числа в 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-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

программирование

Previous post Next post
Up