Константы 1С 8.3: где лежат значения и как их менять без риска

· 9 мин

Содержание

Константы в 1С заполняют двумя способами. Первый — через формы настроек конфигурации: в Бухгалтерии 3.0 это Администрирование → Настройки программы, в ЗУП 3.1 — раздел Настройка, в УТ 11 — НСИ и администрирование. Второй — напрямую, через Главное меню → Все функции → Константы: там видна каждая константа базы, и любую можно открыть и изменить.

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

Что хранит константа и почему её не видно в меню

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

Типичные примеры того, что в типовых конфигурациях хранится в константах:

  • 🏷️ заголовок программы, который виден в шапке окна;
  • 💱 валюта регламентированного учёта;
  • ✅ флажки функциональности: «вести учёт по нескольким организациям», «использовать склады», «вести учёт в валюте»;
  • 🔗 адреса и параметры служебных сервисов;
  • 🔢 служебные счётчики и признаки, которые программа ставит сама при обновлении.

Большая часть флажков из раздела «Функциональность» — это константы, к которым привязаны функциональные опции. Включили флажок — константа приняла значение Истина, опция включилась, и в интерфейсе появились новые документы, поля и команды.

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

Значение константы задают только в режиме 1С:Предприятие. В Конфигураторе константу можно создать, задать ей тип и права, но заполнить значение там нельзя.

Где найти константы в 1С: формы настроек по конфигурациям

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

КонфигурацияГде лежат настройки-константыЧто там обычно меняют
Бухгалтерия предприятия 3.0Администрирование → Настройки программы → Общие настройки, Администрирование → Функциональностьзаголовок программы, учёт по нескольким организациям, разделы функциональности
ЗУП 3.1раздел Настройка: Кадровый учет, Расчет зарплатыфлажки кадрового учёта и расчёта зарплаты
Управление торговлей 11НСИ и администрирование → Настройка НСИ и разделовсклады, закупки, продажи, цены, ценообразование

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

В УТ 11 настройки разнесены по подразделам: каждая область учёта открывается своей ссылкой. Флажки внутри — константы, и часть из них зависит друг от друга: одна опция становится доступной только после включения другой.

Как заполнить константу через «Все функции»

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

Шаг 1. Включите команду «Все функции»

  1. Откройте главное меню — кнопка с тремя полосками в левом верхнем углу окна.
  2. Выберите Сервис → Параметры.
  3. Поставьте флажок Отображать команду "Все функции".
  4. Нажмите Применить и закройте окно.

Перезапуск не нужен: команда сразу появится в главном меню.

Шаг 2. Откройте ветку «Константы»

  1. В главном меню выберите Все функции.
  2. Разверните ветку Константы.
  3. Найдите нужную константу. Список длинный, поэтому удобнее встать в дерево и начать набирать название — курсор перейдёт к совпадению.

В списке выводятся синонимы констант, то есть человекочитаемые названия, а не имена из конфигуратора. Если знаете только имя, например ЗаголовокСистемы, найдите синоним в Конфигураторе: дерево метаданных, ветка Константы, свойства объекта.

Шаг 3. Измените значение и запишите

  1. Откройте константу двойным щелчком.
  2. Введите значение: поставьте флажок, введите строку или выберите элемент справочника.
  3. Нажмите Записать и закрыть.

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

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

Как проверить, что значение сохранилось

  • 🔁 Откройте константу повторно и посмотрите значение.
  • 🧭 Для флажков функциональности проверьте, появились ли новые команды. В части случаев интерфейс обновляется только после перезапуска сеанса — закройте программу и откройте снова.
  • 📜 Откройте Администрирование → Обслуживание → Журнал регистрации (в БП 3.0) и отберите события по метаданным: запись о константе покажет, кто и когда её изменил.
Диагностика: выберите симптом

Особенности работы с константами в разных режимах и клиентах

Константы ведут себя одинаково в файловой и клиент-серверной базе. Разница — в деталях доступа.

РежимЧто важно знать
Тонкий клиентосновной режим; «Все функции» и формы настроек работают полностью
Веб-клиентте же формы и та же ветка «Все функции»; изменения видны другим пользователям после их перезахода
Конфигуратортолько структура: создать константу, задать тип, форму и права; значения не задаются
Распределённая база, обменконстанта может входить в состав плана обмена и приехать из другой базы, перезаписав ваше значение

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

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

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

Права доступа: кто может менять константы

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

Как это выглядит на практике:

  • 👤 Обычный бухгалтер видит значения через формы настроек, но не может их поменять — у его профиля нет нужного права.
  • 🛠️ Пользователь с профилем «Администратор» меняет любые настройки в формах и в «Все функции».
  • 🔒 Право на режим «Все функции» — отдельное. Без него команда в главном меню не появится, даже если включить флажок в параметрах.

Профили настраивают в Администрирование → Настройки пользователей и прав → Группы доступа (БП 3.0, ЗУП 3.1). Добавлять рядовому пользователю полный доступ ради одной настройки не стоит — проще попросить администратора изменить константу самому.

Как автоматизировать заполнение констант

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

Внешняя обработка с кодом

Встроенный язык даёт к константам прямой доступ через менеджер Константы. Запись одного значения:

&НаСервере
Процедура ЗаполнитьКонстантыНаСервере()

    Константы.ЗаголовокСистемы.Установить("Склад №2 — рабочая база");

    ТекущееЗначение = Константы.ЗаголовокСистемы.Получить();
    Сообщить("Записано: " + ТекущееЗначение);

КонецПроцедуры

Если нужно записать несколько констант за один раз и выполнить их обработчики записи, используйте набор констант:

&НаСервере
Процедура ЗаписатьНаборНаСервере()

    Набор = Константы.СоздатьНабор("ЗаголовокСистемы");
    Набор.Прочитать();
    Набор.ЗаголовокСистемы = "Тестовая копия — не для работы";
    Набор.Записать();

КонецПроцедуры

Имена констант берите из Конфигуратора, а не из синонимов в интерфейсе. Ошибка в имени даст исключение при выполнении, и ничего не запишется.

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

Перенос значений между базами

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

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

Внешнее подключение

Для администраторов, которые обслуживают много баз, константы меняют через COM-соединение или скрипт с запуском внешней обработки в пакетном режиме. Логика та же: Константы.Имя.Установить(Значение), только выполняется без участия пользователя.

Перед массовой записью констант кодом
Выполнено: 0 / 5

Резервная копия и контроль изменений

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

Перед изменением флажков функциональности и перед массовой записью кодом сделайте резервную копию базы . Для файловой базы хватит выгрузки .dt через Конфигуратор или копии папки базы при закрытой программе. Для клиент-серверной — резервной копии средствами СУБД.

Что ещё помогает держать изменения под контролем:

  • 📜 Журнал регистрации. Фиксирует, кто и когда записал константу. Если значение «само поменялось», начинайте поиск отсюда.
  • 🧪 Проверка на копии. Новую настройку функциональности включайте сначала в копии базы и проведите пару тестовых документов.
  • 📝 Записи о настройке. Для баз с несколькими администраторами ведите короткий список: какая константа, старое и новое значение, дата, причина.

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

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

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