Как отключить или закрыть всплывающие окна в 1С при запуске из командной строки?

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

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

Ограничения ключей командной строки платформы

Выясним причину, по которой стандартные параметры запуска не закрывают интерактивные диалоги конфигурации. Платформа 1С предоставляет служебные ключи, такие как /DisableStartupMessages и /DisableStartupDialogs. Однако важно понимать разделение уровней работы системы:

  1. Уровень платформы: Ключ /DisableStartupMessages подавляет исключительно системные диалоговые окна самой платформы (сообщения о нештатном завершении предыдущего сеанса, служебные запросы реиндексации или реструктуризации).
  2. Уровень прикладной конфигурации: Формы проверки версии платформы, предупреждения об обновлении конфигурации или информационные окна вызываются прикладным кодом (в процедурах ПриНачалеРаботыСистемы, ПередНачаломРаботыСистемы или подсистемах БСП). Платформа не имеет универсального ключа, способного заблокировать исполнение произвольного прикладного кода, открывающего формы.

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

Решение 1. Передача служебного флага через параметр /C

Для выборочного отключения проверок при автоматическом запуске используем параметр командной строки /C <Строка>. Переданная строка становится доступной внутри сеанса 1С через свойство глобального контекста ПараметрыЗапуска.

Посмотрим на пример строки запуска в командном файле:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\Accounting" /N "AutoUser" /P "Password" /C "DisableCheck"

Теперь разберем, как обработать этот параметр в процедуре проверки (например, в общем модуле КонтрольВерсииПлатформы или через расширение конфигурации):


Процедура ПроверитьВерсиюПлатформы() Экспорт
    // Проверяем наличие параметра запуска
    Если СтрНайти(ПараметрыЗапуска, "DisableCheck") > 0 Тогда
        Возврат;
    КонецЕсли;

    // Стандартный алгоритм проверки версии платформы
    // ...
КонецПроцедуры

Использование расширений позволяет переопределить поведение обработчиков событий запуска без снятия основной конфигурации с поддержки поставщика.

Решение 2. Настройка прав и параметров служебного пользователя

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

  1. Разделение прав: Создадим отдельного пользователя для пакетных заданий без полных административных прав (если специфика задачи позволяет). Большинство регламентных проверок версии и конфигурации инициируются только для администраторов.
  2. Отключение новостей и обновлений: Авторизуемся под служебным пользователем интерактивно один раз и отключим демонстрацию новостей, баннеров и всплывающих уведомлений в персональных настройках программы.
  3. Настройка регламентных заданий: В разделе Администрирование → Интернет-поддержка и сервисы → Обновление версии программы переведем поиск обновлений в фоновый режим по расписанию во внерабочее время, чтобы исключить открытие окон при входе.

Решение 3. Использование COM-соединения или Web/HTTP-сервисов

Если запуск из командной строки используется для выполнения фоновой выгрузки данных, обмена или регламентного обслуживания, оптимальным решением является полный отказ от запуска клиентского интерфейса (толстого или тонкого клиента):

  1. COM-соединение: При подключении через V83.COMConnector инициализируется только серверный контекст. Клиентский интерфейс не создается, а процедуры вроде ПриНачалеРаботыСистемы с клиентскими диалогами физически не выполняются.
  2. HTTP-сервисы: Создание и публикация специализированного HTTP-сервиса в базе 1С позволяет передавать команды и инициировать нужные процедуры внешними скриптами (с помощью curl или PowerShell) без создания пользовательского интерфейса.

Решение 4. Автоматизация закрытия окон внешними сценариями

Если запуск клиентского приложения обязателен, а вносить изменения в код или настройки запрещено, применим обработку окон на уровне операционной системы. Внешний скрипт (на PowerShell или с использованием утилит автоматизации) отслеживает появление дочерних окон процесса 1cv8.exe или 1cv8c.exe и отправляет нажатие клавиш Enter / Esc либо команду закрытия дескриптора окна (сообщение WM_CLOSE).

Таким образом, для надежной автоматизации фоновых процессов рекомендуется комбинировать передачу ключа /C с проверкой в расширении либо переводить фоновую обработку данных на уровень COM-соединений и HTTP-сервисов.

← На главную