К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как создать новое перечисление в 1С

Пошаговая инструкция по созданию перечисления в 1С: работа в конфигураторе, добавление значений, использование в коде и типичные ошибки разработчиков.

Перечисление в 1С — это объект конфигурации, который хранит фиксированный набор предопределённых значений: статусы документов, виды операций, типы номенклатуры и тому подобное. В отличие от справочника, список значений перечисления задаёт разработчик в конфигураторе, а пользователь не может дополнять его в режиме предприятия.

Создание нового перечисления требуется, когда нужно ограничить выбор жёстким списком вариантов, который не должен меняться пользователями. Например, статус заказа «Новый / В работе / Выполнен / Отменён» логично хранить именно в перечислении, а не в справочнике: так исключается риск, что кто-то добавит лишнее значение или переименует существующее и сломает логику проведения.

Работа выполняется в конфигураторе и занимает несколько минут. Однако важно понимать последствия: добавление объекта в типовую конфигурацию без расширения усложнит обновление, а переименование значений может нарушить существующий код. Ниже разобран весь процесс — от выбора между перечислением и справочником до проверки результата.

Когда нужно перечисление, а когда справочник

Перед созданием объекта важно убедиться, что перечисление — правильный выбор. Перечисление подходит, если набор значений жёстко зафиксирован логикой программы и не должен редактироваться пользователями. Классические примеры — пол, ставки НДС в простых решениях, типы цен, виды движений.

Если список значений должен пополняться пользователями, содержать дополнительные реквизиты, иерархию или историю изменений — нужен справочник. Частая ошибка начинающих разработчиков — создать перечисление для сущности, которая со временем разрастается, а потом мигрировать данные в справочник с потерей времени.

Перечисление или справочник

Перечисление

Фиксированный список значений, меняется только разработчиком. Подходит для статусов и типов, жёстко привязанных к логике кода.

Справочник

Пользователь может добавлять и редактировать элементы, есть реквизиты и иерархия. Подходит для номенклатуры, контрагентов, договоров.

Расширение конфигурации

Если конфигурация типовая на поддержке, перечисление лучше добавить через расширение, чтобы не усложнять обновления.

Подготовка: режим конфигуратора и права

Создание перечисления выполняется в конфигураторе. Запустите его через ярлык информационной базы, выбрав режим «Конфигуратор», и авторизуйтесь под пользователем с правами администратора. Если база типовая и стоит на поддержке, заранее решите: будете ли вы снимать конфигурацию с поддержки или создадите объект в расширении.

Перед изменениями сделайте резервную копию базы или выгрузку конфигурации в файл. Это стандартная мера безопасности: ошибка при обновлении конфигурации базы данных в худшем случае потребует восстановления, и копия сэкономит часы работы.

Создание перечисления в дереве конфигурации

Откройте дерево конфигурации через меню «Конфигурация → Открыть конфигурацию». Найдите ветку «Перечисления», щёлкните по ней правой кнопкой мыши и выберите «Добавить». Откроется окно редактирования нового объекта.

На закладке «Основные» задайте имя перечисления — именно по нему к объекту будут обращаться в коде. Имя должно быть осмысленным, без пробелов, в соответствии со стандартами разработки: например, СтатусыЗаказа или ВидыОпераций. Синоним заполнится автоматически, но его можно скорректировать — именно синоним увидят пользователи в интерфейсе.

Порядок создания перечисления
  1. 1
    Откройте конфигуратор и дерево конфигурации
  2. 2
    В ветке «Перечисления» выберите «Добавить»
  3. 3
    Укажите имя и синоним объекта
  4. 4
    На закладке «Данные» добавьте значения перечисления
  5. 5
    Сохраните и обновите конфигурацию базы данных (F7)
  6. 6
    Проверьте доступность значений в режиме предприятия

Добавление значений перечисления

Перейдите на закладку «Данные» — здесь задаётся список значений. Нажмите кнопку «Добавить» и введите имя первого значения, например Новый. Имя значения используется в коде, поэтому оно тоже должно быть без пробелов и понятным. Синоним — это представление для пользователя, его можно писать с пробелами и знаками препинания.

Добавьте остальные значения в нужном порядке: порядок в списке определяет порядок отображения в выпадающих списках форм. При необходимости для значения можно задать картинку из общей библиотеки — она будет показываться в интерфейсе рядом с представлением.

Продумайте состав значений заранее. Удалить значение после того, как оно попало в данные базы, проблематично: платформа при обновлении сообщит о ссылках на несуществующее значение, и придётся сначала очищать данные. Добавлять новые значения, наоборот, безопасно.

Использование перечисления в реквизитах и коде

Чтобы перечисление стало полезным, свяжите его с реквизитом объекта. Например, в документе «Заказ» добавьте реквизит «Статус» и укажите тип ПеречислениеСсылка.СтатусыЗаказа. После этого в форме документа появится выпадающий список со значениями перечисления.

В коде обращение к значениям выполняется через менеджер перечисления. Проверка статуса выглядит так:

Если Заказ.Статус = Перечисления.СтатусыЗаказа.Выполнен Тогда

// действия для выполненного заказа

КонецЕсли;

Для проверки на пустое значение используйте конструкцию Перечисления.СтатусыЗаказа.ПустаяСсылка() или метод ЗначениеЗаполнено(). Получить представление значения для вывода пользователю можно простым преобразованием к строке, а список всех значений — перебором через метаданные.

bsl
Если Документ.Статус = Перечисления.СтатусыЗаказа.Отменен Тогда
    Сообщить("Заказ отменён");
КонецЕсли;

Обновление конфигурации и проверка результата

После создания объекта нажмите F7 или выберите «Конфигурация → Обновить конфигурацию базы данных». Платформа покажет список изменений — убедитесь, что там только ваше перечисление и связанные реквизиты, без неожиданных объектов. Подтвердите обновление.

Затем запустите режим предприятия и проверьте результат: откройте форму объекта с новым реквизитом, убедитесь, что выпадающий список содержит все значения в правильном порядке, сохраните документ с выбранным значением и перепроверьте, что значение сохранилось после переоткрытия.

Контрольные точки

Как проверить результат

Объект в дереве конфигурации
Норма

Перечисление отображается в ветке «Перечисления» со всеми значениями

Тревожный признак

Объекта нет или значения пустые — изменения не сохранены

Выпадающий список в форме
Норма

Все значения доступны для выбора в нужном порядке

Тревожный признак

Список пуст — реквизит не связан с перечислением или тип указан неверно

Сохранение данных
Норма

Выбранное значение сохраняется и отображается после переоткрытия

Тревожный признак

Значение сбрасывается — проверьте тип реквизита и обновление конфигурации БД

Типичные ошибки и ограничения

Наиболее частая проблема — забытое обновление конфигурации базы данных: объект виден в конфигураторе, но недоступен в режиме предприятия, и код выдаёт ошибку «Поле объекта не обнаружено». Вторая типичная ситуация — попытка сравнить значение перечисления со строкой: Если Статус = "Новый" никогда не выполнится, потому что сравниваются разные типы.

Помните об ограничениях: у значений перечисления нельзя задавать дополнительные реквизиты, нельзя помечать их на удаление, нельзя дать пользователю право добавления. Если хотя бы одно из этих требований есть в задаче — создавайте справочник.

Типичные ошибки
01
Сравнение значения со строкой вместо обращения через Перечисления.ИмяПеречисления.Значение — условие никогда не срабатывает
02
Изменение конфигурации без обновления конфигурации базы данных — объект недоступен в режиме предприятия
03
Удаление значения, уже использованного в данных — ошибки при обновлении и битые ссылки в документах
04
Добавление объекта напрямую в типовую конфигурацию вместо расширения — сложности при обновлении релиза

FAQ: частые вопросы о перечислениях в 1С

Можно ли добавить значение перечисления в режиме предприятия?

Нет. Состав значений перечисления определяется только в конфигураторе и меняется разработчиком. Если пользователям нужно самостоятельно пополнять список, используйте справочник.

Что произойдёт, если удалить значение, которое используется в документах?

При обновлении конфигурации базы данных платформа выдаст предупреждение о ссылках на удаляемое значение. В данных останутся ссылки на несуществующее значение, что приведёт к ошибкам. Сначала замените значение в данных обработкой, затем удаляйте его из конфигурации.

Как получить список всех значений перечисления в коде?

Через метаданные: переберите коллекцию Метаданные.Перечисления.ИмяПеречисления.ЗначенияПеречисления. Для каждого элемента доступны имя и синоним, а ссылку на значение можно получить через менеджер перечисления по имени.

Чем перечисление отличается от строки с фиксированными вариантами?

Перечисление — строгий тип: платформа контролирует допустимость значений, исключает опечатки и даёт удобный выбор в интерфейсе. Строка таких гарантий не даёт, и любая опечатка в коде приведёт к неработающей логике без сообщений об ошибке.

Можно ли создать перечисление в расширении конфигурации?

Да, собственные перечисления добавляются в расширения так же, как в основную конфигурацию. Это предпочтительный способ для типовых решений на поддержке: расширение не затрагивает основную конфигурацию и не мешает её обновлению.

Итог

Что важно запомнить

Перечисление создаётся в конфигураторе через ветку «Перечисления»: задаётся имя, добавляются значения на закладке «Данные», затем выполняется обновление конфигурации базы данных. В коде к значениям обращаются через менеджер Перечисления.Имя.Значение. Для типовых конфигураций используйте расширение, а перед удалением значений очищайте данные.