Почему в 1С:Документооборот фоновое задание создает множество отмененных транзакций и вешает блокировки?

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

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

Анализируем фоновый расчет прав доступа (дескрипторов)

Проанализируем наиболее вероятную причину — фоновое обновление дескрипторов доступа. В «1С:Документооборот» (особенно версии 2.1 и 3.0) реализована сложная иерархическая модель прав. Вместо того чтобы вычислять права «на лету» при каждом запросе (что крайне медленно), система использует механизм дескрипторов. Дескриптор — это специальный объект, в котором заранее рассчитаны права группы пользователей на конкретный документ или папку.

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

  1. Система выбирает порцию объектов, для которых нужно обновить права.
  2. Пытается захватить объекты и связанные с ними таблицы дескрипторов (например, _AccessRightsAssignments).
  3. Если в этот момент обычный пользователь открыл документ или задача находится в процессе выполнения, возникают конфликты объектных или управляемых блокировок.
  4. Транзакция по обновлению конкретного блока данных откатывается (отменяется), и система переходит к следующей итерации или пробует снова.

В консоли мы видим «кучу отмененных транзакций», потому что фоновый процесс постоянно «стучится» в заблокированные записи, откатывается и пробует снова, пока не найдет свободное «окно» для записи. Выясним причину такой активности: обычно это связано с массовым пересчетом прав в 23:00, когда запускаются другие регламентные процедуры, или сразу после синхронизации данных.

Разбираем автоматическое удаление помеченных объектов

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

  1. Объекты в «Документообороте» имеют колоссальное количество связей: Документ -> Процесс -> Задача -> Файл -> Запись в журнале регистрации.
  2. Фоновое задание пытается удалить цепочку связанных объектов в одной транзакции.
  3. Если хотя бы один элемент из этой цепочки используется другим процессом (например, файл индексируется полнотекстовым поиском), вся транзакция отменяется.

Если вы видите активность в районе 23:00, обязательно проверьте настройки расписания задания УдалениеПомеченныхОбъектов. Для исправления ситуации рекомендуется переводить удаление в режим «Одной транзакцией» только в периоды полного отсутствия пользователей, либо использовать выборочное удаление небольшими порциями.

Проверяем полнотекстовый поиск (ППД)

Проанализируем ситуацию с индексацией. Задание ОбновлениеИндексаППД или СлияниеИндексов в «1С:Документооборот» обрабатывает не только метаданные, но и содержимое тяжелых файлов (PDF, сканы, Word). Рассмотрим технические детали:

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

Исследуем влияние интеграции и синхронизации

Если «1С:Документооборот» интегрирован с ERP, УПП или ЗУП, важным фактором является синхронизация данных. Разберем цепочку событий:

  1. В 23:00 (стандартное время для многих обменов) запускается загрузка данных из внешней системы.
  2. Загружаются новые контрагенты, документы или сотрудники.
  3. В ответ на запись новых объектов система ДО автоматически ставит в очередь задачи на расчет прав доступа (см. пункт 1).
  4. Возникает «эффект домино»: запись данных из обмена блокирует таблицы, а фоновый расчет прав пытается их обработать, создавая бесконечные попытки фиксации транзакций.

Как точно идентифицировать проблему: практические шаги

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

1. Использование Журнала регистрации. Настройте фильтр по номеру сеанса, который вы видите в консоли кластера. Обратите внимание на события Транзакция.Начало и Транзакция.Отмена. В тексте события часто содержится причина отмены, например: Конфликт блокировок при выполнении транзакции.

2. Настройка Технологического журнала (ТЖ). Это самый надежный способ. Разберем пример конфигурационного файла logcfg.xml для отслеживания длительных блокировок:


<config xmlns="http://v8.1c.ru/7.4/get/logcfg">
  <log location="C:\LOGS\LOCKS" history="24">
    <event>
      <eq property="Name" value="TLOCK"/>
      <gt property="Duration" value="5000000"/>
    </event>
    <event>
      <eq property="Name" value="TTIMEOUT"/>
    </event>
  </log>
</config>

Этот конфиг позволит нам увидеть все блокировки (TLOCK), длительность которых превышает 5 секунд, и таймауты (TTIMEOUT), что поможет сопоставить номер сеанса с конкретной таблицей БД.

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

4. Анализ на уровне SQL. Если используется MS SQL Server, воспользуемся SQL Server Profiler или Extended Events. Проанализируем запросы от сеанса 1С. Если мы видим массовые команды ROLLBACK TRANSACTION, направленные к таблицам, начинающимся на _AccessRights, значит, мы имеем дело с проблемой дескрипторов прав.

Рекомендации по исправлению

Если подтвердится, что виноват расчет прав, рассмотрим следующие меры:

Таким образом, наличие множества отмененных транзакций в фоновом задании «1С:Документооборот» — это не ошибка программы как таковая, а следствие работы механизма оптимизации доступа (дескрипторов) или целостности связей при удалении в условиях конкуренции за ресурсы. Системный подход к анализу через ТЖ и консоль заданий позволит быстро локализовать «виновника» и настроить расписание так, чтобы система оставалась отзывчивой для пользователей.

← На главную