При создании форм может потребоваться реализовать всплывающий список месяцев для выбора. Готовые примеры реализации данной задачи можно встретить в некоторых типовых конфигурациях.
В типовых конфигурациях уже реализовыны различные механизмы. Поэтому для решения некоторых задач по программированию можно воспользоваться готовыми функциями и процедурами. Чаще всего они находятся в общих модулях.
Формат вывода списка месяцев 2016... Январь 2017 Февраль 2017 Март 2017 Апрель 2017 Май 2017 Июнь 2017 Июль 2017 Август 2017 Сентябрь 2017 Октябрь 2017 Ноябрь 2017 Декабрь 2017 2018...
Пример формирования списка Данный пример реализован в типовой конфигурации "Бухгалтерия предприятия 2.0". Функции и процедуры по обработке списка находятся в общем модуле "РаботаСДиалогами".
Для создания списка, на форму добавим поле ввода "ПериодСтрокой" (тип строка). Чтобы хранить выбранное значение, преобразованное к типу "Дата", добавим реквизит "Период" (тип дата).
Событие ПриОткрытии В данном событии задается первоначальная дата, которая будет отображаться при открытии формы.
Процедура ПриОткрытии(Отказ, СтандартнаяОбработка) Период = ?(ЗначениеЗаполнено(Период), Период, ТекущаяДата()); ПериодСтрокой = РаботаСДиалогами.ДатаКакМесяцПредставление(Период); КонецПроцедуры
Событие НачалоВыбораИзСписка В данном событии формируется список месяцев и в реквизит записывается выбранное значение.
Процедура ПериодСтрокойНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) РаботаСДиалогами.НачалоВыбораИзСпискаПредставленияПериодаРегистрации(Элемент, СтандартнаяОбработка, Период, ЭтаФорма); КонецПроцедуры
Остальные события не являются обязательными и добавляются при необходимости Обрабатывается нажатие на кнопку регулировки.
Процедура ПериодСтрокойРегулирование(Элемент, Направление, СтандартнаяОбработка) Период = ДобавитьМесяц(Период, Направление); Элемент.Значение = РаботаСДиалогами.ДатаКакМесяцПредставление(Период); КонецПроцедуры При ручном вводе текста добавляется подсказка.
Процедура ПериодСтрокойПриИзменении(Элемент) РаботаСДиалогами.ДатаКакМесяцПодобратьДатуПоТексту(Элемент.Значение, Период); Элемент.Значение = РаботаСДиалогами.ДатаКакМесяцПредставление(Период); КонецПроцедуры При ручном редактировании срабатывает автоподбор.
Процедура ПериодСтрокойАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка) РаботаСДиалогами.ДатаКакМесяцАвтоПодборТекста(Текст, ТекстАвтоПодбора, СтандартнаяОбработка); КонецПроцедуры При окончании ввода произвольного текста срабатывает подбор даты.
Процедура ПериодСтрокойОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) РаботаСДиалогами.ДатаКакМесяцОкончаниеВводаТекста(Текст, Значение, СтандартнаяОбработка); КонецПроцедуры
|