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

Справочники и Данные · 9 мин

Как изменить константу в 1С

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

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

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

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

Что такое константа и как найти нужную

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

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

Если вы не знаете точное имя константы, поищите по синониму в конфигураторе (Ctrl+F по дереву метаданных или глобальный поиск по конфигурации). Полезно также посмотреть, где константа используется: правой кнопкой по объекту — «Поиск ссылок на объект» покажет все модули, где значение читается или записывается.

Изменение константы через пользовательский интерфейс

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

Порядок действий в пользовательском режиме
  1. 1
    Откройте раздел «Администрирование» или «Настройки» в главном меню
  2. 2
    Найдите нужный блок настроек по названию (например, «Обмен данными», «Организация», «Функциональность»)
  3. 3
    Измените значение параметра и нажмите «Записать» или закройте форму с сохранением
  4. 4
    Проверьте, что поведение программы изменилось ожидаемым образом

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

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

Изменение константы через конфигуратор

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

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

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

Программное изменение константы

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

Константы.ИспользоватьОбменДанными.Установить(Истина);

// Альтернатива через менеджер значения:

Менеджер = Константы.ОсновнаяОрганизация.ПолучитьМенеджерЗначения();

Менеджер.Значение = НовоеЗначение;

Менеджер.Записать();

Чтение значения выполняется ещё проще: Значение = Константы.ИмяКонстанты.Получить();. Этот приём используют в обработчиках, регламентных заданиях и при отладке.

Если константа типа «ссылка на справочник» (например, основная организация), убедитесь, что устанавливаемое значение — именно ссылка, а не строка с наименованием. Несовпадение типов — самая частая причина ошибки при программной установке.
ПЗ
Практическое замечание

При массовом изменении нескольких констант используйте набор констант: Набор = Константы.СоздатьНабор("Константа1, Константа2"), заполните значения и запишите одним вызовом. Это быстрее и гарантирует согласованность.

Права доступа и типичные ограничения

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

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

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

Проверка результата после изменения

После изменения убедитесь, что значение действительно записалось и система ведёт себя ожидаемо. Перечитайте константу: откройте форму настройки заново или выполните Сообщить(Константы.ИмяКонстанты.Получить()) в консоли кода.

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

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

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

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

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

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

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

Появились ожидаемые разделы, документы или изменилась логика

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

Ничего не изменилось — требуется перезапуск сеанса или изменена не та константа

Связанные механизмы
Норма

Обмены и регламентные задания работают без новых ошибок

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

В журнале регистрации появились ошибки после изменения

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

Когда константу менять не стоит: альтернативы

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

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

Итог

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

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

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

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

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

Почему после изменения константы ничего не изменилось?

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

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

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

Как вернуть прежнее значение константы?

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

Безопасно ли менять константы в рабочей базе?

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

Как изменить константу во всех узлах РИБ?

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