При работе с базами данных 1С:Предприятие часто возникает ситуация, когда необходимо развернуть тестовую среду или сделать архивную копию для анализа данных. В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), предусмотрен защитный механизм, который при изменении расположения базы предлагает пользователю выбрать: «Информационная база перемещена» или «Это копия информационной базы». Однако случаются сбои, когда этот диалог не появляется автоматически, и база продолжает работать в обычном режиме, что чревато нежелательной отправкой писем клиентам, синхронизацией с реальными сайтами или выполнением регламентных заданий. В рамках данной статьи мы разберем, как принудительно включить этот режим и обеспечить безопасность ваших данных.
Прежде чем переходить к техническим решениям, проанализируем, какие функции выполняет этот признак. Когда база помечается как копия, система автоматически:
Рассмотрим подробнее способы принудительной активации этого режима, если стандартное окно выбора не появилось при запуске.
Если штатный механизм определения перемещения базы не сработал, мы можем запустить его вручную, написав небольшую обработку. Это самый надежный метод, так как он задействует стандартные алгоритмы БСП. Разберем создание такой обработки по шагам.
Создадим новую внешнюю обработку и добавим в неё форму. В модуле формы в обработчике события ПриОткрытии пропишем следующий код:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПараметрыФормы = Новый Структура("ПринятиеРешенияОБлокировке", Истина);
ОткрытьФорму("ОбщаяФорма.БлокировкаРаботыСВнешнимиРесурсами", ПараметрыФормы);
Отказ = Истина; // Закрываем саму форму обработки сразу после вызова диалога
КонецПроцедуры
Этот код принудительно открывает системное окно, где вы сможете нажать кнопку «Это копия информационной базы». После этого система сама пропишет необходимые параметры в хранилище настроек и установит блокировки.
В современных версиях конфигураций (например, БП 3.0, ЗУП 3.1, УТ 11) существует специальный программный интерфейс для управления этим состоянием. Проанализируем ситуацию, когда нам нужно программно установить признак без участия пользователя. Для этого можно использовать методы общего модуля БлокировкаРаботыСВнешнимиРесурсами.
Вызов метода выглядит следующим образом:
// Установка признака копии программно на стороне сервера
БлокировкаРаботыСВнешнимиРесурсами.УстановитьПризнакКопииИнформационнойБазы(Истина);
// Если требуется дополнительно заблокировать работу с внешними ресурсами
БлокировкаРаботыСВнешнимиРесурсами.ЗаблокироватьРаботуСВнешнимиРесурсами();
Данный подход полезен при автоматизированном развертывании баз из бэкапов скриптами, когда нет возможности интерактивно подтвердить статус базы.
Рассмотрим специфику файлового варианта работы. Система определяет изменение расположения базы, сравнивая текущий путь к файлу 1Cv8.1CD с тем, который был сохранен ранее. Если вы хотите, чтобы при следующем запуске система гарантированно спросила о статусе базы, попробуйте следующий метод:
DoNotCopy.txt (если он существует) и удалите его или переименуйте.Если вам не требуется программный код, и вы хотите решить задачу через пользовательский интерфейс, выясним, где находятся нужные настройки. В большинстве современных конфигураций путь следующий:
Администрирование — Обслуживание — Регламентные операции — Блокировка работы с внешними ресурсами.
Если база уже распознана как копия, там будет кнопка «Разблокировать работу с внешними ресурсами». Если же вы хотите, напротив, перевести базу в режим копии (заблокировать ресурсы), а кнопки нет, это означает, что система считает базу «оригиналом». В этом случае эффективнее всего воспользоваться Способом 1. Для гибкой настройки доступа к сервисам на тестовом и продуктовом контурах также можно использовать инструмент для управления блокировкой работы с внешними ресурсами.
Иногда пользователю требуется только визуальное обозначение [КОПИЯ] в заголовке окна, а блокировка заданий уже выполнена через консоль кластера серверов. В таком случае мы можем изменить заголовок вручную через настройки программы.
Выполним следующие действия:
[КОПИЯ].Важно: этот способ меняет только визуальное представление и никак не влияет на работу планировщика задач или сетевые соединения. Для автоматического отображения названия базы в заголовках окон можно использовать утилиту для переименования открытых окон 1С.
Проанализируем причины, по которым автоматический диалог может отсутствовать даже при явном копировании базы:
СтандартныеПодсистемыСервер была изменена логика функции ПараметрыРаботыИнформационнойБазы, система может перестать видеть изменения уникального идентификатора базы в кластере 1С.ПолныеПрава. Обычный пользователь его не увидит, и база продолжит работать в неопределенном состоянии.Мы рассмотрели различные варианты принудительной установки признака копии. Наиболее правильным и комплексным решением для программиста является использование Способа 1 (вызов общей формы через обработку), так как он корректно инициализирует все внутренние переменные БСП. Для системных администраторов при работе с SQL-версиями рекомендуется после восстановления базы из бэкапа проверять состояние блокировки регламентных заданий через консоль администрирования серверов 1С, так как это является «первой линией обороны» против нежелательной активности копии базы.