Выпадающее меню с выбором месяца в 1С

Иногда, например в вопросах расчетов с персоналом, требуется организовать выбор не конкретной даты документа или отчета, а месяца. То есть, пользователь должен выбрать не 01.01.2020, а просто Январь 2020. При этом, выбранный пользователем месяц должен быть преобразован в нормальную дату, т.к. период регистров указывается датой — началом выбранного месяца.

Организовать выбор месяца можно с помощью создания поля с выпадающим меню. Основу процедуры формирования такого меню мы взяли на сайте oparin.info и внесли некоторые дополнения, которые, на наш взгляд, должны сделать меню удобнее.

Итак, для организации выпадающего меню с выбором месяца нам понадобятся два реквизита:

  1. Реквизит объекта Период  с типом Дата. В него будет записываться дата, преобразованная из месяца, выбранного пользователем. Этот реквизит будет скрыт от пользователя.
  2. Реквизит формы Месяц с типом Строка. Здесь будет отображаться выбранный месяц и само меню.

С свойствах элемента формы Месяц, связанного с одноименным реквизитом, нужно установить флаг Режим выбора из списка.

Теперь создадим процедуру, которая будет формировать выпадающее меню.

В эту процедуру мы должны передать год в виде числа. Затем, начинаем формировать список выбора в следующем виде:

  • 2019 — номер предыдущего года. Он нужен, если понадобится выбрать месяц более раннего года.
  • Январь 2020
  • ………………………. — месяцы года, переданного в процедуру.
  • Декабрь 2020
  • 2021 — номер следующего года. Он нужен, если понадобится выбрать месяц более позднего года.

Далее, эту процедуру нужно вызывать в двух случаях:

  1. При открытии формы:

    Здесь мы устанавливаем значение реквизита формы Месяц и формируем список выбора, передав туда либо год из реквизита объекта Период, либо, если он не заполнен, текущую дату.

  1. При изменении реквизита формы Месяц


    Итак, при изменении реквизита формы Месяц мы прежде всего проверяем, заполнен ли он. Если да, то проверяем, какой пункт списка выбран. Если пользователь выбрал месяц (длина строки больше 4 символов), то вычисляем номер месяца и формируем дату. Сформированную дату записываем в реквизит объекта Период.
    Если же выбран год, переформировываем список выбора и снова показываем выпадающее меню. После того как пользователь сделает выбор из нового списка, проверка повторяется.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

19 + 9 =