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

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

Как сохранить значения обработки 1С

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

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

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

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

Какие значения обработки нужно сохранять

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

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

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

Тип обработкиВнешняя или встроенная

Для внешних обработок нет объекта метаданных — сохранение в форме работает иначе

ПользователиОдин или несколько

Общие настройки требуют ключей с разделением по пользователям

ПереносимостьНужен ли перенос между базами

Если да — выбирайте сохранение в файл

Состав данныхПростые типы или таблицы

Таблицы значений сохраняют через ЗначениеВСтрокуВнутр или ЗначениеВФайл

Способ 1. Автоматическое сохранение настроек формы

Управляемая форма в 1С умеет сама сохранять значения реквизитов между сеансами. Для этого в конфигураторе откройте форму обработки, перейдите в её свойства и включите свойство «АвтоматическоеСохранениеДанныхВНастройках» в режим «Использовать». Затем у нужных реквизитов формы установите флажок «Сохраняемые данные».

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

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

Способ 2. Системное хранилище общих настроек

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

Типовой приём — сохранять настройки при закрытии формы и восстанавливать при создании формы на сервере:

// При закрытии формы

&НаКлиенте

Процедура ПриЗакрытии(ЗавершениеРаботы)

СохранитьНастройкиНаСервере();

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

&НаСервере

Процедура СохранитьНастройкиНаСервере()

Настройки = Новый Структура;

Настройки.Вставить("Период", Период);

Настройки.Вставить("Организация", Организация);

Настройки.Вставить("ПутьКФайлу", ПутьКФайлу);

ХранилищеОбщихНастроек.Сохранить("МояОбработка", "НастройкиФормы", Настройки);

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

// При открытии

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Настройки = ХранилищеОбщихНастроек.Загрузить("МояОбработка", "НастройкиФормы");

Если ТипЗнч(Настройки) = Тип("Структура") Тогда

ЗаполнитьЗначенияСвойств(ЭтаФорма, Настройки);

КонецЕсли;

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

Ключ объекта (в примере «МояОбработка») должен быть уникальным и постоянным. Если вы измените ключ при обновлении обработки, старые настройки перестанут подхватываться. Для таблиц значений перед сохранением используйте сериализацию через ЗначениеВСтрокуВнутр, а при загрузке — ЗначениеИзСтрокиВнутр.

bsl
ХранилищеОбщихНастроек.Сохранить("КлючОбъекта", "КлючНастроек", Значение);

Способ 3. Сохранение значений в файл

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

// Сохранение

ЗначениеВФайл("C:\Настройки\МояОбработка.xml", Настройки);

// Восстановление

Если ФайлСуществует Тогда

Настройки = ЗначениеИзФайла("C:\Настройки\МояОбработка.xml");

КонецЕсли;

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

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

Сравнение способов хранения

Автосохранение формы

Простейший вариант без кода; не подходит для внешних обработок с меняющимся путём и для данных вне формы

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

Универсально, привязка к пользователю, работает везде; настройки не переносятся между базами штатно

Файл настроек

Переносится между базами и пользователями; требует управления путями и правами доступа

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

Общие настройки для всех пользователей с контролем через интерфейс; требует доработки конфигурации

Способ 4. Хранение настроек в регистре сведений

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

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

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

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

Как выбрать способ

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

Проверка результата и типичные ошибки

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

Типичные ошибки разработчиков при сохранении значений обработок:

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

Проверка корректности работы механизма

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

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

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

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

Все поля формы заполнены значениями прошлого сеанса

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

Часть полей пустая или содержит устаревшие значения

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

Отображаются его собственные настройки или значения по умолчанию

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

Подтягиваются чужие настройки — ключ не разделён по пользователям

Первый запуск на чистой базе
Норма

Обработка открывается со значениями по умолчанию без ошибок

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

Ошибка обращения к полям Неопределено

Смена версии обработки
Норма

Настройки подхватываются, новые параметры получают значения по умолчанию

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

Настройки сбрасываются или структура не совместима со старой

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

Итог

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

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

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

Почему настройки внешней обработки пропадают после обновления файла?

Автоматическое сохранение формы привязывает настройки к пути и имени файла. Если файл заменили или переименовали, форма ищет настройки по новому ключу и не находит старые. Решение — программное сохранение через ХранилищеОбщихНастроек с фиксированным строковым ключом, не зависящим от имени файла.

Как сохранить таблицу значений из обработки?

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

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

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

Где физически хранятся настройки, сохранённые платформой?

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

Как очистить сохранённые настройки обработки?

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

Работает ли сохранение настроек в тонком и веб-клиенте?

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