У документа Рассылка электронной почты пользователю необходимо ограничить выбор статуса до Подготоваливается и Подготовлена. Статусы Выполняется и Завершена будут устанавливаться регламентным заданием в момент выполнения рассылки и ее завершения. Разбираемся с ограниченим выбора значений перечисления.
Задача
Имеется документ Рассылка электронной почты, при создании документа автоматически устанавливаетс статус Подготавливается, после подготовки рассылки пользователь устанавливает статус Подготовлена. Рассылка выполняется регламентным заданием с момента указанным как дата документа, в моент рассылки устанавливается статус Выполняется, по заверешении — Заверешена. Пользователю необходимо ограничить выбор статуса до Подготоваливается и Подготовлена.
Решение
При указании типа реквизита перечисление пользователю будут доступны к выбору все значения этого перечисления.
В интеренетах для ограничения доступных значений перечислений зачастую предлагают выполнять это непосредственно в форме. Но для этого в платформе предусмотрен целый механизм, потому не будем костытировать.
Для органичения необходимо в процедуре ОбработкаПолученияДанныхВыбора() модуля менеджера перечисления указать доступные данные выбора в переменной ДанныеВыбора. Для этого в переменную ДанныеВыбора поместим список допустимых значений.
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДанныеВыбора = Новый СписокЗначений; ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыРассылки.Подготавливается")); ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.СтатусыРассылки.Подготовлена")); КонецПроцедуры
Так же не забываем переменной СтандартнаяОбработка присвоить значение Ложь, иначе в списке выбора будут доступны все элементы + указанные в переменной ДанныеВыбора. Проверяем результат:
Теперь даже если будет указан не доступный для пользователя статус, он будет корректно отображаться:
А если в разных формах список выбор должен быть различным?