Константы в 1С: где их искать и как менять значения
Содержание
Константы в 1С — это не «настройки где-то в недрах», а отдельная ветка объектов метаданных. В Конфигураторе они лежат в дереве конфигурации в разделе Константы, а их значения в рабочей базе проще всего посмотреть через меню Все функции → Константы в режиме «Предприятие». Многие ищут константу в справочниках или регистрах и не находят — потому что это самостоятельный тип объекта со своим местом хранения.
У константы три точки доступа, и путать их — главная причина, почему её «не могут найти». Структуру и тип смотрят в Конфигураторе, текущее значение в рабочей базе — через Все функции в режиме «Предприятие», а в коде к нему обращаются через объект Константы. Для каждой точки доступа дальше даны точные пути меню и примеры.
Ветка «Константы» в дереве конфигурации
Откройте Конфигуратор: Конфигурация → Открыть конфигурацию. В дереве объектов разверните корневую ветку — Константы стоит одной из первых, сразу после Общие.
Внутри перечислены все константы конфигурации по именам. Дважды щёлкните по любой — откроется окно свойств. Здесь задаётся:
- 📌 Имя — идентификатор для встроенного языка (латиница или кириллица без пробелов);
- 🏷️ Синоним — то, как константа подписана в интерфейсе пользователя;
- 🔢 Тип — число, строка, дата, булево, ссылка на справочник или составной тип;
- 📝 Комментарий — пояснение разработчика.
Сама константа хранит ровно одно значение на всю базу (в отличие от справочника с множеством элементов). Поэтому её применяют для настроек организации: префикс нумерации, основная система налогообложения по умолчанию, флаг «вести учёт по складам» и подобные параметры, единые для всей информационной базы.
Константы в дереве сгруппированы по алфавиту имён, а не по смыслу. В крупной конфигурации их бывает несколько сотен, поэтому визуально искать нужную среди соседних по алфавиту бессмысленно — удобнее сразу открыть фильтр над деревом и ввести часть имени. Папок и вложенных групп у констант нет: это плоский список объектов одного уровня.
Если в типовой конфигурации вы не видите привычную настройку как отдельную константу — в современных релизах многие параметры переехали в регистр сведений вроде НастройкиПользователей или в объект ОбщиеНастройки. Константы остались в основном под служебные и версионные значения.
Что обычно хранят в константах
Понимание, какие параметры живут в константах, помогает быстрее их находить. В типовых конфигурациях через этот механизм хранят значения, единые для всей базы:
- ⚙️ Служебные версии — номер версии информационной базы, по которому платформа определяет, нужно ли запускать обработчики обновления.
- 🔗 Параметры распределённой базы (РИБ) — префикс узла, который подставляется в номера документов, чтобы они не пересекались между узлами обмена.
- 🧭 Глобальные флаги — признаки включения той или иной подсистемы или режима работы, заданные один раз на всю организацию.
- 💱 Значения по умолчанию — например, валюта регламентированного учёта или основная организация, если в базе ведётся одна.
Если параметр логически относится к конкретному пользователю, складу или периоду — он почти наверняка хранится не в константе, а в регистре сведений. Это первый ориентир: не нашли настройку среди констант — ищите в регистрах.
Как увидеть значения констант в режиме «Предприятие»
В пользовательском режиме константы по умолчанию не выведены отдельным списком — разработчик показывает их через формы настроек. Но есть служебный доступ ко всем сразу.
Включите команду «Все функции» один раз:
- Нажмите на кнопку главного меню (значок в левом верхнем углу).
- Откройте
Сервис → Параметры. - Поставьте флаг Отображать команду «Все функции» и нажмите
ОК.
После этого в главном меню появится пункт Все функции. Откройте его — в дереве будет узел Константы со списком всех констант базы и их текущими значениями. Значение можно посмотреть и, если у вас есть права, изменить прямо здесь.
Все функции — инструмент технического специалиста. Рядовому пользователю лучше менять настройки через штатные формы: правка константы напрямую обходит проверки, которые заложены в интерфейсе, и может рассогласовать учёт.
Поиск нужной константы среди всех
Когда констант в конфигурации сотни, перебирать дерево вручную долго. Используйте поиск.
В Конфигураторе — глобальный поиск по именам объектов: меню Правка → Найти в текстах или поиск по дереву (поле фильтра над деревом конфигурации, если оно включено). Вводите часть имени или синонима — список отфильтруется.
Поиск мест использования. Чтобы понять, где константа читается и записывается в коде, щёлкните по ней правой кнопкой и выберите Поиск ссылок на объект. Платформа покажет все модули, формы и запросы, где эта константа упоминается. Это главный приём, когда нужно разобраться, на что влияет значение.
В «Предприятии» — в окне Все функции есть поле отбора над деревом: начните печатать имя, и список сократится до совпадений. Отбор работает и по синониму, поэтому искать можно привычным русским названием, а не внутренним именем.
Если точное имя неизвестно, идите от обратного: найдите в интерфейсе форму, где параметр настраивается, откройте её в Конфигураторе и посмотрите в реквизитах формы или в её модуле, с какой константой она связана. Так вы выйдете на имя объекта, даже когда синоним в списке констант отличается от подписи на форме.
| Что нужно | Где искать | Как |
|---|---|---|
| Структура и тип константы | Конфигуратор, ветка Константы | двойной щелчок по объекту |
| Текущее значение в базе | Предприятие, Все функции | узел Константы |
| Где используется в коде | Конфигуратор | ПКМ → Поиск ссылок на объект |
| Имя по части названия | оба режима | поле фильтра над деревом/списком |
Свойства и тип константы в метаданных
Тип константы определяет, какое значение она примет. Открыв свойства в Конфигураторе, обратите внимание на поле Тип:
- Примитивный тип — число, строка, дата, булево. Для строки задаётся длина, для числа — разрядность и точность.
- Ссылочный тип — ссылка на элемент справочника, перечисления или другого объекта. Например, константа «Основная организация» ссылается на справочник
Организации. - Составной тип — когда константа может хранить значение одного из нескольких типов. Тогда при записи важно передавать значение правильного типа, иначе платформа выдаст ошибку приведения.
Программно описание типа доступно через коллекцию метаданных: Метаданные.Константы.НайтиПоИмени("ИмяКонстанты"). У полученного объекта есть свойства Тип, Синоним, Комментарий. Это удобно, когда код должен сам узнать, с какой константой работает.
Перебрать все константы конфигурации и вывести их имена можно так:
Для Каждого ОписаниеКонстанты Из Метаданные.Константы Цикл
Сообщить(ОписаниеКонстанты.Имя + " — " + ОписаниеКонстанты.Синоним);
КонецЦикла;
Такой обход применяют, когда нужно построить служебную обработку для просмотра или выгрузки значений, не привязываясь к конкретным именам.
Отдельно стоит знать про модуль менеджера значения константы. У каждой константы в Конфигураторе есть свой модуль, где доступны обработчики ОбработкаПроверкиЗаписи, ПередЗаписью и ПриЗаписи. В них проверяют корректность нового значения или запускают связанные действия — например, пересчёт зависимых настроек. Если при записи константы «срабатывает» какая-то логика, искать её нужно именно в этом модуле.
Чтение и запись из встроенного языка
С константами работают через глобальный объект Константы. Самый короткий способ прочитать значение:
Значение = Константы.ПрефиксНумерации.Получить();
Записать новое значение:
Константы.ПрефиксНумерации.Установить("ЦБ");
Когда нужно прочитать или записать сразу несколько констант, создают набор — это одно обращение к базе вместо нескольких:
Набор = Константы.СоздатьНабор("ПрефиксНумерации, ОсновнаяВалюта");
Набор.Прочитать();
Префикс = Набор.ПрефиксНумерации;
Валюта = Набор.ОсновнаяВалюта;
Значения констант доступны и в языке запросов. У каждой константы есть своя виртуальная таблица Константа.<Имя> с единственным полем Значение:
ВЫБРАТЬ
Константа.ОсновнаяВалюта.Значение КАК Валюта
ИЗ
Константа.ОсновнаяВалюта
Если константа ссылочного типа и может быть пустой, после Получить() проверяйте результат на Значение.Пустая() — иначе дальнейший код получит пустую ссылку и отработает не так, как ждёте.
Запись одной константы выполняется в собственной транзакции платформы — отдельно открывать её не требуется. Но если вы меняете сразу несколько взаимосвязанных констант, оберните запись в явную транзакцию, чтобы значения менялись «всё или ничего»:
НачатьТранзакцию();
Попытка
Константы.ОсновнаяВалюта.Установить(НоваяВалюта);
Константы.ПрефиксНумерации.Установить(НовыйПрефикс);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Запись константы — это операция, меняющая данные всей базы. Выполняйте её осознанно: если от значения зависят проводки или нумерация, меняйте его в момент, когда никто не вводит документы, и по согласованию с регламентом учёта.
Где физически хранятся значения
Логически значение лежит «в константе», физически — в отдельной служебной таблице базы данных, которую платформа создаёт под каждую константу. В файловом варианте всё это внутри одного файла 1Cv8.1CD в каталоге базы; в клиент-серверном — в таблицах СУБД (PostgreSQL, MS SQL).
Напрямую в таблицы СУБД лезть не нужно и опасно: структуру платформа ведёт сама, имена таблиц служебные и меняются. Единственный штатный путь к значению — объект Константы или таблица Константа.<Имя> в запросе. Этого достаточно для любой прикладной задачи.
История изменений у константы по умолчанию не ведётся: хранится только текущее значение. Если нужно знать, кто и когда поменял параметр, в типовых конфигурациях для таких настроек используют не константу, а регистр сведений с измерением по дате и ответственному.
Перенести значение из одной базы в другую «точечно» через стандартную выгрузку тоже нельзя — выгрузка .dt переносит базу целиком. Для переноса отдельных констант пишут обработку, которая читает значение в одной базе и записывает в другой через объект Константы. Значения констант попадают в обычную резервную копию базы
(.dt или бэкап СУБД), поэтому отдельно их сохранять не нужно — достаточно штатного резервного копирования.
Частые проблемы и их причины
Не вижу пункт «Все функции». Команда отключена. Включите её флагом в Сервис → Параметры (см. раздел выше). Если флага нет совсем — у роли пользователя не хватает прав; зайдите под administrator или обратитесь к ответственному за базу.
Значение изменил, а в документах не применилось. Многие настройки считываются в момент проведения или кэшируются на сеанс. Перепроведите документ или перезайдите в базу, чтобы новое значение подхватилось.
Ошибка «Преобразование значения к типу…» при записи. Константа составного или ссылочного типа, а вы передаёте значение не того типа. Проверьте Тип константы в метаданных и приводите значение явно.
Константы нет в дереве конфигурации. Вы смотрите не ту конфигурацию (например, конфигурацию базы данных вместо основной) или объект называется иначе. Воспользуйтесь поиском по имени и синониму, а не визуальным перебором.
Изменения в Конфигураторе не видны пользователям. Добавление новой константы — это изменение структуры. После него нужно выполнить Обновить конфигурацию базы данных (F7), иначе объект есть в основной конфигурации, но отсутствует в рабочей базе.
Значение «слетает» после обновления. Обработчики обновления конфигурации иногда переинициализируют служебные константы. Если важное для вас значение сбрасывается именно при обновлении, проверьте модуль менеджера этой константы и обработчики обновления — скорее всего, значение задаётся там программно.
Частые вопросы
Чем константа отличается от справочника?
Можно ли сделать так, чтобы у каждого пользователя было своё значение?
Как узнать, на что влияет константа, прежде чем её менять?
Поиск ссылок на объект. Платформа покажет все модули и запросы, где значение читается.