1CLenta.ru  

Создать список выбора месяцев на форме

Программирование системы     10.02.2017 09:36     6744

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

В типовых конфигурациях уже реализовыны различные механизмы. Поэтому для решения некоторых задач по программированию можно воспользоваться готовыми функциями и процедурами. Чаще всего они находятся в общих модулях.

Формат вывода списка месяцев


2016...
Январь 2017
Февраль 2017
Март 2017
Апрель 2017
Май 2017
Июнь 2017
Июль 2017
Август 2017
Сентябрь 2017
Октябрь 2017
Ноябрь 2017
Декабрь 2017
2018...

Пример формирования списка


Данный пример реализован в типовой конфигурации "Бухгалтерия предприятия 2.0". Функции и процедуры по обработке списка находятся в общем модуле "РаботаСДиалогами".

Для создания списка, на форму добавим поле ввода "ПериодСтрокой" (тип строка).
Чтобы хранить выбранное значение, преобразованное к типу "Дата", добавим реквизит "Период" (тип дата).

Событие ПриОткрытии


В данном событии задается первоначальная дата, которая будет отображаться при открытии формы.
Процедура ПриОткрытии(Отказ, СтандартнаяОбработка)

Период = ?(ЗначениеЗаполнено(Период), Период, ТекущаяДата());
ПериодСтрокой = РаботаСДиалогами.ДатаКакМесяцПредставление(Период);

КонецПроцедуры


Событие НачалоВыбораИзСписка


В данном событии формируется список месяцев и в реквизит записывается выбранное значение.
Процедура ПериодСтрокойНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)

РаботаСДиалогами.НачалоВыбораИзСпискаПредставленияПериодаРегистрации(Элемент,
СтандартнаяОбработка, Период, ЭтаФорма);

КонецПроцедуры


Остальные события не являются обязательными и добавляются при необходимости


Обрабатывается нажатие на кнопку регулировки.
Процедура ПериодСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка)

Период = ДобавитьМесяц(Период, Направление);
Элемент.Значение = РаботаСДиалогами.ДатаКакМесяцПредставление(Период);

КонецПроцедуры

При ручном вводе текста добавляется подсказка.
Процедура ПериодСтрокойПриИзменении(Элемент)

РаботаСДиалогами.ДатаКакМесяцПодобратьДатуПоТексту(Элемент.Значение, Период);
Элемент.Значение = РаботаСДиалогами.ДатаКакМесяцПредставление(Период);

КонецПроцедуры

При ручном редактировании срабатывает автоподбор.
Процедура ПериодСтрокойАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)

РаботаСДиалогами.ДатаКакМесяцАвтоПодборТекста(Текст, ТекстАвтоПодбора, СтандартнаяОбработка);

КонецПроцедуры

При окончании ввода произвольного текста срабатывает подбор даты.
Процедура ПериодСтрокойОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)

РаботаСДиалогами.ДатаКакМесяцОкончаниеВводаТекста(Текст, Значение, СтандартнаяОбработка);

КонецПроцедуры

Комментарии (0)