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