Как программно закрыть окно «Это копия информационной базы» в 1С?

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

При работе с восстановленными копиями информационной базы 1С:Предприятие часто возникает системное окно с предупреждением «Это копия информационной базы». Этот механизм встроен в платформу для защиты от случайного выполнения регламентных заданий или обменов данными, которые могут нанести вред реальной «боевой» системе. Однако при автоматизации тестирования или ежедневной работе с копиями это окно может мешать пользователям. Рассмотрим, как решить эту задачу профессионально.

Почему эмуляция нажатий клавиш не всегда эффективна

Многие разработчики начинают с попыток использовать Wscript.Shell или SendKeys для имитации нажатия клавиши ESC. Мы проанализировали этот подход и пришли к выводу, что он является крайне ненадежным по следующим причинам:

Программное решение через методы БСП

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

Рассмотрим, как это реализовать в коде вашей внешней обработки или при запуске системы:

Для предотвращения появления окна и корректной обработки статуса базы используйте следующий метод:


// Вызов метода общего модуля для подтверждения статуса базы
БлокировкаРаботыСВнешнимиРесурсами.ЗапретитьРаботуСВнешнимиРесурсами();

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

Дополнительные проверки в вашем коде

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


Функция РаботаСВнешнимиРесурсамиЗаблокирована() Экспорт
    // Проверяем параметр сеанса, установленный платформой или БСП
    Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;
КонецФункции

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

Важные замечания по настройке

  1. Права доступа: Окно появляется преимущественно у пользователей с ролью «Полные права». Убедитесь, что у обычных пользователей в копии базы ограничены права — это не только уберет лишние сообщения, но и повысит общую безопасность системы.
  2. Параметры запуска: Параметр командной строки /AllowExecuteScheduledJobs -Off полезен для запрета фоновых заданий, но он не отменяет работу интерактивного диалога при входе администратора в систему. Поэтому основным методом остается программное обращение к модулю БлокировкаРаботыСВнешнимиРесурсами.
  3. Конфигурация: Если вы работаете с самописной конфигурацией, где нет БСП, вы можете самостоятельно реализовать константу или параметр сеанса, который будет проверять статус базы, однако использование готового функционала БСП всегда предпочтительнее для поддержки актуальности системы.

Используя предложенный подход, вы сможете полностью автоматизировать процесс работы с копиями баз, избавив себя и пользователей от необходимости совершать лишние клики при каждом входе в систему.

← На главную