Как разом запретить все регламентные и фоновые задания и почему база на SQL может работать медленнее файловой

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

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

Способ 1: Использование консоли администрирования кластера серверов

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

  1. Откроем консоль администрирования кластера серверов 1С:Предприятие.
  2. Перейдем в дерево серверов, найдем нужный нам кластер и раскроем ветку Информационные базы.
  3. Выберем интересующую нас базу, щелкнем по ней правой кнопкой мыши и откроем Свойства.
  4. В появившемся окне найдем флажок Блокировка начала регламентных заданий включена.
  5. Установим эту галочку и нажмем ОК.

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

Способ 2: Программный вызов формы блокировки ресурсов

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


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Вызываем стандартную форму блокировки работы с внешними ресурсами
    ПараметрыФормы = Новый Структура("ПринятиеРешенияОБлокировке", Истина);
    ОткрытьФорму("ОбщаяФорма.БлокировкаРаботыСВнешнимиРесурсами", ПараметрыФормы);
    Отказ = Истина;
КонецПроцедуры

Разберем, что происходит при использовании этого метода. Когда мы нажимаем в этой форме кнопку «Это копия», система устанавливает блокировку на работу с внешними ресурсами. Важно понимать различие: режим «Копия» в БСП в первую очередь отключает РассылкаОтчетов, СинхронизацияДанных, работу с почтой и ЭДО. Но при этом внутренние системные задания, такие как ОбновлениеИндексаПолнотекстовогоПоиска или ОчисткаНенужныхФайлов, могут продолжать работать. Если наша цель — полная тишина в базе, лучше использовать метод из первого пункта.

Способ 3: Запуск базы с ключом командной строки

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

1cv8.exe ENTERPRISE /F "ПутьКБазе" /AllowExecuteScheduledJobs -Off

Проанализируем действие этого ключа. Для файловых баз планировщик запускается в контексте первого зашедшего пользователя. Если мы запустим первый сеанс с ключом /AllowExecuteScheduledJobs -Off, регламентные задания в этой сессии выполняться не будут. В клиент-серверном варианте этот ключ влияет на возможность запуска заданий именно в текущем сеансе, если код инициирует их выполнение. Однако для серверных заданий приоритетным остается флаг в консоли администрирования.

Почему проведение документов на SQL работает медленнее, чем в файловой базе?

Рассмотрим ситуацию, когда 3700 документов проводятся в файловой копии за 15 минут, а на SQL-сервере процесс зависает. Это кажется парадоксальным, ведь SQL предназначен для больших нагрузок. Выясним основные технические причины этой проблемы:

  1. Параметр MAXDOP (Maximum Degree of Parallelism): По умолчанию SQL Server пытается распараллелить выполнение одного тяжелого запроса на все ядра процессора. Для 1С это часто губительно. Если SQL решит, что запрос при закрытии месяца нужно разделить на 8 потоков, могут возникнуть взаимные блокировки Deadlocks внутри одного и того же процесса. Рекомендуется установить MAXDOP = 1 в настройках SQL Server.
  2. Протокол Shared Memory: Если сервер приложений 1С и SQL Server установлены на одном физическом сервере, проверим настройки подключения. Использование протокола TCP/IP вместо Shared Memory добавляет накладные расходы на сетевой стек, что на тысячах мелких запросов при проведении документов дает колоссальную задержку.
  3. Обновление статистики и индексов: В файловом варианте индексы всегда «свежие», так как база компактная. В SQL-варианте оптимизатор строит план запроса на основе статистики. Если статистика устарела, SQL может выбрать крайне неэффективный способ обхода таблиц (например, Index Scan вместо Index Seek). Перед массовым проведением документов обязательно выполните регламентную операцию Update Statistics.
  4. План электропитания сервера: Это критический момент, который часто упускают системные администраторы. Если на сервере установлен режим «Сбалансированный», процессор может работать на пониженной частоте, не успевая «разгоняться» для коротких транзакций 1С. Убедимся, что установлена схема Высокая производительность (High Performance).
  5. Управляемые блокировки: Если конфигурация использует автоматический режим блокировок, SQL Server блокирует целые таблицы при проведении. В файловом режиме блокировка работает иначе. Проверим в свойствах конфигурации или через консоль, не висят ли процессы в ожидании на объектах Lck.

Использование инструментов разработчика для управления заданиями

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

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

Заключение

Подводя итоги, отметим, что для разовой блокировки заданий в копии базы идеальным является флаг в консоли администрирования кластера. Если же вы столкнулись с деградацией производительности на SQL, не спешите винить объем данных — скорее всего, причина кроется в настройках взаимодействия сервера 1С и СУБД, таких как параллелизм, статистика или планы электропитания. Регулярное обслуживание SQL-базы и правильная настройка сервера позволят достичь скоростей, значительно превышающих возможности файлового режима. Для комплексной проверки параметров сервера и регламентных процедур СУБД можно использовать инструмент для экспресс-аудита настроек СУБД под 1С.

← На главную