Перечисление или справочник: что можно менять в 1С без программиста
Содержание
Перечисление в 1С — это фиксированный список значений, который задаёт разработчик конфигурации. Пользователь выбирает из него значение в поле формы, но добавить, переименовать или удалить элемент перечисления в режиме «1С:Предприятие» нельзя. Новое значение появляется только после изменения конфигурации в Конфигураторе или в обновлении от разработчика.
Частое заблуждение — считать перечисления разновидностью справочников и искать кнопку «Создать» в выпадающем списке «Вид операции» или «Юр./физ. лицо». Справочники пользователь пополняет сам, перечисления — нет.
Что такое перечисление в конфигурации 1С и чем оно отличается от справочника
В дереве конфигурации есть отдельная ветка «Перечисления». Каждое перечисление — набор значений с двумя именами:
- 🔤 Имя — техническое, без пробелов (например,
ФизическоеЛицо). Его видит код и правила обмена. - 🏷️ Синоним — то, что пользователь видит на экране («Физическое лицо»).
- 🔢 Порядок — значения хранятся в том порядке, в котором их расставил разработчик. Сортировка по такому полю идёт именно в этом порядке, а не по алфавиту.
Справочник устроен иначе: у него есть элементы, которые создают пользователи, реквизиты, группы, пометка удаления. Перечисление — это только список вариантов без реквизитов.
| Признак | Перечисление | Справочник |
|---|---|---|
| Кто добавляет значения | Разработчик, в Конфигураторе | Пользователь, в программе |
| Реквизиты у значения | Нет, только имя и синоним | Есть: код, наименование, любые поля |
| Пометка удаления | Нет | Есть |
| Можно ли загрузить из файла | Нет, значения уже есть в конфигурации | Да |
| Как выглядит в форме | Выпадающий список или переключатель | Поле выбора с кнопкой открытия списка |
| При обновлении конфигурации | Список может измениться | Данные пользователя сохраняются |
💡 Быстрый признак на экране: если рядом с полем есть кнопка открытия карточки выбранного значения и в списке выбора доступна команда создания — это справочник. Если выпадает короткий список без карточек — почти наверняка перечисление.
Где пользователь встречает перечисления и как посмотреть все значения
В типовых конфигурациях перечислениями сделаны вещи, которые меняются только вместе с логикой программы:
- 📄 виды операций документов (от вида операции зависят проводки и заполнение формы);
- 👤 юридическое или физическое лицо в карточке контрагента;
- 🚦 статусы документов и заказов;
- ⚙️ варианты настроек: способы расчёта, режимы, периодичность.
Программа опирается на конкретное значение: от выбранного вида операции зависят поля формы и движения документа. Поэтому разработчик закрывает такой список от правки — новое значение без кода всё равно ничего бы не сделало.
Как открыть список значений перечисления
Обычно хватает выпадающего списка в самом поле. Если нужно увидеть всё перечисление целиком, используйте меню «Все функции»:
- Откройте главное меню (кнопка с тремя полосками слева вверху) →
Сервис → Параметры. - Включите флажок «Отображать команду “Все функции”» и нажмите «Применить».
- В главном меню появится пункт
Все функции. Раскройте ветку «Перечисления». - Найдите нужное перечисление и откройте его двойным щелчком.
Откроется список значений только для чтения. Команды создания в нём нет — это нормальное поведение, а не ограничение прав.
Отбор и группировка по перечислению в отчётах
С перечислением удобно работать в отборах. В настройках отчёта или списка добавьте отбор по полю, выберите вид сравнения «В списке» и отметьте нужные значения. Так, например, строят выборку документов одного вида операции или заказов в определённом статусе. Группировка по такому полю в отчёте выводит значения в порядке перечисления, а не по алфавиту.
Нужного значения нет в списке: как добавить своё
Ситуация типичная: компании нужен свой статус заказа или ещё один вариант классификации, а в выпадающем списке его нет. Вариантов три, от простого к сложному.
Способ 1. Дополнительный реквизит со своими значениями
В конфигурациях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) пользователь сам создаёт поле со своим списком:
- Включите механизм:
Администрирование → Общие настройки, раздел «Дополнительные реквизиты и сведения», флажок «Дополнительные реквизиты и сведения». - По ссылке «Дополнительные реквизиты» выберите объект (например, документ или справочник) и создайте реквизит.
- В поле типа значения выберите «Дополнительное значение».
- На вкладке со значениями внесите свой список: «Срочно», «Ждём оплату», «На согласовании» и так далее.
Поле появится в форме объекта, по нему работают отборы и отчёты. Обновления конфигурации такой список не затрагивают.
Способ 2. Новое значение в самом перечислении
Это работа в Конфигураторе, и ей нужен специалист:
- Сделайте резервную копию:
Администрирование → Выгрузить информационную базув Конфигураторе. - Если конфигурация на поддержке и не включена возможность изменения, включите её через
Конфигурация → Поддержка → Настройка поддержки. После этого обновления будут ставиться через сравнение и объединение — это дороже в сопровождении. - В ветке «Перечисления» откройте нужное перечисление, добавьте значение, задайте имя и синоним.
- Выполните
Конфигурация → Обновить конфигурацию базы данных(F7). Для этого шага нужен монопольный доступ — пользователи должны выйти из базы.
Само по себе новое значение программа не обработает. Если код документа проверяет «Вид операции = Поступление» и «Вид операции = Возврат», третье значение просто ни под одно условие не попадёт. Документ может провестись без движений или выдать ошибку.
А расширение конфигурации?
Расширения удобны тем, что не снимают типовую с поддержки. Но добавить значение в заимствованное типовое перечисление через расширение нельзя. В расширении можно создать собственное перечисление и использовать его в своих реквизитах. Если задача именно в том, чтобы расширить типовой список, остаются способы 1 или 2.
Загрузка из файла и массовое изменение: что работает с перечислениями
Загрузить новые значения перечисления из Excel невозможно: их нет в базе как данных, они часть конфигурации. Зато можно массово заполнить поля, которые ссылаются на перечисление.
Загрузка справочника, где есть поле-перечисление
В типовых конфигурациях в форме списка многих справочников есть команда загрузки из файла (обычно в меню «Ещё» или рядом с кнопкой «Создать»). При сопоставлении колонок значение поля-перечисления распознаётся по тексту в ячейке. Порядок действий:
- Скачайте шаблон, который предлагает форма загрузки, или подготовьте таблицу с заголовками колонок.
- В колонке с перечислением пишите значения ровно так, как они показаны в программе: «Юридическое лицо», а не «юрлицо» или «ЮЛ».
- После сопоставления посмотрите строки, где поле осталось пустым, — это ячейки с текстом, который программа не узнала.
💡 Перед загрузкой скопируйте нужные значения прямо из выпадающего списка в программе и вставьте их в Excel через поиск и замену. Опечатки и лишние пробелы — главная причина пустых полей.
Массовое изменение значения у многих объектов
Чтобы заменить, например, статус у сотни документов, используйте обработку группового изменения реквизитов. В БСП-конфигурациях она открывается из формы списка: выделите строки и найдите в меню «Ещё» команду изменения выделенных. В обработке выберите реквизит и новое значение из списка перечисления.
Групповое изменение вида операции у проведённых документов меняет их учётную логику. После смены документ нужно перепровести, а проводки могут измениться. Делайте это на копии базы и сверяйте оборотно-сальдовую ведомость до и после.
Перечисления при обмене и синхронизации между базами
В обменах перечисления передаются не по внутреннему идентификатору, а по имени значения. Это важно, когда базы разных релизов или разных конфигураций.
Как это устроено
- 🔄 Синхронизация через EnterpriseData (БП ↔ УТ, БП ↔ ЗУП и другие типовые пары). Значения перечислений переводятся в формат обмена по правилам, зашитым в конфигурацию. Если в одной базе есть значение, которого нет в формате или в другой базе, оно приходит пустым либо заменяется значением по умолчанию.
- 🧩 Обмен по правилам «Конвертации данных». Для перечислений в правилах задаётся соответствие значений источника и приёмника. Если программист не прописал новое значение, оно потеряется при переносе.
- 📦 Универсальный обмен в формате XML. Рассчитан на одинаковые конфигурации. Если в базе-приёмнике перечисление другое, значения не сопоставятся.
Что проверить после настройки синхронизации
- Создайте в базе-источнике тестовый документ с каждым редким значением перечисления (например, с нетиповым видом операции).
- Запустите синхронизацию и откройте документ в приёмнике.
- Убедитесь, что поле заполнено тем же значением, а не пустое.
- Если используете доработанное перечисление — скажите программисту, что правила обмена тоже нужно доработать. Иначе новое значение не уедет в другую базу.
Перечисления в запросах и коде: короткая памятка
Эта часть пригодится тем, кто пишет отчёты в консоли запросов или небольшие обработки.
Обращение к значению в модуле и в тексте запроса:
// В модуле: значение перечисления по имени
Статус = Перечисления.СтатусыЗаявок.Новая;
// Пустое значение
Если Документ.Статус = Перечисления.СтатусыЗаявок.ПустаяСсылка() Тогда
Сообщить("Статус не заполнен");
КонецЕсли;
// В запросе значение задают через ЗНАЧЕНИЕ()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Заявки.Ссылка
|ИЗ
| Документ.Заявка КАК Заявки
|ГДЕ
| Заявки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявок.Новая)";
СтатусыЗаявок и Новая здесь — условные имена для примера. Реальные имена берите в Конфигураторе или в синтакс-помощнике.
Ещё три приёма, которые часто нужны:
| Задача | Как сделать |
|---|---|
| Получить значение по имени из строки | Перечисления.СтатусыЗаявок[ИмяЗначения] |
| Получить имя значения строкой (например, для выгрузки) | XMLСтрока(Значение) |
| Узнать порядковый номер значения | Перечисления.СтатусыЗаявок.Индекс(Значение) |
💡 В запросе используйте имя значения, а не синоним. Синоним — это текст для пользователя, его можно поменять в любом релизе без последствий для данных, а имя участвует в коде.
Частые проблемы с перечислениями и что с ними делать
Если перечисление дорабатывали своими силами, держите список таких изменений. При каждом обновлении типовой конфигурации программист сверит его с новым релизом — иначе ваше значение может пропасть при объединении.