При работе с системой 1С:Документооборот КОРП 2.1 часто возникает необходимость создания тестовой среды или развертывания копии базы для анализа данных. В таких ситуациях крайне важно предотвратить любое взаимодействие системы с внешним миром: отправку реальных уведомлений пользователям по электронной почте, синхронизацию данных с 1С:ERP или 1С:Бухгалтерией, а также выполнение регламентных заданий, которые могут изменить данные в связанных системах. Разберем подробно, как работает механизм блокировки и как его активировать.
В основе современных конфигураций 1С, включая Документооборот 2.1, лежит Библиотека стандартных подсистем (БСП). Она содержит встроенный механизм защиты, который определяет «подлинность» информационной базы. Система запоминает параметры сервера СУБД и имя базы. Если при запуске эти параметры не совпадают с сохраненными (например, базу восстановили из бэкапа на другом сервере), 1С понимает, что она находится в состоянии копии, и предлагает пользователю выбрать режим работы.
Проанализируем, что именно ограничивает система в режиме блокировки:
Рассмотрим самый простой и штатный способ активации защиты. Как правило, при первом входе администратора в копию базы система сама выводит диалоговое окно с вопросом: «Информационная база перемещена или восстановлена из копии?».
В этом окне необходимо выбрать вариант «Это копия информационной базы». После этого система автоматически установит все необходимые флаги и выведет предупреждающую надпись в заголовке окна.
Если же диалоговое окно не появилось или настройку нужно изменить позже, выполним следующие шаги:
Иногда требуется принудительно задать признак копии без использования интерактивных окон, например, в сценариях автоматического обновления тестовых баз. Разберем, какой метод для этого вызвать. В составе БСП есть программный интерфейс для управления этим состоянием.
Для принудительной установки блокировки мы можем воспользоваться методом общего модуля ОбщегоНазначения. Рассмотрим пример кода, который можно выполнить в консоли кода или во внешней обработке:
// Устанавливаем блокировку работы с внешними ресурсами
ОбщегоНазначения.УстановитьБлокировкуРаботыСВнешнимиРесурсами(Истина);
// Сообщим пользователю об успешном выполнении
Сообщить("База успешно переведена в режим работы с копией. Внешние ресурсы заблокированы.");
Этот метод не просто меняет переменную в памяти, он записывает состояние в параметры работы системы, которые сохраняются между сеансами. После выполнения этого кода работа с почтой и обменами станет недоступна до тех пор, пока администратор явно не снимет блокировку через интерфейс или аналогичным кодом с параметром Ложь.
Выясним причину, по которой система «узнает», что она стала копией. В конфигурациях на БСП существует структура параметров, называемая ПараметрыРаботыСВнешнимиРесурсами. Она хранится либо в константах, либо в скрытых хранилищах настроек (в зависимости от версии БСП в составе вашего Документооборота).
В этой структуре хранятся:
SQL-SERVER-01.DO_CORP_PRODUCTION.При каждом запуске система сравнивает текущие параметры соединения (строку соединения) с теми, что хранятся в этой структуре. Если хотя бы один параметр изменился — БСП считает, что базу перенесли, и включает защитный протокол.
Посмотрим на внешний вид программы после активации режима копии. В 1С:Документооборот 2.1 в верхней части главного окна (в заголовке или под панелью разделов) появится характерная надпись: «Работа с внешними ресурсами заблокирована».
Если вы видите эту надпись, значит:
Важный совет: Если вы проводите тестирование механизмов обмена или почты именно в копии базы, вам придется временно разблокировать работу. В этом случае будьте предельно осторожны: перед разблокировкой рекомендуется изменить адреса электронной почты у тестовых пользователей или использовать «заглушки» для почтового сервера, чтобы реальные письма не покинули пределы тестового контура.
Мы проанализировали ситуацию с блокировкой внешних ресурсов в 1С:Документооборот и убедились, что наиболее надежным способом является использование штатного механизма БСП. Будь то интерактивный выбор при запуске или вызов метода ОбщегоНазначения.УстановитьБлокировкуРаботыСВнешнимиРесурсами(Истина), результат будет один — безопасность ваших данных и спокойствие пользователей основной базы.