---
name: bsp-backup
description: "Use this skill when the agent needs to open the infobase backup form from a configuration command, save or load backup settings programmatically, read the current backup schedule or status as a user-facing string, generate a navigation link to the backup data processor, calculate the date of the next automatic backup, suppress backup-related warnings at application start in a non-standard scenario, or implement an override hook that disables backup notifications for specific client configurations. Do not use for routine object recording or safe storage (delegate to bsp-base-common), for scheduled job management (delegate to bsp-longs-and-jobs), for infobase version migration (delegate to bsp-update), or for full-text or DT-file operations outside the BSP backup subsystem."
metadata:
  scope: bsp-3.1.11
  version: "3.1.11"
  layer: L3
  related_subsystems:
    - РезервноеКопированиеИБ
  related_skills:
    - bsp-fundamentals
    - bsp-base-common
    - bsp-longs-and-jobs
---

# bsp-backup — Резервное копирование ИБ

Скил по подсистеме `РезервноеКопированиеИБ` библиотеки стандартных подсистем 3.1.11. Покрывает программный интерфейс файлового резервного копирования «из коробки» (UI-форма, сохранение/чтение настроек, вычисление даты следующего копирования, навигационная ссылка на обработку), а также единственный переопределяемый крючок подсистемы.

Главная задача скила — научить агента отличать «ручной запуск UI-формы» от «программной работы с настройками», знать про разделение «файловый режим / клиент-сервер», не выдумывать несуществующие служебные модули, и корректно переопределять показ предупреждений о необходимости настройки копирования.

## When to use

- Открыть **форму создания/восстановления резервной копии** из прикладной команды, из обработки или из формы объекта — в том числе с предзаполненным каталогом или режимом работы.
- **Сохранить настройки резервного копирования** (расписание, каталог, период хранения, пароль администратора) программно — например, из обработки первоначального заполнения или из сценария миграции.
- **Прочитать текущие настройки** резервного копирования, чтобы показать их в форме, в отчёте или в уведомлении.
- **Получить текущую настройку строкой** — готовую формулировку для UI («копирование по расписанию», «выполняется при завершении работы», «не настроено» и т. п.).
- **Сформировать навигационную ссылку** на обработку резервного копирования (для подстановки в форматированную строку, в оповещение или в email).
- **Вычислить дату следующего автоматического копирования** — например, чтобы показать пользователю в карточке настроек «следующее копирование: …».
- **Переопределить поведение подсистемы** в прикладной конфигурации: отключить показ предупреждений о необходимости настройки копирования (если в компании бэкапы делаются сторонними средствами и предупреждения мешают).

## Не использовать, если

- Нужна **обычная запись/чтение объектов, работа с хранилищем общих настроек, безопасное хранилище, журнал регистрации** — это `bsp-base-common` (`ОбщегоНазначения.ХранилищеОбщихНастроекСохранить`, `ОбщегоНазначения.СообщитьПользователю` и т. п.). Метод `УстановитьНастройкиРезервногоКопирования` — узкоспециализированная обёртка над хранилищем общих настроек с фиксированным ключом `ПараметрыРезервногоКопирования`; для произвольных настроек используйте прямые API из `bsp-base-common`.
- Нужно **создать или изменить регламентное задание** (например, для регулярного архивирования файлов в произвольный каталог через сторонний скрипт) — `bsp-longs-and-jobs` (`РегламентныеЗаданияСлужебный.ДобавитьЗадание` / `ИзменитьЗадание`). Расписание резервного копирования хранится **внутри** настроек подсистемы и редактируется через `ПараметрыРезервногоКопирования`, а не через регламентные задания.
- Нужна **миграция данных при обновлении** или работа с версиями ИБ — `bsp-update` (`ОбновлениеИнформационнойБазы.ЗаписатьДанные`, `ВерсияИБ` и т. п.). Задачи обновления и резервного копирования формально пересекаются в момент «бэкап перед обновлением», но **выполняются разными подсистемами**: бэкап — `РезервноеКопированиеИБ`, обработка — `ОбновлениеИнформационнойБазы`.
- Нужно **выгрузить/загрузить ИБ через `.dt`** вручную, работать с SQL-бэкапами СУБД, монтировать сетевые тома — это вне БСП. Подсистема `РезервноеКопированиеИБ` поддерживает **только** файловый вариант ИБ и использует собственный формат (не `.dt`). В клиент-серверном варианте — настройте резервное копирование средствами СУБД, а в подсистеме оставьте признак «копирование организовано сторонними приложениями» (флаг `РезервноеКопированиеНастроено = Истина` без `ВыполнятьАвтоматическоеРезервноеКопирование`).
- Нужна **настройка подсистемы в дереве метаданных** (внедрение БСП, подключение к прикладной конфигурации) — задача архитектора конфигурации, не покрывается этим скилом.

## Core concepts

### Архитектура подсистемы «Резервное копирование ИБ»

Подсистема обслуживается **семейством** общих модулей `РезервноеКопированиеИБ*` (без префикса, с суффиксами) и двумя обработками. Все методы, которые вызывает прикладной код, находятся в **стабильной** области `Программный интерфейс` модулей `РезервноеКопированиеИБКлиент`, `РезервноеКопированиеИБСервер` и `РезервноеКопированиеИБВызовСервера`. Служебных модулей `*Служебный` в этом семействе **нет** — вся служебная логика встроена в основные модули (см. Anti-patterns).

Полная карта модулей:

| Модуль | Контекст | Назначение |
|---|---|---|
| `РезервноеКопированиеИБКлиент` | Тонкий клиент, Толстый клиент | **Стабильный API**: `ОткрытьФормуРезервногоКопирования`. Служебный интерфейс: обработчики событий подсистем (`ПриНачалеРаботыСистемы`, `ПередЗавершениемРаботыСистемы`, `ПриПроверкеВозможностиРезервногоКопированияВПользовательскомРежиме`, `ПриПредложенииПользователюСоздатьРезервнуюКопию`) и таймер ожидания — ⚠️ вызываются БСП, не из прикладного кода |
| `РезервноеКопированиеИБСервер` | Сервер, Внешнее соединение | **Стабильный API**: `ПараметрыРезервногоКопирования`, `УстановитьНастройкиРезервногоКопирования`, `ТекущаяНастройкаРезервногоКопирования`, `НавигационнаяСсылкаОбработкиРезервногоКопирования`, `СброситьПризнакРезервногоКопирования`. Служебный интерфейс: `ПриЗаполненииСпискаТекущихДел`, `ПриДобавленииПараметровРаботыКлиента`, `ПриВключенииИспользованияПрофилейБезопасности` — ⚠️ для БСП, не для прикладного кода |
| `РезервноеКопированиеИБГлобальный` | Глобальный | Один экспортный метод: `ОбработчикДействийРезервногоКопирования` — глобальный обработчик события. Используется самой БСП, из прикладного кода не вызывается |
| `РезервноеКопированиеИБВызовСервера` | Серверный вызов с клиента | **Стабильный API**: `УстановитьЗначениеНастройки`, `ДатаСледующегоАвтоматическогоКопирования`, `УстановитьДатуПоследнегоНапоминания` — безопасный серверный вызов из клиентского кода формы настроек |
| `РезервноеКопированиеИБКлиентПереопределяемый` | Тонкий клиент, Толстый клиент | **Переопределяемый** крючок: `ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании`. **Не вызывать** — реализовать в одноимённом модуле прикладной конфигурации |
| `РезервноеКопированиеОбластейДанных` | Сервер | Заглушки для модели сервиса (SaaS): `РезервноеКопированиеИспользуется`, `УстановитьФлагАктивностиПользователяВОбласти`, `МенеджерСервисаПоддерживаетРезервноеКопирование`, `ПроксиКонтроляРезервногоКопирования`, `ИмяПодсистемыДляСобытийЖурналаРегистрации`, `НаименованиеФоновогоРезервногоКопирования`. Методы помечены `@skip-warning ПустойМетод` — реализация подставляется в модели сервиса, в локальной ИБ — пустые |
| `РезервноеКопированиеОбластейДанныхКлиент` | Тонкий клиент, Толстый клиент | `ПредложитьПользователюСоздатьРезервнуюКопию` — клиентский сценарий для SaaS, в локальной ИБ не используется |

⚠️ **Не существует** модуля `РезервноеКопированиеИБСервер` (с суффиксом `Сервер`) — он **есть**, но это **сам** стабильный серверный модуль. ⚠️ **Не существует** модулей `РезервноеКопированиеИБСлужебный` и `РезервноеКопированиеИБПереопределяемый`: в этом семействе только `*КлиентПереопределяемый` (для переопределения), а служебная логика встроена в основные модули. ⚠️ **Не существует** модуля `РезервноеКопированиеИБКлиентСервер` (нет общего клиент-серверного кода в этой подсистеме). Перед вызовом сверяйтесь с реальным каталогом общих модулей в выгрузке конфигурации.

### Обработки подсистемы

Подсистема содержит **две** обработки:

- `Обработка.РезервноеКопированиеИБ` — основная форма `РезервноеКопированиеДанных`. Открывается через `ОткрытьФормуРезервногоКопирования`. Поддерживает режимы `ВыполнитьПриЗавершенииРаботы`, ручной запуск, восстановление.
- `Обработка.НастройкаРезервногоКопированияИБ` — форма настроек. Не имеет экспортных методов в общих модулях для прямого открытия — открывается через UI-команду подсистемы или через навигационную ссылку `НавигационнаяСсылкаОбработкиРезервногоКопирования` (для подсистемы это та же обработка, форма `РезервноеКопированиеДанных` с параметром `РежимРаботы`).

### Хранилище настроек

Настройки резервного копирования хранятся в **хранилище общих настроек** подсистемы (ключ `ПараметрыРезервногоКопирования`), плюс дублируются в **константе** `ПараметрыРезервногоКопирования` (тип `ХранилищеЗначения`, сжатие 9) для передачи пользователя при завершении работы. Метод `ПараметрыРезервногоКопирования` возвращает **структуру** (не `ФиксированнаяСтруктура`) с предопределённым набором полей, описанным в `НовыеНастройкиРезервногоКопирования`. Не пытайтесь добавлять собственные поля в эту структуру — метод `УстановитьНастройкиРезервногоКопирования` запишет только фиксированный набор.

### Файловый и клиент-серверный вариант

Подсистема поддерживает **только файловый** вариант ИБ. В клиент-серверном варианте методы `НеобходимостьАвтоматическогоРезервногоКопирования` сразу возвращают `Ложь`, а `ТекущаяНастройкаРезервногоКопирования` выдаёт «Резервное копирование не выполняется (организовано средствами СУБД)». Перед вызовом — проверять `ОбщегоНазначения.ИнформационнаяБазаФайловая()` (см. `bsp-base-common`), иначе сценарий может оказаться бессмысленным.

### Варианты выполнения

`ВариантВыполнения` в настройках — `ПоРасписанию` или `ПриЗавершенииРаботы`. В обоих случаях фактически выполняется **одна и та же** серверная процедура; различие — в том, **когда** инициируется запуск: по таймеру в форме либо при `ПередЗавершениемРаботыСистемы`. Агент не должен программно «выполнять резервное копирование» в обход этих сценариев — метод `ЗавершитьРезервноеКопирование` существует, но находится в `#Область СлужебныйПрограммныйИнтерфейс` (⚠️) и предназначен для обработки результата после выполнения, а не для запуска.

## Key methods

| Метод | Сигнатура | Сервер/Клиент | Стабильность | Назначение | Пример вызова |
|---|---|---|---|---|---|
| `РезервноеКопированиеИБКлиент.ОткрытьФормуРезервногоКопирования` | `ОткрытьФормуРезервногоКопирования(Параметры = Неопределено)` | Клиент | стабильный | Открыть основную форму `РезервноеКопированиеДанных`. `Параметры` — структура (например, `РежимРаботы = "ВыполнитьПриЗавершенииРаботы"`) | `РезервноеКопированиеИБКлиент.ОткрытьФормуРезервногоКопирования(Новый Структура("РежимРаботы", "ВыполнитьПриЗавершенииРаботы"));` |
| `РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования` | `ПараметрыРезервногоКопирования()` | Сервер, Внешнее соединение | стабильный | Прочитать настройки из хранилища. Возвращает структуру с полями `ВыполнятьАвтоматическоеРезервноеКопирование`, `РезервноеКопированиеНастроено`, `РасписаниеКопирования`, `КаталогХраненияРезервныхКопий`, `ПараметрыУдаления`, `ВариантВыполнения`, `АдминистраторИБ` и др. Если сохранённых настроек нет — инициализирует значениями по умолчанию и сохраняет | `Настройки = РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования();` |
| `РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования` | `УстановитьНастройкиРезервногоКопирования(Знач Настройки, Знач Пользователь = Неопределено)` | Сервер, Внешнее соединение | стабильный | Записать настройки. `Настройки` — структура (см. `НовыеНастройкиРезервногоКопирования`); `Пользователь` — если указан, дополнительно сохраняет в константу `ПараметрыРезервногоКопирования` для передачи в фоновый сеанс | `РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(Настройки, ИмяПользователя());` |
| `РезервноеКопированиеИБСервер.ТекущаяНастройкаРезервногоКопирования` | `ТекущаяНастройкаРезервногоКопирования()` | Сервер, Внешнее соединение | стабильный | Вернуть готовую строку-формулировку для UI. Учитывает файловый/клиент-серверный вариант, `ВариантВыполнения`, наличие `РезервноеКопированиеНастроено`. Если настроек нет — «Для настройки резервного копирования обратитесь к администратору.» | `Текст = РезервноеКопированиеИБСервер.ТекущаяНастройкаРезервногоКопирования();` |
| `РезервноеКопированиеИБСервер.НавигационнаяСсылкаОбработкиРезервногоКопирования` | `НавигационнаяСсылкаОбработкиРезервногоКопирования()` | Сервер, Внешнее соединение | стабильный | Получить навигационную ссылку формата `e1cib/app/Обработка.РезервноеКопированиеИБ` для подстановки в форматированную строку, в email-уведомление или в поле «Действие» | `Ссылка = РезервноеКопированиеИБСервер.НавигационнаяСсылкаОбработкиРезервногоКопирования();` |
| `РезервноеКопированиеИБВызовСервера.ДатаСледующегоАвтоматическогоКопирования` | `ДатаСледующегоАвтоматическогоКопирования(ОтложитьРезервноеКопирование = Ложь)` | Серверный вызов (Клиент→Сервер) | стабильный | Рассчитать дату следующего копирования по расписанию. `ОтложитьРезервноеКопирование = Истина` — сдвигает минимальную дату на 1 час вперёд (для кнопки «Отложить») | `ДатаСлед = РезервноеКопированиеИБВызовСервера.ДатаСледующегоАвтоматическогоКопирования();` |
| `РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки` | `УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента)` | Серверный вызов (Клиент→Сервер) | стабильный | Изменить **одно** поле настроек без получения всей структуры. Используется из формы настроек при интерактивной правке | `РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("КаталогХраненияРезервныхКопий", Каталог);` |
| `РезервноеКопированиеИБВызовСервера.УстановитьДатуПоследнегоНапоминания` | `УстановитьДатуПоследнегоНапоминания(ДатаНапоминания)` | Серверный вызов (Клиент→Сервер) | стабильный | Зафиксировать дату последнего напоминания пользователю о необходимости настроить копирование (используется БСП, реже — прикладным кодом) | `РезервноеКопированиеИБВызовСервера.УстановитьДатуПоследнегоНапоминания(ТекущаяДатаСеанса());` |
| `РезервноеКопированиеИБКлиентПереопределяемый.ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании` | `ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании(ПоказыватьПредупреждение)` | Клиент | стабильный (переопределение) | **Не вызывать** — реализовать в одноимённом модуле прикладной конфигурации. Установить `ПоказыватьПредупреждение = Ложь`, чтобы БСП не показывала баннеры о необходимости настроить копирование | Реализация в `РезервноеКопированиеИБКлиентПереопределяемый` модуле прикладной конфигурации |
| `РезервноеКопированиеИБСервер.СброситьПризнакРезервногоКопирования` | `СброситьПризнакРезервногоКопирования()` | Сервер, Внешнее соединение | стабильный | Сбросить `ПроведеноКопирование` в настройках (после восстановления из копии). Также записывает операцию в центр мониторинга при наличии подсистемы | `РезервноеКопированиеИБСервер.СброситьПризнакРезервногоКопирования();` |

## Patterns

### 1. Программное открытие формы копирования из прикладной команды

```bsl
// В обработчике команды формы (клиент)
&НаКлиенте
Процедура СоздатьРезервнуюКопию(Команда)
    Если ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда
        РезервноеКопированиеИБКлиент.ОткрытьФормуРезервногоКопирования();
    Иначе
        // В клиент-серверном варианте БСП UI-форма не используется
        ПоказатьПредупреждение(,
            НСтр("ru = 'В клиент-серверном варианте резервное копирование выполняется средствами СУБД.'"));
    КонецЕсли;
КонецПроцедуры
```

`ОткрытьФормуРезервногоКопирования` — единственная стабильная клиентская точка входа подсистемы. Без предварительной проверки `ИнформационнаяБазаФайловая()` форма откроется «пустой».

### 2. Сохранение настроек копирования из прикладной обработки

```bsl
// На сервере
Настройки = РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования();
Настройки.ВыполнятьАвтоматическоеРезервноеКопирование = Истина;
Настройки.ВариантВыполнения = "ПоРасписанию";
Настройки.РасписаниеКопирования = ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(
    НовоеРасписание);
Настройки.КаталогХраненияРезервныхКопий = "D:\Backups";
Настройки.РезервноеКопированиеНастроено = Истина;
РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(Настройки);
```

Всегда читайте настройки через `ПараметрыРезервногоКопирования` перед изменением — структура содержит обязательные поля, и `УстановитьНастройкиРезервногоКопирования` ожидает полный набор. **Не собирайте структуру с нуля** — потеряете значения по умолчанию (параметры удаления, флаги `РезервноеКопированиеНастроено` и т. п.).

### 3. Отображение статуса копирования в карточке настроек

```bsl
// На сервере
ТекстСтатуса = РезервноеКопированиеИБСервер.ТекущаяНастройкаРезервногоКопирования();
НавигационнаяСсылка = РезервноеКопированиеИБСервер.НавигационнаяСсылкаОбработкиРезервногоКопирования();

// В форматированной строке / поле HTML
СтрокаHTML = "<a href='" + НавигационнаяСсылка + "'>" + ТекстСтатуса + "</a>";
```

`ТекущаяНастройкаРезервногоКопирования` возвращает **локализованный** текст, готовый к показу пользователю. Не пытайтесь собрать формулировку самостоятельно через проверки `ВыполнятьАвтоматическоеРезервноеКопирование` и `ВариантВыполнения` — это приведёт к расхождению формулировок между подсистемой и прикладным кодом.

### 4. Показ даты следующего копирования в форме

```bsl
// В форме настроек, при обновлении реквизита расписания
&НаКлиенте
Процедура РасписаниеКопированияПриИзменении(Элемент)
    ДатаСледующего = РезервноеКопированиеИБВызовСервера.ДатаСледующегоАвтоматическогоКопирования();
    Элементы.ДатаСледующегоКопирования.Заголовок =
        НСтр("ru = 'Следующее копирование: %1'") + " " + Формат(ДатаСледующего, "ДФ='dd.MM.yyyy HH:mm'");
КонецПроцедуры
```

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

### 5. Переопределение: отключение показа предупреждений о настройке

Если в компании бэкапы выполняются сторонними средствами и стандартные предупреждения БСП «Настройте резервное копирование» мешают пользователям — реализуйте переопределяемый крючок в **прикладном** модуле `РезервноеКопированиеИБКлиентПереопределяемый`:

```bsl
// В модуле РезервноеКопированиеИБКлиентПереопределяемый прикладной конфигурации
Процедура ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании(ПоказыватьПредупреждение) Экспорт
    ПоказыватьПредупреждение = Ложь;
КонецПроцедуры
```

Проверяйте, что подсистема `ТекущиеДела` подключена (иначе переопределение не вызывается). Сама процедура **не вызывается** из прикладного кода — это «крючок», вызываемый БСП при старте сеанса.

## Anti-patterns

### ❌ Вызывать несуществующий `РезервноеКопированиеИБСлужебный`

```bsl
// ❌ ОШИБКА: модуль не существует
Параметры = РезервноеКопированиеИБСлужебный.ПолучитьВнутренниеНастройки();
```

```bsl
// ✅ Стабильный API — в основном модуле РезервноеКопированиеИБСервер
Настройки = РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования();
```

В семействе `РезервноеКопированиеИБ*` **нет** модуля `*Служебный`. Служебная логика встроена в `РезервноеКопированиеИБСервер` (в `#Область СлужебныйПрограммныйИнтерфейс`). По аналогии с `РегламентныеЗаданияСлужебный`, который существует, — здесь другой дизайн: меньше модулей, больше областей внутри основного.

### ❌ Вызывать переопределяемый модуль как обычный

```bsl
// ❌ ОШИБКА КОМПИЛЯЦИИ/ЛОГИКИ: модуль *Переопределяемый не предназначен для вызова
Результат = РезервноеКопированиеИБКлиентПереопределяемый.ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании(Ложь);
```

```bsl
// ✅ Реализуйте одноимённую процедуру в прикладном модуле — БСП вызовет её сама
// В модуле РезервноеКопированиеИБКлиентПереопределяемый прикладной конфигурации:
Процедура ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании(ПоказыватьПредупреждение) Экспорт
    ПоказыватьПредупреждение = Ложь;
КонецПроцедуры
```

Переопределяемые модули `*Переопределяемый` / `*КлиентПереопределяемый` в БСП содержат «крючки» — экспортные процедуры, которые БСП **вызывает** из своих подсистем, а прикладной код должен **реализовать** в одноимённом модуле своей конфигурации. Прямой вызов из прикладного кода не имеет смысла (БСП всё равно вызовет вашу реализацию).

### ❌ Собирать структуру настроек «с нуля»

```bsl
// ❌ Потеряются значения по умолчанию и обязательные поля
Настройки = Новый Структура;
Настройки.Вставить("ВыполнятьАвтоматическоеРезервноеКопирование", Истина);
Настройки.Вставить("РасписаниеКопирования", НовоеРасписание);
РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(Настройки);
```

```bsl
// ✅ Всегда читайте текущие настройки, затем изменяйте нужные поля
Настройки = РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования();
Настройки.ВыполнятьАвтоматическоеРезервноеКопирование = Истина;
Настройки.РасписаниеКопирования = НовоеРасписание;
РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(Настройки);
```

Структура настроек содержит 17+ полей (см. `НовыеНастройкиРезервногоКопирования`): `ПараметрыУдаления`, `ПроведеноКопирование`, `ПроведеноВосстановление`, `РезультатКопирования`, `ИмяФайлаРезервнойКопии`, `ПроцессВыполняется` и др. Сборка с нуля приведёт к ошибкам при последующем чтении и сбоям в логике подсистемы.

### ❌ Использовать форму копирования в клиент-серверном варианте

```bsl
// ❌ В клиент-серверном варианте БСП UI-форма копирования бесполезна —
    // подсистема не умеет делать копию, а обработка открывается «пустой»
РезервноеКопированиеИБКлиент.ОткрытьФормуРезервногоКопирования();
```

```bsl
// ✅ Проверяйте вариант ИБ перед открытием формы
Если ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда
    РезервноеКопированиеИБКлиент.ОткрытьФормуРезервногоКопирования();
Иначе
    // В клиент-серверном — настраивайте средствами СУБД,
    // а в подсистеме оставьте признак "организовано сторонними приложениями"
    Настройки = РезервноеКопированиеИБСервер.ПараметрыРезервногоКопирования();
    Настройки.РезервноеКопированиеНастроено = Истина;
    РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(Настройки);
КонецЕсли;
```

`ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая` — платформенно-обёрточный метод, подробности в `bsp-base-common`. В клиент-серверном варианте `ТекущаяНастройкаРезервногоКопирования` выдаёт «организовано средствами СУБД», а UI-форма копирования имеет смысл только для файловой ИБ.

### ❌ Программно вызывать `ЗавершитьРезервноеКопирование`

```bsl
// ❌ Метод находится в #Область СлужебныйПрограммныйИнтерфейс — ⚠️
    // обратная совместимость не гарантируется
РезервноеКопированиеИБСервер.ЗавершитьРезервногоКопирования(Результат);
```

```bsl
// ✅ Программный запуск резервного копирования не предусмотрен:
    // инициируйте его через UI (ОткрытьФормуРезервногоКопирования)
    // или через штатный сценарий при завершении работы.
    // Для принудительного сброса признака после восстановления — СброситьПризнакРезервногоКопирования
РезервноеКопированиеИБСервер.СброситьПризнакРезервногоКопирования();
```

`ЗавершитьРезервногоКопирования(Результат, ИмяФайлаРезервнойКопии = "")` — обработчик результата **внутри** сценария, который запустила БСП. Из прикладного кода напрямую вызывать не нужно; если нужно сбросить состояние после восстановления — `СброситьПризнакРезервногоКопирования` (стабильный API).

## How to explore deeper

### Какие общие модули изучить

- `РезервноеКопированиеИБКлиент` — клиентский стабильный API (`ОткрытьФормуРезервногоКопирования`) и обработчики событий подсистем (`ПриНачалеРаботыСистемы`, `ПередЗавершениемРаботыСистемы`).
- `РезервноеКопированиеИБСервер` — серверный стабильный API (`ПараметрыРезервногоКопирования`, `УстановитьНастройкиРезервногоКопирования`, `ТекущаяНастройкаРезервногоКопирования`, `НавигационнаяСсылкаОбработкиРезервногоКопирования`, `СброситьПризнакРезервногоКопирования`) и служебный интерфейс (`ПриЗаполненииСпискаТекущихДел`, `ПриДобавленииПараметровРаботыКлиента`, `ПриВключенииИспользованияПрофилейБезопасности`).
- `РезервноеКопированиеИБГлобальный` — глобальный обработчик `ОбработчикДействийРезервногоКопирования`, используется самой БСП.
- `РезервноеКопированиеИБВызовСервера` — безопасный серверный вызов из клиентского кода формы настроек (`УстановитьЗначениеНастройки`, `ДатаСледующегоАвтоматическогоКопирования`, `УстановитьДатуПоследнегоНапоминания`).
- `РезервноеКопированиеИБКлиентПереопределяемый` — единственный переопределяемый крючок подсистемы (`ПриОпределенииНеобходимостиПоказаПредупрежденийОРезервномКопировании`).
- `РезервноеКопированиеОбластейДанных` и `РезервноеКопированиеОбластейДанныхКлиент` — заглушки для SaaS (модели сервиса), в локальной ИБ не используются.

### Grep-шаблоны

```text
# Найти стабильный API в модуле (для оценки размера API)
^(Функция|Процедура) [А-Я][А-Яа-яA-Za-z_]+\(.*\) Экспорт

# Найти обработчики событий подсистем (служебный интерфейс)
^// См\. .*\.При

# Найти переопределяемые крючки
^(Функция|Процедура) ПриОпределении

# Проверить, что модуль не существует (должно вернуть 0)
^(Функция|Процедура) [А-Я]  РезервноеКопированиеИБСлужебный
```

### На что обратить внимание в дереве метаданных

- **Обработки** `Обработка.РезервноеКопированиеИБ` (форма `РезервноеКопированиеДанных`) и `Обработка.НастройкаРезервногоКопированияИБ` — обе используются подсистемой.
- **Константа** `ПараметрыРезервногоКопирования` (тип `ХранилищеЗначения`) — хранит данные пользователя для передачи в фоновый сеанс.
- **Общая команда** `ПоказатьРезультатРезервногоКопирования` — открывает результат последнего копирования.
- **Роли** `АдминистраторСистемы` (для выполнения копирования) и проверки `ПравоДоступа("Просмотр", Метаданные.Обработки.НастройкаРезервногоКопированияИБ)` (для показа в «Текущих делах»).
- **Подписки на события** — отсутствуют (подсистема работает через глобальный обработчик `РезервноеКопированиеИБГлобальный.ОбработчикДействийРезервногоКопирования`).
