Перечисления 1С
Перечисление 1С — это объект встроенного метаданных платформы «1С:Предприятие», предназначенный для хранения и использования в алгоритмах и интерфейсах фиксированного набора значений, которые не изменяются в процессе работы информационной базы. Перечисления являются одним из фундаментальных средств типизации данных и служат альтернативой справочникам в случаях, когда список возможных вариантов строго определён на этапе разработки и не подлежит редактированию пользователем.
Назначение и область применения
Основная функция перечисления — задать конечный, заранее известный набор значений для реквизита объекта, переменной алгоритма или реквизита формы. В отличие от справочника, значения перечисления нельзя добавить, удалить или изменить в режиме «1С:Предприятие» (пользовательском режиме); все манипуляции с составом перечисления производятся только в режиме «Конфигуратор» (режиме разработки). Это обеспечивает жёсткую типизацию данных и исключает ошибки, связанные с некорректным вводом значений.
Типичные сценарии использования перечислений в конфигурациях на платформе 1С:
- Статусы документов (например: «Принят», «Отгружен», «Проведён», «Отменён»).
- Виды контрагентов (например: «Юридическое лицо», «Физическое лицо», «Индивидуальный предприниматель»).
- Типы оплаты (например: «Наличная», «Безналичная», «Карта»).
- Пол физического лица (например: «Мужской», «Женский»).
- Единицы измерения времени (например: «Час», «День», «Месяц», «Год»).
Структура и свойства
В конфигураторе перечисление описывается как объект метаданных, который может содержать одно или несколько значений. Каждое значение перечисления имеет следующие обязательные атрибуты:
- Имя — идентификатор в коде (на латинице, без пробелов). Используется для обращения к значению из встроенного языка.
- Синоним — представление значения в интерфейсе пользователя (на русском или другом языке). Может быть локализовано.
- Комментарий — произвольное текстовое описание (необязательно).
Дополнительно для каждого значения можно задать Пометку удаления (в пользовательском режиме значения не удаляются, а помечаются на удаление, что не влияет на их использование в ссылочных данных, но скрывает из списков выбора по умолчанию).
Порядок следования значений
Значения перечисления упорядочены в том порядке, в котором они были добавлены в конфигураторе. Порядок можно изменить, перемещая строки в дереве метаданных. При обращении к значениям через встроенный язык используется порядковый номер (индекс), начиная с 0.
Создание и настройка
Чтобы создать перечисление в конфигурации, необходимо:
- В дереве метаданных конфигурации найти ветку «Перечисления».
- Добавить новый объект, задать его имя (например,
СтатусыЗаказа) и синоним. - В подчинённой ветке «Значения перечисления» добавить необходимые варианты, указав для каждого имя и синоним.
- При необходимости задать дополнительные свойства, такие как «Длина ссылки» (для оптимизации хранения) или «Состав» (для использования в подсистемах).
После создания перечисления его можно использовать в качестве типа реквизита объекта (документа, справочника, регистра) или переменной алгоритма.
Использование во встроенном языке
В языке программирования платформы 1С (встроенный язык) перечисления представлены специальным типом данных — ПеречислениеСсылка. Для обращения к конкретному значению используется конструкция:
``1c Перечисления.СтатусыЗаказа.Принят ``
Примеры типовых операций
Присвоение значения реквизиту:
``1c ДокументОбъект.Статус = Перечисления.СтатусыЗаказа.Отгружен; ``
Проверка значения в условии:
``1c Если ДокументОбъект.Статус = Перечисления.СтатусыЗаказа.Принят Тогда // выполнить действие КонецЕсли; ``
Получение значения по индексу:
``1c ЗначениеПеречисления = Перечисления.СтатусыЗаказа[0]; // первое значение ``
Получение индекса значения:
``1c Индекс = Перечисления.СтатусыЗаказа.Принят.Индекс(); // вернёт порядковый номер ``
Использование в запросах:
В языке запросов 1С перечисления доступны через конструкцию ЗНАЧЕНИЕ(Перечисление.ИмяПеречисления.ИмяЗначения). Например:
``sql ВЫБРАТЬ Ссылка ИЗ Документ.ЗаказПокупателя ГДЕ Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказа.Принят) ``
Отличия от справочника
Несмотря на внешнее сходство, перечисления и справочники имеют принципиальные различия:
| Характеристика | Перечисление | Справочник |
|---|---|---|
| Изменяемость в пользовательском режиме | Только в режиме конфигуратора | Можно добавлять/редактировать/удалять записи |
| Количество значений | Фиксировано, обычно невелико (до нескольких десятков) | Может быть произвольным, вплоть до миллионов |
| Уникальность | Значения жёстко заданы, дублирование исключено | Может быть настроена уникальность по коду или наименованию |
| Иерархия | Не поддерживается | Поддерживается (группы и элементы) |
| Подчинение | Не поддерживается | Поддерживается (подчинённые справочники) |
| Реквизиты | Отсутствуют (только имя и синоним) | Можно добавлять произвольные реквизиты |
| Табличные части | Отсутствуют | Поддерживаются |
Ограничения и особенности
- Неизменяемость состава — после публикации конфигурации в продуктивной среде изменение состава перечисления (добавление, удаление, переименование значений) может привести к потере ссылочной целостности данных, если на удалённое значение ссылаются документы или записи регистров. Поэтому на практике перечисления редко изменяют после начала эксплуатации системы.
- Производительность — хранение значений перечисления в базе данных оптимизировано: каждое значение хранится как целочисленный идентификатор (индекс), что ускоряет сравнение и поиск по сравнению с текстовыми строками.
- Локализация — синонимы значений могут быть переведены на разные языки, что позволяет использовать перечисления в мультиязычных конфигурациях.
- Использование в отборах — значения перечисления могут выступать в качестве отборов в динамических списках, отчётах и запросах, обеспечивая наглядность и однозначность фильтрации.
Примеры в типовых конфигурациях
- «Бухгалтерия предприятия» — перечисление
ВидыДенежныхСредств(наличные, безналичные, электронные),СтавкиНДС(0%, 10%, 20%, без НДС). - «Управление торговлей» — перечисление
СтатусыЗаказовПокупателей(к выполнению, выполняется, выполнен, закрыт),ТипыЦенНоменклатуры(закупочная, розничная, оптовая). - «Зарплата и управление персоналом» — перечисление
ВидыЗанятости(основное место работы, внутреннее совместительство, внешнее совместительство),ПолФизическогоЛица.
Источники
- Радченко М. Г., Хрусталёва Е. Ю. «1С:Предприятие 8.3. Практическое пособие разработчика». — 1С-Паблишинг, 2019.
- Документация платформы «1С:Предприятие 8.3» — раздел «Перечисления» (встроенная справка конфигуратора).
- Официальный сайт фирмы «1С» — методические материалы по разработке конфигураций.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →