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

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

Константы в 1С: что это такое и для чего они нужны

Что такое константы в 1С, где они хранятся, чем отличаются от справочников и как настроить константы в типовых конфигурациях — практическое руководство с примерами.

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

Константы встречаются в любой конфигурации — от «1С:Бухгалтерии» до «1С:Управление торговлей». Например, флаг «Вести учёт по нескольким организациям» или параметр «Основная валюта» — это константы. Пользователь видит их как пункты в форме «Администрирование», а разработчик — как ветку «Константы» в дереве конфигуратора.

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

Что такое константа в 1С и как она устроена

Константа — это объект метаданных, который хранит ровно одно значение заданного типа. Тип может быть примитивным (число, строка, дата, булево) или ссылочным (ссылка на справочник, документ, план счетов). Значение константы общее для всей информационной базы: оно не зависит от пользователя, периода или организации.

В конфигураторе константы находятся в ветке «Общие → Константы» дерева конфигурации. У каждой константы есть имя, синоним, тип данных и стандартные свойства. В пользовательском режиме типовые конфигурации обычно выводят константы в разделы «Администрирование» и «Настройки», где они выглядят как флажки, поля ввода и переключатели.

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

Для чего нужны константы: типовые сценарии

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

  • Функциональные опции и флажки. Например, «Вести учёт по складам», «Использовать электронные подписи», «Учёт по нескольким валютам». Установка или снятие флажка включает и скрывает целые разделы интерфейса и механизмы учёта.
  • Параметры учёта. Основная валюта, основная страна, ставка НДС по умолчанию, префикс информационной базы для нумерации документов.
  • Реквизиты организации. В простых конфигурациях название, ИНН и адрес единственной организации хранятся именно в константах.
  • Служебные настройки интеграций. Адреса веб-сервисов, токены, идентификаторы подключений, дата начала синхронизации.

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

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

Чем константа отличается от справочника и регистра сведений

Частая ошибка начинающих — выбрать неподходящий объект для хранения настройки. Критерий выбора простой: сколько значений нужно хранить и нужна ли история их изменения.

ОбъектСколько значенийИстория измененийКогда применять
КонстантаОдно на всю базуНетГлобальные настройки, флажки, единственное значение
СправочникСписок элементовНет (только текущее состояние)Однотипные данные: контрагенты, склады, валюты
Регистр сведений (периодический)Много, с привязкой к дате или измерениямДа, по периодамКурсы валют, цены, настройки по организациям

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

Маршрут решения

Как выбрать объект хранения

Нужно одно значение на всю базу без историиИспользуйте константу
Нужен список однотипных значенийСоздайте справочник
Значение меняется во времени и важна историяИспользуйте периодический регистр сведений
Значение различается по организациям или пользователямРегистр сведений с измерением или хранение настроек пользователя

Как создать и настроить константу в конфигураторе

Создание константы выполняется в конфигураторе и требует права на изменение конфигурации. Порядок действий стандартный.

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

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

Как работать с константами в коде 1С

Обращение к константам из встроенного языка выполняется через менеджер констант. Чтение и запись занимают одну строку.

bsl
// Чтение значения константы
ОснВалюта = Константы.ОсновнаяВалюта.Получить();

// Запись значения
Константы.ОсновнаяВалюта.Установить(НоваяВалюта);

// Чтение через набор всех констант
НаборКонстант = Константы.СоздатьНабор("ОсновнаяВалюта, ПрефиксБазы");
НаборКонстант.Прочитать();

Метод Получить() возвращает текущее значение, Установить() — записывает новое. Для массового чтения нескольких констант эффективнее использовать набор: он обращается к базе один раз вместо нескольких. Запись константы выполняется в транзакции и требует у пользователя права на изменение этого объекта.

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

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

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

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

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

Несмотря на простоту объекта, с константами связано несколько устойчивых проблем.

Типичные ошибки
01
Хранение в константе списка значений через строку с разделителями — при росте данных разбор строки становится источником ошибок; правильнее использовать справочник или табличную часть
02
Ожидание истории изменений — старое значение константы не восстановить, если не вести отдельный журнал
03
Чтение константы в цикле вместо однократного получения перед циклом — лишние обращения к базе замедляют обработку
04
Хранение паролей и токенов в константах открытым текстом — значения видны всем, у кого есть доступ к базе и конфигуратору
05
Изменение константы, к которой нет доступа у пользователя, — запись завершится ошибкой нарушения прав

Отдельное ограничение — константы не участвуют в разделении данных по областям так гибко, как регистры, и не поддерживают механизм истории данных без доработок. Для чувствительных параметров (ключи API, пароли) используйте безопасное хранилище, предусмотренное в современных версиях платформы, а не обычные константы.

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

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

Значение константы в форме настроек
Норма

Сохраняется после записи и отображается после повторного открытия

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

Значение сбрасывается или не сохраняется — проверьте права и обработчики формы

Чтение в коде
Норма

Получить() возвращает актуальное значение

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

Возвращается старое значение — обновите повторно используемые значения

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

Флажок включает и скрывает нужные разделы интерфейса

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

Интерфейс не меняется — константа не связана с функциональной опцией

Частые вопросы о константах в 1С

Можно ли хранить в константе список значений или таблицу?

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

Чем константа отличается от параметра сеанса?

Константа хранится в базе постоянно и общая для всех пользователей. Параметр сеанса существует только во время сеанса конкретного пользователя и сбрасывается при его завершении. Для настроек, привязанных к пользователю, подходят параметры сеанса или хранилище пользовательских настроек.

Что произойдёт, если удалить константу из конфигурации?

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

Видна ли константа всем пользователям базы?

Значение константы едино для всей базы, но доступ к чтению и изменению регулируется ролями. Пользователь без права «Изменение» на константу сможет только читать её, а без права «Чтение» не получит значение даже программно.

Как узнать, кто и когда изменил константу?

Штатной истории у констант нет. Если аудит важен, включите журналирование через механизм «История данных» платформы (при его поддержке в версии платформы) или ведите собственный регистр сведений, куда подпиской на событие записывайте старое и новое значения.

Можно ли использовать константы в запросах?

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

Итог

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

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