Константы в 1С: где их искать и как менять значения

· 9 мин

Содержание

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

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

Ветка «Константы» в дереве конфигурации

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

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

  • 📌 Имя — идентификатор для встроенного языка (латиница или кириллица без пробелов);
  • 🏷️ Синоним — то, как константа подписана в интерфейсе пользователя;
  • 🔢 Тип — число, строка, дата, булево, ссылка на справочник или составной тип;
  • 📝 Комментарий — пояснение разработчика.

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

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

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

Что обычно хранят в константах

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

  • ⚙️ Служебные версии — номер версии информационной базы, по которому платформа определяет, нужно ли запускать обработчики обновления.
  • 🔗 Параметры распределённой базы (РИБ) — префикс узла, который подставляется в номера документов, чтобы они не пересекались между узлами обмена.
  • 🧭 Глобальные флаги — признаки включения той или иной подсистемы или режима работы, заданные один раз на всю организацию.
  • 💱 Значения по умолчанию — например, валюта регламентированного учёта или основная организация, если в базе ведётся одна.

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

Как увидеть значения констант в режиме «Предприятие»

В пользовательском режиме константы по умолчанию не выведены отдельным списком — разработчик показывает их через формы настроек. Но есть служебный доступ ко всем сразу.

Включите команду «Все функции» один раз:

  1. Нажмите на кнопку главного меню (значок в левом верхнем углу).
  2. Откройте Сервис → Параметры.
  3. Поставьте флаг Отображать команду «Все функции» и нажмите ОК.

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

Открыть список констант в «Предприятии»
Выполнено: 0 / 5

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

Поиск нужной константы среди всех

Когда констант в конфигурации сотни, перебирать дерево вручную долго. Используйте поиск.

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

Поиск мест использования. Чтобы понять, где константа читается и записывается в коде, щёлкните по ней правой кнопкой и выберите Поиск ссылок на объект. Платформа покажет все модули, формы и запросы, где эта константа упоминается. Это главный приём, когда нужно разобраться, на что влияет значение.

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

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

Что нужноГде искатьКак
Структура и тип константыКонфигуратор, ветка Константыдвойной щелчок по объекту
Текущее значение в базеПредприятие, Все функцииузел Константы
Где используется в кодеКонфигураторПКМ → Поиск ссылок на объект
Имя по части названияоба режимаполе фильтра над деревом/списком

Свойства и тип константы в метаданных

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

  • Примитивный тип — число, строка, дата, булево. Для строки задаётся длина, для числа — разрядность и точность.
  • Ссылочный тип — ссылка на элемент справочника, перечисления или другого объекта. Например, константа «Основная организация» ссылается на справочник Организации.
  • Составной тип — когда константа может хранить значение одного из нескольких типов. Тогда при записи важно передавать значение правильного типа, иначе платформа выдаст ошибку приведения.

Программно описание типа доступно через коллекцию метаданных: Метаданные.Константы.НайтиПоИмени("ИмяКонстанты"). У полученного объекта есть свойства Тип, Синоним, Комментарий. Это удобно, когда код должен сам узнать, с какой константой работает.

Перебрать все константы конфигурации и вывести их имена можно так:

Для Каждого ОписаниеКонстанты Из Метаданные.Константы Цикл
    Сообщить(ОписаниеКонстанты.Имя + " — " + ОписаниеКонстанты.Синоним);
КонецЦикла;

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

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

Чтение и запись из встроенного языка

С константами работают через глобальный объект Константы. Самый короткий способ прочитать значение:

Значение = Константы.ПрефиксНумерации.Получить();

Записать новое значение:

Константы.ПрефиксНумерации.Установить("ЦБ");

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

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

Значения констант доступны и в языке запросов. У каждой константы есть своя виртуальная таблица Константа.<Имя> с единственным полем Значение:

ВЫБРАТЬ
    Константа.ОсновнаяВалюта.Значение КАК Валюта
ИЗ
    Константа.ОсновнаяВалюта

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

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

НачатьТранзакцию();
Попытка
    Константы.ОсновнаяВалюта.Установить(НоваяВалюта);
    Константы.ПрефиксНумерации.Установить(НовыйПрефикс);
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
    ВызватьИсключение;
КонецПопытки;

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

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

Логически значение лежит «в константе», физически — в отдельной служебной таблице базы данных, которую платформа создаёт под каждую константу. В файловом варианте всё это внутри одного файла 1Cv8.1CD в каталоге базы; в клиент-серверном — в таблицах СУБД (PostgreSQL, MS SQL).

Напрямую в таблицы СУБД лезть не нужно и опасно: структуру платформа ведёт сама, имена таблиц служебные и меняются. Единственный штатный путь к значению — объект Константы или таблица Константа.<Имя> в запросе. Этого достаточно для любой прикладной задачи.

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

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

Частые проблемы и их причины

Не вижу пункт «Все функции». Команда отключена. Включите её флагом в Сервис → Параметры (см. раздел выше). Если флага нет совсем — у роли пользователя не хватает прав; зайдите под administrator или обратитесь к ответственному за базу.

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

Ошибка «Преобразование значения к типу…» при записи. Константа составного или ссылочного типа, а вы передаёте значение не того типа. Проверьте Тип константы в метаданных и приводите значение явно.

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

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

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

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

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