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

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

Флаг в 1С: что это такое и как с ним работать

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

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

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

Где встречаются флаги в типовых конфигурациях

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

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

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

Тип Булево в языке 1С

Во встроенном языке 1С флаг реализуется через тип Булево. Объявить и использовать его просто: переменной присваивается значение Истина или Ложь, а затем оно проверяется в условном операторе. Русские и английские синонимы (Истина/True, Ложь/False) взаимозаменяемы.

bsl
ФлагОплаты = Истина;

Если ФлагОплаты Тогда
    Сообщить("Документ оплачен");
Иначе
    Сообщить("Оплата не поступала");
КонецЕсли;

Результат любого сравнения в 1С — тоже значение типа Булево. Выражение «Сумма > 0» возвращает Истина или Ложь, и его можно напрямую присвоить переменной-флагу. Это удобно для вычисляемых признаков: вместо длинного условия «Если» достаточно одной строки присваивания.

Важная особенность: у типа Булево нет значения «Неопределено» или «пусто». Если реквизит объекта имеет тип Булево, он всегда содержит либо Истина, либо Ложь. Поэтому состояние «неизвестно» флагом выразить нельзя — для этого придумывают отдельный признак или используют перечисление с тремя значениями.

Как добавить флаг в справочник или документ

Добавление флага — стандартная задача доработки конфигурации. В конфигураторе открывают нужный объект (справочник, документ), добавляют новый реквизит и выбирают тип «Булево». После обновления конфигурации базы данных реквизит становится доступен для заполнения.

Порядок добавления флага
  1. 1
    Откройте конфигуратор и найдите нужный объект (справочник или документ) в дереве конфигурации
  2. 2
    Добавьте новый реквизит, задайте понятное имя и синоним, выберите тип Булево
  3. 3
    При необходимости задайте значение по умолчанию через свойство «Значение заполнения»
  4. 4
    Вынесите реквизит на форму объекта — он отобразится как флажок
  5. 5
    Обновите конфигурацию базы данных (F7) и проверьте работу в пользовательском режиме

На форме реквизит типа Булево автоматически отображается как поле флажка. Через свойства поля можно изменить вид: «Флажок», «Тумблер» или «Переключатель». Для мобильного клиента тумблер выглядит привычнее, для десктопа обычно оставляют классическую галочку.

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

Флаги в запросах и отборах

В языке запросов 1С булевы реквизиты используются в условиях ГДЕ напрямую: можно написать «ГДЕ Номенклатура.Услуга», что эквивалентно проверке на Истина. Для отбора снятых флагов применяют отрицание — «ГДЕ НЕ Номенклатура.Услуга» или сравнение с параметром.

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

В динамических списках и отчётах на СКД флаги удобно выносить в быстрые отборы: пользователь сам решает, показывать ли, например, только активные элементы. Для этого в настройках отчёта параметр-флаг помечают как доступный пользователю.

Типичные ошибки при работе с флагами

Типичные ошибки
01
Сравнение флага со строкой: ЕстьФлаг = "Истина" всегда даёт Ложь, потому что сравниваются разные типы. Используйте булево значение без кавычек
02
Использование флага для трёх состояний: «да/нет/неизвестно» невозможно выразить типом Булево, нужно перечисление или дополнительный признак
03
Проверка «Если Флаг = Истина Тогда» вместо «Если Флаг Тогда»: работает, но считается избыточным стилем и затрудняет чтение
04
Изменение функциональной опции-флага без анализа зависимостей: снятие галочки в настройках может скрыть данные из интерфейса, хотя сами данные в базе остаются
05
Отсутствие значения по умолчанию у нового реквизита: у существующих элементов флаг окажется снятым, что может изменить поведение отчётов

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

Флаг против других вариантов хранения признака

Чем заменить флаг

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

Подходит, когда состояний больше двух или они могут появиться в будущем: «Новый/В работе/Завершён». Ограничение — состав значений фиксируется в конфигурации

Дополнительный реквизит

Подходит для доработки типовой конфигурации без снятия с поддержки. Ограничение — медленнее в запросах и менее удобен в коде

Регистр сведений

Подходит, когда признак меняется во времени и нужна история: например, статус активности клиента на дату. Ограничение — сложнее структура и обращение из кода

Выбор зависит от сценария. Простой признак «да/нет», который не меняет смысла со временем, — классический случай для флага. Если бизнес-процесс подразумевает этапы, лучше сразу закладывать перечисление: переделка флага в статус позже потребует конвертации данных.

Как проверить, что флаг работает правильно

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

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

Отображение на форме
Норма

Флажок виден, доступен для изменения, состояние сохраняется после записи

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

Поле серое или исчезает после записи — проверьте права и свойства формы

Значение в базе
Норма

После записи и повторного открытия состояние флага сохраняется

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

Флаг сбрасывается — вероятно, код в обработчиках записи его перезаписывает

Влияние на отчёты
Норма

Элементы с установленным флагом попадают в отборы и отчёты

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

Элементы «пропадают» — проверьте условие в запросе и тип параметра

Значение по умолчанию
Норма

У новых элементов флаг принимает ожидаемое начальное состояние

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

У старых элементов флаг снят, хотя логика предполагает обратное — нужна обработка заполнения

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

Итог

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

Флаг в 1С — это значение типа Булево (Истина/Ложь), отображаемое как флажок. Он применяется для настроек, признаков объектов и условий в коде. У флага нет третьего состояния, поэтому для сложных статусов используют перечисления или регистры сведений.

Частые вопросы

Чем флаг отличается от функциональной опции в 1С?

Функциональная опция — это механизм конфигурации, который управляет видимостью и доступностью целых подсистем, реквизитов и команд. Физически она часто хранится как булево значение в константе, то есть является частным случаем флага, но с дополнительной ролью в интерфейсе. Обычный флаг-реквизит просто хранит признак у конкретного объекта.

Можно ли флагу присвоить значение «Неопределено»?

Нет. Реквизит типа Булево всегда содержит Истина или Ложь. Если нужно состояние «не задано», используют составной тип (Булево плюс другой тип), отдельный признак заполненности или перечисление с тремя значениями.

Почему снятый флаг в настройках не удаляет данные?

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

Как массово установить флаг у множества элементов справочника?

В типовых конфигурациях есть обработка «Групповое изменение реквизитов», которая позволяет установить или снять флаг у отобранных элементов. Альтернатива для разработчика — небольшая обработка с обходом выборки и записью объектов. Перед массовым изменением стоит сделать резервную копию базы.

Как в запросе отобрать элементы только со снятым флагом?

Используйте условие с отрицанием: «ГДЕ НЕ Справочник.ИмяФлага». Альтернативный вариант — сравнение «ГДЕ Справочник.ИмяФлага = &Флаг» с передачей в параметр значения Ложь. Оба способа корректны, но вариант с параметром удобнее, когда условие должно переключаться.

Что лучше для статуса документа: флаг или перечисление?

Если статусов ровно два и они не расширятся (например, «Согласован/Не согласован»), достаточно флага. Если процесс предполагает этапы или новые состояния могут появиться, сразу используйте перечисление — замена флага на перечисление в работающей базе потребует конвертации данных и правки всех мест использования.