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

Администрирование · 12 мин

Где хранить настройки в 1С: обзор способов и рекомендации

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

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

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

Ниже разобраны основные способы хранения настроек, их ограничения и практические рекомендации по выбору. Материал ориентирован на платформу 8.3 и типовые конфигурации на БСП (Библиотека стандартных подсистем), но общие принципы применимы и к самописным решениям.

Системное хранилище настроек: где живут пользовательские параметры

Когда пользователь меняет состав колонок динамического списка, вариант отчёта или настройки формы, платформа автоматически сохраняет эти данные в системное хранилище настроек. Физически это таблицы информационной базы (в клиент-серверном варианте — таблицы СУБД), недоступные для прямого редактирования через конфигуратор.

Разработчику доступны три стандартных хранилища: ХранилищеОбщихНастроек, ХранилищеПользовательскихНастроекОтчетов и ХранилищеНастроекДанныхФорм. Сохранение и загрузка выполняются методами Сохранить() и Загрузить() с указанием ключа объекта, ключа настроек и имени пользователя.

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

bsl
// Сохранение произвольной настройки
ХранилищеОбщихНастроек.Сохранить("МояПодсистема", "ОсновнойСклад", СкладСсылка);
// Загрузка с значением по умолчанию
Склад = ХранилищеОбщихНастроек.Загрузить("МояПодсистема", "ОсновнойСклад");
Если Склад = Неопределено Тогда
    Склад = Справочники.Склады.НайтиПоНаименованию("Основной");
КонецЕсли;

Константы: единые значения для всей базы

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

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

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

Регистры сведений: настройки с разрезами и историей

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

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

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

Сравнение вариантов

Хранилище общих настроек

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

Константы

Единое значение на базу, меняется редко. Нет разрезов и истории, возможны блокировки.

Регистр сведений

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

Реквизиты справочников

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

Файлы на диске

Технические параметры вне базы. Не переносятся с базой, нет прав доступа средствами 1С.

Реквизиты справочников и документов

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

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

Для наборов параметров, которые повторяются у многих объектов, удобны шаблоны: справочник «Настройки...» с набором реквизитов и ссылка на него в объекте. Так в типовых реализованы, например, настройки ЭДО у контрагентов.

Где хранить пароли и параметры интеграций

Отдельная тема — секреты: пароли к веб-сервисам, токены API, ключи шифрования. Хранить их открытым текстом в константах или регистрах нельзя: любой пользователь с правом чтения (а часто и любой, кто получил выгрузку базы) увидит значения.

В типовых конфигурациях на БСП есть подсистема «Работа в модели сервиса» и механизм безопасного хранения данных — функции ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище() и ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(). Данные сохраняются в специальном регистре, доступ к которому закрыт ролями, а в формах вместо значения показываются звёздочки.

Альтернативы: хранение секретов в защищённом хранилище операционной системы, во внешних файлах с ограниченными правами на уровне файловой системы, либо во внешних сервисах управления секретами для крупных внедрений. Для файловой базы на общем сетевом ресурсе безопасное хранилище внутри базы — минимально приемлемый вариант, но помните: файл базы 1Cv8.1CD можно скопировать целиком.

Файлы и внешние хранилища: когда настройки вне базы

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

Типичные варианты: XML- или JSON-файл в каталоге сервера 1С, параметры в реестре Windows для толстого клиента, переменные окружения. Прочитать такой файл из кода можно средствами ЧтениеXML или ЧтениеJSON. Недостаток — отсутствие контроля прав средствами 1С и необходимость документировать расположение файлов для администраторов.

Для клиентских настроек тонкого клиента платформа сама хранит часть параметров в файлах профиля пользователя (каталог %APPDATA%\1C\1cv8), например списки баз и настройки подключения. Эти файлы редактировать вручную не рекомендуется — платформа может перезаписать их при выходе.

Маршрут решения

Как выбрать место хранения

Настройка персональная и меняется самим пользователемИспользуйте ХранилищеОбщихНастроек или стандартное хранилище настроек формы
Настройка одна на всю базу и меняется редкоСоздайте константу и добавьте её в панель настроек
Нужны разрезы по организациям, пользователям или история измененийСоздайте регистр сведений с нужными измерениями
Настройка относится к конкретному складу, договору или другому объектуДобавьте реквизит в этот справочник или документ
Хранится пароль, токен или ключИспользуйте безопасное хранилище БСП или внешнее защищённое хранилище
Параметр привязан к серверу, а не к даннымВынесите его в файл настроек на сервере

Очистка, перенос и обслуживание настроек

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

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

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

Типичные ошибки
01
Хранение персональных настроек в константах — у разных пользователей значения перезаписывают друг друга
02
Пароли открытым текстом в регистрах — компрометация при любой выгрузке базы
03
Настройки объекта вынесены в отдельный регистр без необходимости — рассинхронизация при создании новых элементов
04
Использование констант для часто меняющихся параметров — конфликты блокировок при параллельной работе
05
Хранение серверных путей в константах базы — после переноса базы на другой сервер обмены ломаются
Контрольные точки

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

Сохранение настройки
Норма

После перезахода в сеанс значение загружается корректно

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

Значение сбрасывается к умолчанию или возвращается Неопределено

Разграничение по пользователям
Норма

У разных пользователей свои значения персональных настроек

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

Изменение одним пользователем меняет значение у всех

Защита секретов
Норма

В форме вместо пароля звёздочки, в запросе значение не читается напрямую

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

Пароль виден в списке регистра или констант

Перенос базы
Норма

После копирования базы настройки работают без перенастройки

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

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

Итог

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

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

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

Где физически хранятся пользовательские настройки в файловой базе 1С?

Внутри файла 1Cv8.1CD, в системных таблицах хранилищ настроек. Отдельных файлов настроек у файловой базы нет — всё находится в одном файле вместе с данными. Именно поэтому копирование файла базы переносит и все пользовательские настройки.

Почему у пользователя слетели настройки после обновления конфигурации?

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

Можно ли хранить настройки в справочнике «Пользователи»?

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

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

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

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

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

Безопасно ли хранить токены API в константе с ограничением прав?

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