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

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

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

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

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

Типичные примеры перечислений в типовых конфигурациях — «ВидыДоговоров», «СтавкиНДС», «ПолФизическогоЛица». Каждое значение перечисления имеет имя (идентификатор, используемый в коде) и синоним (представление, которое видит пользователь). Значения хранятся в базе как порядковые номера, поэтому перечисления компактны и быстро сравниваются в запросах.

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

Что такое перечисление и когда его стоит создавать

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

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

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

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

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

Справочник

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

План видов характеристик

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

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

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

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

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

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

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

Добавление и настройка значений

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

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

Для каждого значения можно задать комментарий — он виден только разработчику и удобен для пояснения, в каких сценариях используется конкретное значение. Если значение должно быть недоступно для выбора в новых документах, но сохранено для старых данных, не удаляйте его: лучше переименуйте синоним, добавив пометку «(не используется)», и добавьте проверку в коде.

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

После создания перечисление становится доступным типом данных. Чтобы использовать его, откройте нужный объект — документ, справочник или регистр — и добавьте реквизит. В свойстве «Тип» выберите «ПеречислениеСсылка.<ИмяПеречисления>». Например, в документе «ЗаказПокупателя» можно добавить реквизит «СпособДоставки» с типом «ПеречислениеСсылка.СпособыДоставки».

Если перечисления ещё нет, его можно создать прямо из палитры свойств реквизита: в поле выбора типа нажмите кнопку добавления нового объекта и выберите «Перечисление». Платформа создаст объект и сразу подставит его тип. Это удобно, но помните, что объект всё равно нужно наполнить значениями на закладке «Данные».

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

Обращение к перечислению из встроенного языка

В коде значения перечисления доступны через менеджер «Перечисления». Синтаксис простой: Перечисления.СпособыДоставки.Курьер. Такое обращение не выполняет запрос к базе данных — значение подставляется напрямую, что быстрее, чем поиск элемента справочника по наименованию.

bsl
Если Заказ.СпособДоставки = Перечисления.СпособыДоставки.Самовывоз Тогда
    СтоимостьДоставки = 0;
ИначеЕсли Заказ.СпособДоставки = Перечисления.СпособыДоставки.Курьер Тогда
    СтоимостьДоставки = РассчитатьКурьерскуюДоставку(Заказ.Адрес);
Иначе
    СтоимостьДоставки = 0;
КонецЕсли;

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

В запросах значения перечисления передаются как параметры: Запрос.УстановитьПараметр("Способ", Перечисления.СпособыДоставки.Курьер). Сравнение в тексте запроса выполняется обычным оператором равенства — платформа корректно обрабатывает тип перечисления.

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

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

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

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

Перечисление в дереве конфигурации
Норма

Объект виден в ветке «Перечисления», значения заполнены на закладке «Данные»

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

Объект не сохраняется, платформа сообщает о дублировании имени

Обновление базы данных
Норма

Окно реструктуризации показывает добавление нового объекта, обновление завершается без ошибок

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

Ошибки реструктуризации, сообщения о конфликте типов

Использование в коде
Норма

Конструкция Перечисления.Имя.Значение проходит проверку модуля без ошибок

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

Сообщение «Переменная не определена» — проверьте имя и обновление конфигурации

Выбор в режиме предприятия
Норма

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

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

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

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

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

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

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

Удобный приём — давать значениям перечисления имена, совпадающие по смыслу с синонимами, и сразу заполнять комментарий со ссылкой на сценарий использования. Через полгода это избавит от поиска по всей конфигурации, где именно проверяется конкретное значение.
ПЗ
Практическое замечание

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

Можно ли добавить значение перечисления в режиме предприятия, не открывая конфигуратор?

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

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

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

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

В модуле объекта документа используйте обработчик «ОбработкаЗаполнения» и присвойте реквизиту нужное значение, например СпособДоставки = Перечисления.СпособыДоставки.Самовывоз;. Автоматического свойства «значение по умолчанию» у перечислений нет.

Чем перечисление отличается от предопределённых элементов справочника?

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

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

Изменение синонима безопасно — данные не пострадают. Изменение имени значения платформа обычно распознаёт как переименование, если оно выполнено в одном сеансе редактирования, но перед обновлением рабочей базы проверьте окно реструктуризации: там не должно быть пар «удаление + добавление» вместо изменения.

Как найти все места в конфигурации, где используется перечисление?

Щёлкните по объекту в дереве конфигурации правой кнопкой и выберите «Поиск ссылок в объектах». Платформа покажет все реквизиты, ресурсы и другие объекты, где встречается этот тип. Для поиска обращений в коде используйте глобальный поиск по строке имени перечисления.

Итог

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

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