После обновления конфигурации 1С:Документооборот 3.0 (например, при переходе с релиза 3.0.15 на 3.0.39 и выше) администраторы и пользователи часто сталкиваются с крайне неприятной ситуацией. Бизнес-процессы запускаются, документы отправляются на согласование, однако в списках задач у исполнителей (в окне «Мои задачи») абсолютно пусто. При этом в списках «Задачи от меня» инициатор видит отправленные поручения, но адресаты не получают уведомлений и не могут выполнить согласование или утверждение.
В этой статье мы подробно разберем, почему возникает эта проблема, как устроена новая архитектура распределения задач в линейке 1С:ДО 3.0, и проанализируем пошаговые сценарии для восстановления штатной работы системы.
Начиная с версии 3.0.15, разработчики фирмы «1С» перевели систему расчетов прав и отображения списков задач на асинхронный режим для повышения общей производительности СУБД. Если в старых версиях запись происходила напрямую через менеджер записи регистров, то теперь данные сначала помещаются во временный буфер — регистр сведений ОчередьОбновленияКеширующихДанных. Далее регламентные задания в фоновом режиме обрабатывают эту очередь и обновляют кэш для пользователей.
Сразу после обновления конфигурации на новый релиз запускается процедура отложенного обновления ИБ. Она инициирует масштабный пересчет прав доступа и кэширующих таблиц для всех исторических документов и процессов. В результате в регистре ОчередьОбновленияКеширующихДанных может мгновенно скопиться колоссальный объем данных — от 5 до 10 миллионов записей. Пока эта очередь полностью не обработается фоновыми заданиями, новые и текущие задачи физически не будут появляться на рабочих столах пользователей.
Выясним состояние регистра. Для этого выполним следующие действия:
Очередь обновления кеширующих данных.Как ускорить этот процесс? Нам поможет механизм многопоточности, реализованный в платформе. Настроим его по шагам:
Поскольку доставка задач теперь полностью зависит от фоновых процессов, любое зависание или отключение регламентных заданий мгновенно парализует документооборот. Проанализируем состояние ключевых регламентных заданий:
Проверим работоспособность заданий через типовую консоль:
Используется.Состояние на наличие ошибок выполнения. Если задание завершилось аварийно, изучим текст ошибки в Журнале регистрации.Важное примечание для тестовых баз: Если вы проводите тестирование обновления на копии базы данных, обратите внимание, что при развертывании копии платформа 1С по умолчанию полностью блокирует выполнение всех регламентных заданий. Снять эту блокировку необходимо в консоли администрирования кластера серверов 1С предприятия в свойствах информационной базы. Для регулярного обслуживания таких сред саму процедуру установки новых релизов можно выполнять через программу для пакетного обновления и тестирования баз 1С.
Еще один важный технический нюанс связан со справочником ОчередьЗаданийДокументооборота. Когда система пытается создать задачу для следующего исполнителя по маршруту, она обращается к целевому объекту (например, к карточке документа или процессу).
Если в этот момент документ заблокирован другим пользователем или в СУБД возникла транзакционная блокировка из-за высокой нагрузки, система совершает попытку записи. По умолчанию в конфигурации установлен лимит в 4 попытки.
Если все 4 попытки завершились неудачей:
ОчередьЗаданийДокументооборота помечается как аварийная (получает статус ошибки).Для исправления этой ситуации нам потребуется сбросить счетчик неудачных попыток. Разберем, как это сделать программно. Запустим внешнюю обработку или выполним код в консоли кода:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Очередь.Ссылка КАК Ссылка
|ИЗ
| Справочник.ОчередьЗаданийДокументооборота КАК Очередь
|ГДЕ
| Очередь.КоличествоПопыток > 3";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектЗадачи = Выборка.Ссылка.ПолучитьОбъект();
ОбъектЗадачи.КоличествоПопыток = 0; // Сбрасываем счетчик в ноль
ОбъектЗадачи.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияЗаданийДокументооборота.ВОчереди");
ОбъектЗадачи.Записать();
КонецЦикла;
После сброса счетчика регламентное задание Запуск обработки заданий при следующем запуске повторно подхватит эти задачи и успешно создаст их для пользователей.
В «1С:Документооборот 3.0» права доступа и видимость задач привязаны не к справочнику Пользователи, а к справочнику Сотрудники (что позволяет гибко поддерживать совмещение должностей внутри одной организации). Связь между пользователем информационной базы и его рабочими местами рассчитывается в специальных служебных регистрах: СотрудникиВКонтейнерах и КонтейнерыСотрудников.
При масштабных обновлениях конфигурации кэш этих контейнеров может рассчитаться некорректно. В таком случае, даже если фоновое задание отработало без ошибок и создало задачу, система безопасности платформы просто скрывает ее от конечного пользователя, так как считает, что у его учетной записи нет прав на чтение данных этого «сотрудника».
Для решения этой проблемы необходимо запустить стандартную процедуру обновления прав доступа через меню Настройки — Поддержка и обслуживание — Управление правами доступа и выполнить полное обновление прав для проблемных пользователей.