Как отключить обмен с сайтом 1С-Битрикс на копиях информационной базы 1С:ERP

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

При создании тестовых копий рабочих баз 1С:ERP возникает критически важная задача: предотвратить случайную выгрузку или загрузку данных на боевой сайт. Если регламентные задания обмена продолжат выполняться в копии, тестовые данные могут перезаписать актуальные цены, остатки и заказы на рабочем портале 1С-Битрикс.

Разберем основные причины, почему самописные проверки могут не срабатывать, а также рассмотрим надежные способы полной блокировки обмена на тестовых контурах.

Разбор частой ошибки при проверке строки соединения

Проанализируем типичную ошибку при попытке программно определить имя сервера или базы данных. Разработчики часто пишут условие следующего вида:


// Ошибочный вариант:
Если СтрНайти(СтрокаСоединенияИнформационнойБазы(), "ИмяРабочегоСервера") Тогда
    // Запуск обмена
Иначе
    Возврат;
КонецЕсли;

Выясним причину, почему такая конструкция не работает. Функция платформы СтрНайти() (или устаревшая Найти()) возвращает число — номер позиции первого вхождения подстроки, либо 0, если подстрока не найдена. В платформе 1С числовое значение не преобразуется автоматически в логический тип Булево.

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

Посмотрим на корректный синтаксис сравнения с числом:


СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
Если СтрНайти(СтрокаСоединения, "Srvr=""1c-prod"";Ref=""erp_prod"";") > 0 Тогда
    // Это рабочая база: выполняем обмен
Иначе
    // Это копия: прерываем выполнение
    Возврат;
КонецЕсли;

Способ 1. Использование штатного механизма БСП по блокировке внешних ресурсов

Конфигурация 1С:ERP построена на базе Библиотеки стандартных подсистем (БСП). В ней присутствует готовый механизм защиты от непреднамеренной работы копии базы с внешними сервисами.

Разберем по шагам, как работает этот функционал:

  1. При первом запуске базы после восстановления из резервной копии на новом сервере платформа или БСП фиксирует изменение параметров размещения и выводит диалоговое окно с вопросом о назначении базы.
  2. Администратор выбирает вариант «Это копия информационной базы».
  3. Система автоматически блокирует регламентные задания, отправку почты и интеграции с внешними системами.

Если вам требуется добавить проверку в кастомный модуль обмена Битрикс, используйте типовой метод БСП перед выполнением любых сетевых запросов:


Если БлокировкаРаботыСВнешнимиРесурсами.РаботаСВнешнимиРесурсамиЗаблокирована() Тогда
    // Работа с сайтом заблокирована для копии
    Возврат;
КонецЕсли;

Способ 2. Проверка соответствия эталонной строке соединения через константу

Рассмотрим надежный программный способ контроля. Чтобы не «зашивать» имя сервера жестко в код конфигурации, заведем константу, например, СтрокаСоединенияРабочейБазы (тип Строка).

  1. В рабочей базе заполняем значение константы текущей строкой подключения, полученной через СтрокаСоединенияИнформационнойБазы().
  2. В общем модуле перед запуском процедур экспорта/импорта сравниваем текущую строку соединения со значением из базы:

ТекущаяСтрока = СтрокаСоединенияИнформационнойБазы();
ЭталоннаяСтрока = Константы.СтрокаСоединенияРабочейБазы.Получить();

Если Не ЗначениеЗаполнено(ЭталоннаяСтрока) Или ТекущаяСтрока <> ЭталоннаяСтрока Тогда
    ЗаписьЖурналаРегистрации(
        "Обмен с сайтом",
        УровеньЖурналаРегистрации.Предупреждение,,,
        "Попытка запуска обмена на непроизводственной базе: " + ТекущаяСтрока
    );
    Возврат;
КонецЕсли;

При разворачивании бэкапа на тестовом сервере значение СтрокаСоединенияИнформационнойБазы() изменится, проверка вернет Ложь, и обмен будет безопасно прерван.

Способ 3. Административное и сетевое отключение

Помимо проверок на уровне программного кода 1С, рекомендуется использовать системные меры защиты:

  1. Блокировка регламентных заданий в кластере: В консоли администрирования серверов 1С Предприятия в свойствах информационной базы установите флаг «Блокировка регламентных заданий включена». Это гарантирует, что фоновые задания не запустятся автоматически.
  2. Подмена учетных данных в узлах обмена: В скриптах автоматического развертывания тестовых контуров предусмотрите очистку или замену паролей и адресов подключения к CMS Битрикс в настройках обмена.
  3. Изоляция на уровне сети (Firewall/hosts): На тестовом сервере заблокируйте исходящие соединения к боевому веб-сайту или перенаправьте доменное имя сайта на локальный адрес 127.0.0.1 в файле hosts. В этом случае даже при ручном запуске разработчиком обмен завершится сетевой ошибкой и не затронет боевой сайт.
← На главную