Как сохранить данные внешней обработки для использования в регламентных заданиях без изменения конфигурации?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто перед разработчиком встает задача сохранения промежуточных данных, таких как дата последней выгрузки или параметры настройки, внутри внешней обработки. Главная сложность заключается в том, чтобы сделать эти данные доступными не только в интерактивном режиме, но и для РегламентныеЗадания, не прибегая к модификации основной конфигурации (снятию с поддержки). Рассмотрим наиболее эффективные способы решения этой задачи.

Использование безопасного хранилища данных (для конфигураций на БСП)

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

Для реализации этого подхода выполним следующие шаги:

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

Пример кода для записи данных:


УстановитьПривилегированныйРежим(Истина);
// Используем произвольную строку-идентификатор в качестве владельца
ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище("КлючНастройки", ДатаПоследнейВыгрузки);
УстановитьПривилегированныйРежим(Ложь);

Пример кода для чтения данных:


УстановитьПривилегированныйРежим(Истина);
ДатаПоследнейВыгрузки = ОбщегоНазначения.ПрочитатьДанныеИзБезопасноеХранилище("КлючНастройки");
УстановитьПривилегированныйРежим(Ложь);

Важно: убедитесь, что первый параметр функции — это строка или ссылка на объект метаданных, допустимая вашей версией БСП.

Использование настроек пользователя и хранилища системных настроек

Если задача состоит в том, чтобы запомнить пользовательские предпочтения на форме обработки, можно воспользоваться механизмом ХранилищеСистемныхНастроек. Это позволяет сохранять состояние элементов формы автоматически.

Чтобы получить доступ к этим настройкам из регламентного задания, необходимо:

  1. Найти запись в хранилище по ключу объекта и имени пользователя.
  2. Воспользоваться методом ХранилищеСистемныхНастроек.Выбрать().

Рассмотрим структуру получения данных:


Отбор = Новый Структура;
Отбор.Вставить("Пользователь", ИмяПользователя);
Отбор.Вставить("КлючОбъекта", "ВнешняяОбработка.ИмяВашейОбработки.Форма.Форма/ТекущиеДанные");
Выборка = ХранилищеСистемныхНастроек.Выбрать(Отбор);
Если Выборка.Следующий() Тогда
    МойРеквизит = Выборка.Настройки["МойРеквизит"];
КонецЕсли;

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

Рекомендованный подход: Хранилище общих настроек

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

Дополнительные рекомендации

Вне зависимости от выбранного метода, мы настоятельно рекомендуем:

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

← На главную