Разработка и Конфигурация · 12 мин
Как сохранить значения обработки 1С
Как сохранить значения обработки 1С: стандартное хранилище настроек, сохранение в файл, программные методы и типичные ошибки при работе с обработками.
Обработки в 1С активно используются для пакетных операций: загрузки данных, группового изменения реквизитов, выгрузки отчётов. Почти каждая обработка содержит десятки настроек — периоды, отборы, пути к файлам, флажки режимов. Если эти значения не сохранять, пользователю придётся заполнять форму заново при каждом запуске, что ведёт к потере времени и ошибкам ввода.
Платформа 1С:Предприятие предлагает несколько штатных механизмов хранения значений обработки: стандартное хранилище настроек формы, системное хранилище общих настроек, сохранение в файл и программное сохранение через объекты платформы. Выбор зависит от того, где запускается обработка (в составе конфигурации или как внешний файл), кто работает с настройками (один пользователь или несколько) и нужно ли переносить настройки между базами.
Ниже разобраны практические способы сохранения значений обработки с конкретными действиями, ограничениями каждого подхода и проверкой результата.
Какие значения обработки нужно сохранять
Прежде чем выбирать механизм, определите состав сохраняемых данных. Обычно в обработке сохраняют: значения реквизитов формы (периоды, организации, склады), таблицы отборов и параметров, пути к файлам обмена, флажки режимов выполнения, а также результаты работы, если обработка ведёт журнал.
Не стоит сохранять служебные данные, которые легко вычисляются заново: текущую дату, временные таблицы, промежуточные результаты запросов. Чем меньше объём сохраняемых настроек, тем быстрее работает загрузка и меньше риск конфликтов версий.
Отдельно выделите настройки, которые должны быть общими для всех пользователей (например, путь к сетевому каталогу обмена), и персональные (последний выбранный контрагент, период по умолчанию). Это определит, где хранить каждую группу значений.
Для внешних обработок нет объекта метаданных — сохранение в форме работает иначе
Общие настройки требуют ключей с разделением по пользователям
Если да — выбирайте сохранение в файл
Таблицы значений сохраняют через ЗначениеВСтрокуВнутр или ЗначениеВФайл
Способ 1. Автоматическое сохранение настроек формы
Управляемая форма в 1С умеет сама сохранять значения реквизитов между сеансами. Для этого в конфигураторе откройте форму обработки, перейдите в её свойства и включите свойство «АвтоматическоеСохранениеДанныхВНастройках» в режим «Использовать». Затем у нужных реквизитов формы установите флажок «Сохраняемые данные».
Платформа сохранит значения в стандартное хранилище настроек форм при закрытии и восстановит при следующем открытии. Пользователю ничего делать не нужно — механизм работает прозрачно. Настройки хранятся в разрезе пользователя и конкретной формы.
Ограничение способа: для внешних обработок, открываемых через «Файл → Открыть», автоматическое сохранение может работать нестабильно, потому что ключ объекта формируется по пути к файлу. При перемещении или переименовании файла настройки «потеряются» — фактически они останутся в хранилище, но форма их не найдёт.
Способ 2. Системное хранилище общих настроек
Наиболее универсальный программный способ — объект ХранилищеОбщихНастроек. Он позволяет сохранить произвольное значение по ключу и загрузить его позже. Данные хранятся в информационной базе, привязаны к пользователю и не зависят от расположения файла обработки.
Типовой приём — сохранять настройки при закрытии формы и восстанавливать при создании формы на сервере:
// При закрытии формы
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
СохранитьНастройкиНаСервере();
КонецПроцедуры
&НаСервере
Процедура СохранитьНастройкиНаСервере()
Настройки = Новый Структура;
Настройки.Вставить("Период", Период);
Настройки.Вставить("Организация", Организация);
Настройки.Вставить("ПутьКФайлу", ПутьКФайлу);
ХранилищеОбщихНастроек.Сохранить("МояОбработка", "НастройкиФормы", Настройки);
КонецПроцедуры
// При открытии
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Настройки = ХранилищеОбщихНастроек.Загрузить("МояОбработка", "НастройкиФормы");
Если ТипЗнч(Настройки) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтаФорма, Настройки);
КонецЕсли;
КонецПроцедуры
Ключ объекта (в примере «МояОбработка») должен быть уникальным и постоянным. Если вы измените ключ при обновлении обработки, старые настройки перестанут подхватываться. Для таблиц значений перед сохранением используйте сериализацию через ЗначениеВСтрокуВнутр, а при загрузке — ЗначениеИзСтрокиВнутр.
ХранилищеОбщихНастроек.Сохранить("КлючОбъекта", "КлючНастроек", Значение);Способ 3. Сохранение значений в файл
Когда настройки нужно переносить между базами или передавать коллегам, используйте сохранение в файл. Платформа предоставляет функцию ЗначениеВФайл(ИмяФайла, Значение), которая сериализует произвольное значение, включая структуры, массивы и таблицы значений.
// Сохранение
ЗначениеВФайл("C:\Настройки\МояОбработка.xml", Настройки);
// Восстановление
Если ФайлСуществует Тогда
Настройки = ЗначениеИзФайла("C:\Настройки\МояОбработка.xml");
КонецЕсли;
Альтернатива — сохранение в XML или JSON через объекты ЗаписьXML и ЗаписьJSON. Этот вариант удобен, когда файл настроек должен быть читаемым человеком или редактироваться вручную. Минус — придётся самостоятельно описывать структуру каждого параметра.
Учитывайте права доступа: при работе в клиент-серверном режиме файловые операции на сервере выполняются от имени пользователя службы агента сервера 1С. Сетевые пути лучше указывать в формате UNC и проверять доступность каталога перед записью.
Сравнение способов хранения
Простейший вариант без кода; не подходит для внешних обработок с меняющимся путём и для данных вне формы
Универсально, привязка к пользователю, работает везде; настройки не переносятся между базами штатно
Переносится между базами и пользователями; требует управления путями и правами доступа
Общие настройки для всех пользователей с контролем через интерфейс; требует доработки конфигурации
Способ 4. Хранение настроек в регистре сведений
Если обработка встроена в конфигурацию и настройки должны быть общими для всех пользователей или поддаваться централизованному администрированию, создайте периодический или обычный регистр сведений. Измерение — например, «Пользователь» или «Организация», ресурсы — значения настроек или одно ресурсное поле типа ХранилищеЗначения с сериализованной структурой.
Плюс подхода — настройки видны администратору, участвуют в обменах и резервном копировании вместе с данными, их можно редактировать через обычную форму списка. Минус — требуется изменение конфигурации, что не всегда допустимо на поддержке без снятия с замка.
Для внешних обработок этот способ работает только если в конфигурации уже есть подходящий регистр (например, «ПользовательскиеНастройки» в некоторых типовых решениях) или подсистема дополнительных отчётов и обработок БСП, которая умеет хранить настройки сама.
Как выбрать способ
Проверка результата и типичные ошибки
После внедрения сохранения проверьте полный цикл: заполните форму, закройте обработку, откройте заново — значения должны восстановиться. Затем проверьте под другим пользователем: его настройки не должны пересекаться с чужими. Для файлового способа дополнительно проверьте сценарий отсутствия файла — обработка должна запуститься со значениями по умолчанию, а не упасть с ошибкой.
Типичные ошибки разработчиков при сохранении значений обработок:
Проверка корректности работы механизма
Контрольные точки помогут отличить рабочий механизм от скрытых проблем, которые проявятся только у пользователей.
Как проверить результат
Все поля формы заполнены значениями прошлого сеанса
Часть полей пустая или содержит устаревшие значения
Отображаются его собственные настройки или значения по умолчанию
Подтягиваются чужие настройки — ключ не разделён по пользователям
Обработка открывается со значениями по умолчанию без ошибок
Ошибка обращения к полям Неопределено
Настройки подхватываются, новые параметры получают значения по умолчанию
Настройки сбрасываются или структура не совместима со старой
При обновлении обработки с изменённым составом настроек предусмотрите миграцию: при загрузке проверяйте наличие каждого ключа в структуре через Свойство() и подставляйте значение по умолчанию, если ключа нет. Это защитит от ошибок у пользователей со старыми сохранёнными настройками.
Что важно запомнить
Для встроенных обработок включайте автосохранение формы, для внешних — программное сохранение через ХранилищеОбщихНастроек с постоянным ключом. Переносимые настройки храните в файле, общие — в регистре сведений. Всегда обрабатывайте первый запуск и проверяйте типы загруженных данных.
Частые вопросы
Почему настройки внешней обработки пропадают после обновления файла?
Автоматическое сохранение формы привязывает настройки к пути и имени файла. Если файл заменили или переименовали, форма ищет настройки по новому ключу и не находит старые. Решение — программное сохранение через ХранилищеОбщихНастроек с фиксированным строковым ключом, не зависящим от имени файла.
Как сохранить таблицу значений из обработки?
Сериализуйте таблицу функцией ЗначениеВСтрокуВнутр и сохраните полученную строку в хранилище настроек или файл. При загрузке восстановите таблицу через ЗначениеИзСтрокиВнутр. Альтернатива — ЗначениеВФайл, который сохраняет таблицу напрямую без промежуточной строки.
Можно ли сделать настройки общими для всех пользователей?
Да. В ХранилищеОбщихНастроек метод Сохранить принимает параметр «ИмяПользователя» — если указать его пустым или одним общим значением и загружать с тем же параметром, настройки станут общими. Более управляемый вариант — регистр сведений с формой редактирования для администратора.
Где физически хранятся настройки, сохранённые платформой?
Системные хранилища настроек хранятся внутри информационной базы: в файловом варианте — в файле базы, в клиент-серверном — в служебных таблицах СУБД. Пользователь не работает с ними напрямую, очистка выполняется через администрирование или программно методом Удалить.
Как очистить сохранённые настройки обработки?
Программно — методом ХранилищеОбщихНастроек.Удалить с указанием ключа объекта и настроек. Для автосохранения формы пользователь может сбросить настройки через меню формы «Ещё → Установить стандартные настройки», если команда доступна, либо администратор очищает хранилище через консольные инструменты.
Работает ли сохранение настроек в тонком и веб-клиенте?
ХранилищеОбщихНастроек доступно во всех клиентах, но вызов должен выполняться на сервере — вынесите сохранение и загрузку в серверные процедуры формы. Файловые операции в веб-клиенте ограничены и требуют расширения работы с файлами, поэтому для веб-клиента предпочтительнее хранилище настроек.