Как программно отключить автоматическое резервное копирование в 1С:Розница 2.3

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

При переходе с более старых версий конфигурации 1С:Розница (например, с ветки 2.2 на 2.3) разработчики часто сталкиваются с тем, что привычный код, работающий с формами настроек, перестает функционировать. Одной из типичных задач является программное управление флагом автоматического резервного копирования. Рассмотрим ситуацию, когда при попытке вызвать метод формы ЗаписатьНастройки() система выдает ошибку "Метод не обнаружен", и разберем наиболее эффективные способы решения этой задачи.

Анализ проблемы: почему старый подход перестал работать

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


&НаКлиенте
Процедура ОтключитьКопирование(Команда, ТекущийПользователь)
    Форма = ПолучитьФорму("Обработка.НастройкаРезервногоКопированияИБ.Форма.НастройкаРезервногоКопирования");
    Форма.Объект.ВыполнятьАвтоматическоеРезервноеКопирование = Ложь;
    Форма.ЗаписатьНастройки(ТекущийПользователь);
КонецПроцедуры

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

Если вы столкнулись с ошибкой "Метод не обнаружен", это означает, что процедура ЗаписатьНастройки в модуле формы больше не помечена ключевым словом Экспорт. Конечно, можно внести изменения в типовую конфигурацию и вернуть этот признак, но это «путь в никуда», так как при следующем обновлении настройки могут слететь, а сама архитектура работы с данными станет нестабильной.

Решение №1: Использование программного интерфейса (API) БСП

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


// Получаем текущие настройки из серверного модуля
Настройки = РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования();

// Изменяем нужный параметр в структуре
Настройки.ВыполнятьАвтоматическоеРезервноеКопирование = Ложь;

// Записываем обновленные настройки в базу
РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(Настройки, Пользователи.ТекущийПользователь());

Разберем по шагам, почему этот метод лучше:

  1. Производительность: Нам не нужно загружать форму в память, что экономит ресурсы сервера и клиента.
  2. Надежность: Метод УстановитьНастройкиРезервногоКопирования выполняет не только запись в константы или регистры, но и корректно управляет Регламентными заданиями.
  3. Целостность данных: Система сама проверяет корректность передаваемых параметров в структуре.

Важные нюансы работы с регламентными заданиями

Проанализируем ситуацию глубже. Флаг «Выполнять автоматическое резервное копирование» в 1С тесно связан с регламентным заданием ВыполнениеРезервногоКопированияИБ. Если вы просто измените значение в базе данных напрямую, регламентное задание может остаться включенным и продолжать запускаться по расписанию.

Именно поэтому использование метода РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования является критически важным. При передаче параметра Ложь, этот метод автоматически найдет соответствующее регламентное задание и установит ему признак Использование = Ложь, тем самым гарантированно остановив процесс создания копий.

Особенности для различных вариантов работы

Выясним причину, по которой настройки могут не применяться в некоторых случаях:

Резюме для реализации

Подведем итог. Если вам необходимо программно управлять настройками в 1С:Розница 2.3 и выше, следуйте этой инструкции:

  1. Забудьте про использование функции ПолучитьФорму для решения административных задач.
  2. Используйте структуру, возвращаемую методом ПараметрыРезервногоКопирования() общего модуля РезервноеКопированиеИБСервер.
  3. Модифицируйте поля структуры (например, Периодичность, КоличествоКопий или ВыполнятьАвтоматическоеРезервноеКопирование).
  4. Применяйте изменения через УстановитьНастройкиРезервногоКопирования().

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

← На главную