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

Разработка и Конфигурация · 11 мин

Как сохранить настройки внешней обработки в 1С

Как сохранить настройки внешней обработки в 1С: типовые механизмы хранения, программное сохранение через ХранилищеЗначения, СохранитьЗначение и работа с настройками отчётов.

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

Способ сохранения зависит от того, как устроена обработка. Типовые обработки, построенные на стандартных механизмах (СКД, стандартные формы), часто умеют сохранять настройки «из коробки» через кнопки «Сохранить настройки» / «Восстановить настройки». Самописные обработки требуют, чтобы разработчик реализовал механизм хранения — либо в файле, либо в базе данных, либо в системном хранилище настроек.

Ниже разобраны основные варианты: штатные кнопки в форме обработки, сохранение через типовую подсистему «Дополнительные отчеты и обработки», программное сохранение значений, хранение в файле настроек и типичные проблемы, из-за которых настройки «слетaют».

Как понять, какой механизм сохранения использует обработка

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

Если обработка подключена через типовую подсистему «Дополнительные отчеты и обработки» (раздел «Администрирование» в конфигурациях на БСП), настройки часто сохраняются автоматически в рамках вариантов отчёта или команд. Для отчётов на СКД варианты с настройками хранятся в базе и доступны всем пользователям, которым выданы права.

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

Есть кнопка «Сохранить настройки»Штатный механизм

Используйте её, настройки хранятся в системном хранилище или в файле

Обработка подключена через «Дополнительные отчеты и обработки»Хранение в базе

Проверьте варианты отчёта и права пользователя

Кнопок нет, обработка самописнаяМеханизм не реализован

Нужна доработка кода: ХранилищеОбщихНастроек или файл настроек

Настройки пропадают после закрытияХранение не работает

Проверьте права, путь к файлу и наличие кода сохранения

Сохранение настроек штатными средствами формы

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

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

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

Программное сохранение через системное хранилище настроек

Если вы разрабатываете или дорабатываете обработку, самый надёжный способ — системное хранилище общих настроек. Оно хранит данные в базе, привязано к пользователю и не зависит от файловой системы клиента. Для сохранения используется метод ХранилищеОбщихНастроек.Сохранить(), для загрузки — ХранилищеОбщихНастроек.Загрузить().

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

bsl
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	Если Не ЗавершениеРаботы Тогда
		СохранитьНастройкиНаСервере();
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройкиНаСервере()
	Настройки = Новый Структура;
	Настройки.Вставить("Период", Период);
	Настройки.Вставить("Организация", Организация);
	Настройки.Вставить("ПутьКФайлу", ПутьКФайлу);
	ХранилищеОбщихНастроек.Сохранить("МояВнешняяОбработка", "НастройкиФормы", Настройки);
КонецПроцедуры

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

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

Сохранение настроек в файл

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

Альтернатива — сохранение в XML или JSON через соответствующие объекты платформы (ЗаписьXML, ЗаписьJSON). Такой файл можно просмотреть и отредактировать вручную, что удобно для диагностики, но требует аккуратности с типами данных при чтении.

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

Хранение настроек в базе данных

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

Компактный вариант для произвольного набора параметров — хранение структуры через ХранилищеЗначения: значение упаковывается в реквизит типа «ХранилищеЗначения» элемента справочника или записи регистра. Так можно хранить сложные наборы настроек без создания отдельных реквизитов под каждый параметр.

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

Почему настройки не сохраняются: типичные причины

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

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

Типичные ошибки
01
Сохранение настроек только в обработчике нажатия кнопки «ОК» — при закрытии формы крестиком всё теряется; добавьте сохранение в ПриЗакрытии
02
Изменение ключа настроек в новой версии обработки — старые настройки перестают находиться; держите ключ стабильным
03
Попытка сохранить несериализуемые данные (например, COM-объекты) — сохраняйте только простые типы, структуры, таблицы значений
04
Хранение файла настроек в сетевой папке без прав записи — настройки молча не сохраняются; проверяйте результат записи
05
Ожидание, что настройки видны всем пользователям при хранении в ХранилищеОбщихНастроек — они индивидуальны для каждого пользователя

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

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

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

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

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

Повторное открытие обработки
Норма

Все параметры заполнены сохранёнными значениями

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

Поля пустые или часть значений потерялась

Запуск под другим пользователем
Норма

Поведение соответствует задуманному (свои настройки или общие)

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

Ошибка доступа или чужие настройки у общего механизма

Закрытие формы крестиком
Норма

Настройки сохраняются

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

Настройки теряются — нет обработчика ПриЗакрытии

Файл настроек на диске
Норма

Файл создаётся и обновляется при сохранении

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

Файл не появляется — нет прав или ошибка в коде

Часто задаваемые вопросы

Где физически хранятся настройки, сохранённые через ХранилищеОбщихНастроек?

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

Можно ли сохранить настройки внешней обработки без изменения её кода?

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

Почему после обновления обработки пропали сохранённые настройки?

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

Как сделать настройки общими для всех пользователей базы?

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

Чем отличается СохранитьЗначение от ХранилищеОбщихНастроек?

Оба механизма хранят данные в системных таблицах базы с привязкой к пользователю. ХранилищеОбщихНастроек — более гибкий и рекомендуемый вариант: позволяет задавать ключи объектов и настроек, управлять наборами. СохранитьЗначение/ВосстановитьЗначение — упрощённый старый интерфейс с ограниченными возможностями.

Настройки сохраняются в файл, но у коллеги они не открываются. В чём причина?

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

Итог

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

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