При работе с базами данных 1С часто возникает необходимость временно или постоянно отключить выполнение автоматизированных процессов. Это особенно актуально при развертывании тестовых копий, когда выполнение регламентных заданий в дубликате базы может привести к нежелательной отправке писем клиентам, дублированию обменов с государственными системами или излишней нагрузке на сервер. В данной статье мы подробно разберем, как управлять блокировкой заданий и выясним, почему проведение документов в клиент-серверном варианте может «зависать», в то время как файловая копия работает исправно.
Это основной и самый надежный метод для баз, работающих в клиент-серверном режиме. Если у нас есть права администратора сервера 1С, мы можем централизованно запретить запуск любых заданий планировщиком. Рассмотрим этот процесс по шагам:
Проанализируем этот механизм. При установке данного флага планировщик сервера 1С перестает инициировать запуск новых фоновых заданий для этой конкретной базы. Однако стоит учитывать один нюанс: если в коде конфигурации прописан программный вызов фонового задания напрямую (минуя механизм регламентных заданий), такое задание все равно может запуститься. Но для 99% стандартных задач (обмены, рассылки, закрытие месяца) этот метод является абсолютным решением.
Бывают ситуации, когда доступа к консоли сервера нет, но нужно быстро перевести базу в режим «копии» или заблокировать внешние взаимодействия. В Библиотеке стандартных подсистем (БСП) предусмотрена специальная форма. Мы можем создать внешнюю обработку и использовать следующий код для вызова диалога принятия решения:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Вызываем стандартную форму блокировки работы с внешними ресурсами
ПараметрыФормы = Новый Структура("ПринятиеРешенияОБлокировке", Истина);
ОткрытьФорму("ОбщаяФорма.БлокировкаРаботыСВнешнимиРесурсами", ПараметрыФормы);
Отказ = Истина;
КонецПроцедуры
Разберем, что происходит при использовании этого метода. Когда мы нажимаем в этой форме кнопку «Это копия», система устанавливает блокировку на работу с внешними ресурсами. Важно понимать различие: режим «Копия» в БСП в первую очередь отключает РассылкаОтчетов, СинхронизацияДанных, работу с почтой и ЭДО. Но при этом внутренние системные задания, такие как ОбновлениеИндексаПолнотекстовогоПоиска или ОчисткаНенужныхФайлов, могут продолжать работать. Если наша цель — полная тишина в базе, лучше использовать метод из первого пункта.
Существует еще один способ запретить выполнение регламентных заданий, который часто используется при пакетной обработке данных или выполнении обновлений. Мы можем запустить клиентское приложение 1С с определенным параметром. Рассмотрим пример строки запуска:
1cv8.exe ENTERPRISE /F "ПутьКБазе" /AllowExecuteScheduledJobs -Off
Проанализируем действие этого ключа. Для файловых баз планировщик запускается в контексте первого зашедшего пользователя. Если мы запустим первый сеанс с ключом /AllowExecuteScheduledJobs -Off, регламентные задания в этой сессии выполняться не будут. В клиент-серверном варианте этот ключ влияет на возможность запуска заданий именно в текущем сеансе, если код инициирует их выполнение. Однако для серверных заданий приоритетным остается флаг в консоли администрирования.
Рассмотрим ситуацию, когда 3700 документов проводятся в файловой копии за 15 минут, а на SQL-сервере процесс зависает. Это кажется парадоксальным, ведь SQL предназначен для больших нагрузок. Выясним основные технические причины этой проблемы:
Deadlocks внутри одного и того же процесса. Рекомендуется установить MAXDOP = 1 в настройках SQL Server.TCP/IP вместо Shared Memory добавляет накладные расходы на сетевой стек, что на тысячах мелких запросов при проведении документов дает колоссальную задержку.Index Scan вместо Index Seek). Перед массовым проведением документов обязательно выполните регламентную операцию Update Statistics.Lck.Для продвинутых пользователей и администраторов существуют инструменты, позволяющие управлять списком заданий более гибко. Рассмотрим возможность сохранения состояния заданий. Проанализируем ситуацию: нам нужно выключить все задания для проведения обслуживания, а потом включить обратно только те, которые были включены изначально.
Специализированные обработки (например, консоли заданий с расширенным функционалом) позволяют выгрузить текущее состояние (флаг Использование) в файл. После проведения работ мы можем загрузить этот список обратно. Это гораздо удобнее, чем вручную вспоминать, какие из 150 регламентных заданий в современной 1C:ERP или БП 3.0 должны быть активны. Для комфортной работы с процессами без привязки к БСП можно использовать обработку для управления регламентными и фоновыми заданиями.
Подводя итоги, отметим, что для разовой блокировки заданий в копии базы идеальным является флаг в консоли администрирования кластера. Если же вы столкнулись с деградацией производительности на SQL, не спешите винить объем данных — скорее всего, причина кроется в настройках взаимодействия сервера 1С и СУБД, таких как параллелизм, статистика или планы электропитания. Регулярное обслуживание SQL-базы и правильная настройка сервера позволят достичь скоростей, значительно превышающих возможности файлового режима. Для комплексной проверки параметров сервера и регламентных процедур СУБД можно использовать инструмент для экспресс-аудита настроек СУБД под 1С.