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

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

Где находятся константы в 1С и как с ними работать

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

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

Физически значения констант хранятся в специальной таблице информационной базы, а логически доступ к ним возможен тремя путями: через конфигуратор, через пользовательский интерфейс (формы настроек) и через встроенный язык 1С. Ниже разобраны все способы, а также типичные проблемы — например, когда константа существует в конфигурации, но недоступна пользователю.

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

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

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

Где константы находятся в пользовательском режиме

Пользователь не видит дерево метаданных — он работает с формами. В типовых конфигурациях (Бухгалтерия, Управление торговлей, ERP, ЗУП) константы обычно разнесены по разделам настроек: «Администрирование», «Настройки программы», «Параметры учёта», «Главное → Настройки». Например, константа с наименованием организации редактируется в карточке организации, а функциональные опции — флажки в настройках разделов.

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

Где физически хранятся значения констант

Значения констант хранятся внутри информационной базы. В файловом варианте это таблица в файле 1Cv8.1CD, в клиент-серверном — таблица в базе данных СУБД (MS SQL, PostgreSQL и др.). Прямой доступ к этим таблицам средствами СУБД не документирован и крайне не рекомендуется: структура хранения может меняться между версиями платформы, а ручная правка способна повредить базу.

Для просмотра и редактирования значений в обход интерфейса существуют безопасные штатные механизмы: обработки типа «Универсальный редактор констант», консоль кода, а также встроенная команда «Функции для технического специалиста» (ранее «Все функции»), если разработчик вывел туда форму констант. Все эти способы работают через платформу и не ломают целостность данных.

Как найти и изменить константу через код

Во встроенном языке доступ к константам выполняется через менеджер Константы. Чтение значения: Значение = Константы.ВалютаУчета.Получить();. Запись: Константы.ВалютаУчета.Установить(НовоеЗначение);. Также доступен объект КонстантыМенеджер и набор констант Константы.СоздатьНабор() для групповой записи в одной транзакции.

Для разового изменения удобно использовать консоль кода (внешняя обработка) или любую форму с кнопкой «Выполнить». Учтите: запись константы требует права на изменение этого объекта метаданных — у пользователя без соответствующей роли код завершится ошибкой нарушения прав доступа.

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

// Проверка заполненности
Если Не ЗначениеЗаполнено(Константы.ВалютаУчета.Получить()) Тогда
    Сообщить("Константа не заполнена");
КонецЕсли;

Как вывести константу в интерфейс пользователя

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

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

Как найти константу и изменить её значение
  1. 1
    Откройте конфигуратор и найдите константу в ветке «Общие → Константы», запомните её имя и тип.
  2. 2
    Проверьте, выведена ли она на какую-либо форму: поищите имя константы в модулях и формах конфигурации.
  3. 3
    Если форма есть — откройте её в режиме 1С:Предприятие под пользователем с нужными правами и измените значение.
  4. 4
    Если формы нет — выполните Константы.ИмяКонстанты.Установить(Значение) через консоль кода.
  5. 5
    Проверьте результат: Константы.ИмяКонстанты.Получить() должно вернуть новое значение, а зависимые механизмы — работать корректно.

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

Частая ситуация: константу изменили, а поведение программы не поменялось. Причины: значение закэшировано в сеансе (помогает перезапуск сеанса), константа продублирована функциональной опцией, которая читается из другого места, либо код использует не константу, а параметр сеанса или регистр сведений. Всегда проверяйте в отладчике, откуда реально читается значение.

Вторая группа проблем — права доступа. Константа пишется в привилегированном модуле — всё работает, а из пользовательской формы — ошибка. Решение: назначить роли право «Изменение» на константу или осознанно выполнять запись в привилегированном режиме с контролем бизнес-логики.

Типичные ошибки
01
Правка таблиц базы напрямую через СУБД — риск повреждения данных и потери поддержки.
02
Хранение в константе часто меняющихся значений — константы не имеют истории, предыдущее значение теряется безвозвратно.
03
Изменение служебных констант типовой конфигурации без понимания их роли — нарушение обменов, закрытия периода и отчётности.
04
Забытый перезапуск сеанса после изменения константы — пользователь видит старое поведение и считает, что настройка не сработала.
Контрольные точки

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

Значение после записи
Норма

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

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

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

Поведение программы
Норма

Зависимые отчёты и документы учитывают новую настройку

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

Поведение не изменилось — значение читается из другого источника или закэшировано

Доступность в интерфейсе
Норма

Пользователь с нужной ролью видит и редактирует поле

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

Поле скрыто или недоступно — проверьте права и функциональные опции

FAQ

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

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

Можно ли посмотреть, кто и когда изменил константу?

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

Почему константа есть в конфигурации, но недоступна в «Все функции»?

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

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

Нет. Тип константы ограничен примитивными типами и ссылками на объекты (справочники, документы, перечисления, планы счетов и т.п.), а также хранилищем значения. Через тип «ХранилищеЗначения» можно сериализовать сложные данные, но это усложняет чтение и поддержку — для списков лучше подходят справочники или регистры сведений.

Переносятся ли значения констант при обмене между базами?

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

Что делать, если после изменения константы перестал работать обмен или отчёт?

Верните прежнее значение, если оно известно, либо восстановите базу из резервной копии. Затем в конфигураторе найдите все места чтения константы (поиск по имени в модулях) и выясните, какие алгоритмы от неё зависят, прежде чем менять значение повторно.

Итог

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

Константы описаны в конфигураторе в ветке «Общие → Константы», а их значения в пользовательском режиме меняются через формы настроек или программно через Константы.Имя.Получить() и Установить(). Значения хранятся внутри базы, прямая правка таблиц СУБД недопустима. Перед изменением служебных констант делайте резервную копию и проверяйте, какие механизмы читают это значение.