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