При настройке регулярного выполнения регламентных процедур (выгрузки данных, ночного обмена или переиндексации) в 1С:Предприятии 7.7 системные администраторы и разработчики часто сталкиваются с ситуацией: при интерактивном запуске через ярлык все отрабатывает штатно, но при старте из Планировщика заданий Windows процесс 1cv7s.exe или 1cv7.exe появляется в диспетчере задач, входит в базу и намертво зависает, не выполняя целевой программный код.
Проанализируем ситуацию: главной причиной такого поведения почти всегда является появление модального диалогового окна, которое блокирует поток выполнения. В изолированной сессии службы планировщика пользователь не видит графический интерфейс, и программа бесконечно ожидает нажатия кнопки. Чаще всего инициатором блокировки выступает встроенное окно Советы дня либо диалог подтверждения параметров.
Разберем по шагам, как отключить отображение советов для конкретной учетной записи:
Если запуск планировщика осуществляется от служебной учетной записи или службы, к которой нет интерактивного входа, настроим этот параметр напрямую в ветке реестра HKEY_CURRENT_USER нужного профиля:
В ветке HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя_Базы>\V7\<Имя_Пользователя_1С>\TipOfTheDay установим строковый или числовой параметр ShowInStart со значением 0.
Если требуется гарантированно исключить появление окна для всех пользователей и баз на сервере без ручной правки веток реестра, прибегнем к радикальному, но эффективному методу платформы 7.7 — удалению файлов подсказок:
C:\Program Files (x86)\1Cv77\BIN\)..tip (например, tips.tip для режима «Предприятие» и соответствующий файл подсказок конфигуратора).При отсутствии файла физических данных платформа просто пропускает вызов окна и продолжает процедуру инициализации конфигурации без остановки.
Исполнение тяжелых алгоритмов непосредственно в процедуре ПриНачалеРаботыСистемы() глобального модуля нередко приводит к скрытым ошибкам инициализации контекста. Более стабильный подход — запуск специальной внешней обработки, использующей форму и системный таймер.
Посмотрим на пример организации регламентной выгрузки в модуле формы внешней обработки:
Процедура ПриОткрытии()
// Запускаем основное регламентное действие
Выгрузка();
// Взводим обработку ожидания для периодического повтора или корректного выхода
Форма.ОбработкаОжидания("Выгрузка", 75);
КонецПроцедуры
Для завершения сеанса без вывода пользователю предупреждающего диалога «Завершить работу с программой?» в коде 1С 7.7 обязательно вызываем процедуру ЗавершитьРаботуСистемы(0). Нулевой параметр отключает интерактивный запрос на подтверждение закрытия.
Выясним причину, почему пересоздание задачи в планировщике нередко решает проблему зависания, когда параметры командной строки кажутся верными:
SYSTEM, профиль пользователя пуст, а сетевые ресурсы недоступны. Всегда указываем выделенную сервисную учетную запись с правами локального входа и правами на каталог базы данных./D никогда не указываем буквы подключенных сетевых дисков (например, Z:\Base), так как в неинтерактивном сеансе планировщика буквы дисков отсутствуют. Используем полный путь: /D"\\Server\Share\Base".BIN платформы, чтобы программа могла корректно подгрузить все вспомогательные библиотеки и таблицы кодировок.