Разработка и Конфигурация · 9 мин
Как создать новое перечисление в 1С
Пошаговая инструкция по созданию перечисления в 1С: работа в конфигураторе, добавление значений, использование в коде и типичные ошибки разработчиков.
Перечисление в 1С — это объект конфигурации, который хранит фиксированный набор предопределённых значений: статусы документов, виды операций, типы номенклатуры и тому подобное. В отличие от справочника, список значений перечисления задаёт разработчик в конфигураторе, а пользователь не может дополнять его в режиме предприятия.
Создание нового перечисления требуется, когда нужно ограничить выбор жёстким списком вариантов, который не должен меняться пользователями. Например, статус заказа «Новый / В работе / Выполнен / Отменён» логично хранить именно в перечислении, а не в справочнике: так исключается риск, что кто-то добавит лишнее значение или переименует существующее и сломает логику проведения.
Работа выполняется в конфигураторе и занимает несколько минут. Однако важно понимать последствия: добавление объекта в типовую конфигурацию без расширения усложнит обновление, а переименование значений может нарушить существующий код. Ниже разобран весь процесс — от выбора между перечислением и справочником до проверки результата.
Когда нужно перечисление, а когда справочник
Перед созданием объекта важно убедиться, что перечисление — правильный выбор. Перечисление подходит, если набор значений жёстко зафиксирован логикой программы и не должен редактироваться пользователями. Классические примеры — пол, ставки НДС в простых решениях, типы цен, виды движений.
Если список значений должен пополняться пользователями, содержать дополнительные реквизиты, иерархию или историю изменений — нужен справочник. Частая ошибка начинающих разработчиков — создать перечисление для сущности, которая со временем разрастается, а потом мигрировать данные в справочник с потерей времени.
Перечисление или справочник
Фиксированный список значений, меняется только разработчиком. Подходит для статусов и типов, жёстко привязанных к логике кода.
Пользователь может добавлять и редактировать элементы, есть реквизиты и иерархия. Подходит для номенклатуры, контрагентов, договоров.
Если конфигурация типовая на поддержке, перечисление лучше добавить через расширение, чтобы не усложнять обновления.
Подготовка: режим конфигуратора и права
Создание перечисления выполняется в конфигураторе. Запустите его через ярлык информационной базы, выбрав режим «Конфигуратор», и авторизуйтесь под пользователем с правами администратора. Если база типовая и стоит на поддержке, заранее решите: будете ли вы снимать конфигурацию с поддержки или создадите объект в расширении.
Перед изменениями сделайте резервную копию базы или выгрузку конфигурации в файл. Это стандартная мера безопасности: ошибка при обновлении конфигурации базы данных в худшем случае потребует восстановления, и копия сэкономит часы работы.
Создание перечисления в дереве конфигурации
Откройте дерево конфигурации через меню «Конфигурация → Открыть конфигурацию». Найдите ветку «Перечисления», щёлкните по ней правой кнопкой мыши и выберите «Добавить». Откроется окно редактирования нового объекта.
На закладке «Основные» задайте имя перечисления — именно по нему к объекту будут обращаться в коде. Имя должно быть осмысленным, без пробелов, в соответствии со стандартами разработки: например, СтатусыЗаказа или ВидыОпераций. Синоним заполнится автоматически, но его можно скорректировать — именно синоним увидят пользователи в интерфейсе.
- 1Откройте конфигуратор и дерево конфигурации
- 2В ветке «Перечисления» выберите «Добавить»
- 3Укажите имя и синоним объекта
- 4На закладке «Данные» добавьте значения перечисления
- 5Сохраните и обновите конфигурацию базы данных (F7)
- 6Проверьте доступность значений в режиме предприятия
Добавление значений перечисления
Перейдите на закладку «Данные» — здесь задаётся список значений. Нажмите кнопку «Добавить» и введите имя первого значения, например Новый. Имя значения используется в коде, поэтому оно тоже должно быть без пробелов и понятным. Синоним — это представление для пользователя, его можно писать с пробелами и знаками препинания.
Добавьте остальные значения в нужном порядке: порядок в списке определяет порядок отображения в выпадающих списках форм. При необходимости для значения можно задать картинку из общей библиотеки — она будет показываться в интерфейсе рядом с представлением.
Продумайте состав значений заранее. Удалить значение после того, как оно попало в данные базы, проблематично: платформа при обновлении сообщит о ссылках на несуществующее значение, и придётся сначала очищать данные. Добавлять новые значения, наоборот, безопасно.
Использование перечисления в реквизитах и коде
Чтобы перечисление стало полезным, свяжите его с реквизитом объекта. Например, в документе «Заказ» добавьте реквизит «Статус» и укажите тип ПеречислениеСсылка.СтатусыЗаказа. После этого в форме документа появится выпадающий список со значениями перечисления.
В коде обращение к значениям выполняется через менеджер перечисления. Проверка статуса выглядит так:
Если Заказ.Статус = Перечисления.СтатусыЗаказа.Выполнен Тогда
// действия для выполненного заказа
КонецЕсли;
Для проверки на пустое значение используйте конструкцию Перечисления.СтатусыЗаказа.ПустаяСсылка() или метод ЗначениеЗаполнено(). Получить представление значения для вывода пользователю можно простым преобразованием к строке, а список всех значений — перебором через метаданные.
Если Документ.Статус = Перечисления.СтатусыЗаказа.Отменен Тогда
Сообщить("Заказ отменён");
КонецЕсли;Обновление конфигурации и проверка результата
После создания объекта нажмите F7 или выберите «Конфигурация → Обновить конфигурацию базы данных». Платформа покажет список изменений — убедитесь, что там только ваше перечисление и связанные реквизиты, без неожиданных объектов. Подтвердите обновление.
Затем запустите режим предприятия и проверьте результат: откройте форму объекта с новым реквизитом, убедитесь, что выпадающий список содержит все значения в правильном порядке, сохраните документ с выбранным значением и перепроверьте, что значение сохранилось после переоткрытия.
Как проверить результат
Перечисление отображается в ветке «Перечисления» со всеми значениями
Объекта нет или значения пустые — изменения не сохранены
Все значения доступны для выбора в нужном порядке
Список пуст — реквизит не связан с перечислением или тип указан неверно
Выбранное значение сохраняется и отображается после переоткрытия
Значение сбрасывается — проверьте тип реквизита и обновление конфигурации БД
Типичные ошибки и ограничения
Наиболее частая проблема — забытое обновление конфигурации базы данных: объект виден в конфигураторе, но недоступен в режиме предприятия, и код выдаёт ошибку «Поле объекта не обнаружено». Вторая типичная ситуация — попытка сравнить значение перечисления со строкой: Если Статус = "Новый" никогда не выполнится, потому что сравниваются разные типы.
Помните об ограничениях: у значений перечисления нельзя задавать дополнительные реквизиты, нельзя помечать их на удаление, нельзя дать пользователю право добавления. Если хотя бы одно из этих требований есть в задаче — создавайте справочник.
FAQ: частые вопросы о перечислениях в 1С
Можно ли добавить значение перечисления в режиме предприятия?
Нет. Состав значений перечисления определяется только в конфигураторе и меняется разработчиком. Если пользователям нужно самостоятельно пополнять список, используйте справочник.
Что произойдёт, если удалить значение, которое используется в документах?
При обновлении конфигурации базы данных платформа выдаст предупреждение о ссылках на удаляемое значение. В данных останутся ссылки на несуществующее значение, что приведёт к ошибкам. Сначала замените значение в данных обработкой, затем удаляйте его из конфигурации.
Как получить список всех значений перечисления в коде?
Через метаданные: переберите коллекцию Метаданные.Перечисления.ИмяПеречисления.ЗначенияПеречисления. Для каждого элемента доступны имя и синоним, а ссылку на значение можно получить через менеджер перечисления по имени.
Чем перечисление отличается от строки с фиксированными вариантами?
Перечисление — строгий тип: платформа контролирует допустимость значений, исключает опечатки и даёт удобный выбор в интерфейсе. Строка таких гарантий не даёт, и любая опечатка в коде приведёт к неработающей логике без сообщений об ошибке.
Можно ли создать перечисление в расширении конфигурации?
Да, собственные перечисления добавляются в расширения так же, как в основную конфигурацию. Это предпочтительный способ для типовых решений на поддержке: расширение не затрагивает основную конфигурацию и не мешает её обновлению.
Что важно запомнить
Перечисление создаётся в конфигураторе через ветку «Перечисления»: задаётся имя, добавляются значения на закладке «Данные», затем выполняется обновление конфигурации базы данных. В коде к значениям обращаются через менеджер Перечисления.Имя.Значение. Для типовых конфигураций используйте расширение, а перед удалением значений очищайте данные.