Объект 1С "Перечисления" — прикладной объект, предназначенный для хранения наборов значений, являющихся самостоятельными сущностями с прикладной точки зрения; это предопределенный набор значений (список значений), заданный еще на этапе разработки приложения, который не редактируется в режиме Предприятие (не меняется в процессе работы).
Например:
- ставки налога на добавленную стоимость (0, 10 или 18%);
- статусы заказов ("Согласован", "К отгрузке", "Закрыт");
- пол (мужской/женский) и т.д.
Эти значения использует прикладной код конфигурации, для каждого из значений организуя обработку данных по отдельному алгоритму. Благодаря тому, что эти значения описаны в составе объектов конфигурации, они являются постоянными, неизменяемыми для прикладного кода, но их визуальное представление для пользователя может быть изменено в любое время.
Таким образом, Перечисления 1С – это объект 1С, позволяющий в конфигураторе задать список предопределенных значений, которые:
- пользователь сможет выбирать в тех или иных полях;
- пользователь не может изменить;
- напрямую доступны для обращения в программном коде.
Создание перечисления и настройка его структуры
Новое перечисление создается командой "Добавить" в соответствующей ветви конфигурации. После этого необходимо добавить значения перечислений (команда "Добавить" на вкладке "Данные"):
Стандартными реквизитами Перечисления являются:
- Ссылка — уникальный идентификатор объекта;
- Порядок — определяет, в каком порядке выводятся значения перечисления пользователю.
Перечисление может иметь собственные формы:
- форму списка;
- форму выбора перечисления.
Работа с перечислениями в программном коде 1С
К значению перечисления можно обращаться напрямую:
- в программном коде:
1 2 3 |
Если Контрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо ТогдаСообщить("Юридическое лицо"); КонецЕсли; |
- в запросе:
1 2 3 |
ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо) |
Использование перечисления в форме справочника
Чтобы обратиться к предопределенному значению перечисления на клиенте нужно использовать функцию ПредопределенноеЗначение(), которая позволяет получить ссылку на элемент из предопределенных данных, прикладных перечислений и точек бизнес-процессов.
Синтаксис описания предопределенного значения указанной функции:
<Тип предопределенного значения>.<Имя объекта метаданных>.<Значение>.
<Тип предопределенного значения> может быть:
- Справочник;
- ПланВидовХарактеристик;
- ПланСчетов;
- ПланВидовРасчета;
- Перечисление.
В качестве <Имя объекта метаданных> указывается имя объекта конфигурации, как оно задано в конфигураторе.
<Значение> указывается:
- как имя соответствующего объекта конфигурации типа ЗначениеПеречисления - для перечислений, определенных в конфигурации;
- как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка для указания пустой ссылки - для всех остальных типов предопределенных значений.
Для точек маршрутов бизнес-процессов имя предопределенного значения имеет вид:
БизнесПроцесс.<Имя объекта метаданных>.ТочкаМаршрута.<Имя точки маршрута>.
Например:
1 |
ПредопределенноеЗначение("Перечисление.ВидыНоменклатуры.Материал") |
или
1 |
ПредопределенноеЗначение("ПланСчетов.Основной.Счет41") |
Получение имени значения перечисления, заданного в конфигурации
Чтобы определить имя значения перечисления, заданное в конфигурации, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя.
Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления. Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления.
Например:
1 |
ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация; |
1 |
ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя; |
1 |
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления); |
1 |
ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; |
Получение значений перечислений через внешнее соединение или Automation сервер
Практические примеры https://kuharbogdan.com