В процессе эксплуатации системы «1С:Документооборот» (1С:ДО) администраторы часто сталкиваются с двумя критическими проблемами производительности: аномально долгим сохранением прав доступа при изменении групп или полномочий пользователя и существенными задержками при получении почтовых уведомлений о новых задачах. В этой статье мы подробно разберем причины возникновения таких задержек и рассмотрим пошаговые алгоритмы оптимизации системы.
Рассмотрим ситуацию, когда при внесении изменений в Группы и полномочия система «зависает», и на запись данных одного пользователя уходит до 30 минут. Выясним причину: в «1С:Документооборот» используется сложная архитектура дескрипторов доступа. Вместо того чтобы проверять права «на лету» в момент обращения к документу, система предварительно рассчитывает их и записывает в специальные регистры. При оперативном обновлении прав (по умолчанию) пересчет всей цепочки прав для пользователя происходит мгновенно при записи, что вызывает колоссальные блокировки и ожидание.
Разберем по шагам, как перевести этот процесс в фоновый режим:
После включения этой опции время записи карточки пользователя сократится до пары секунд. Это происходит потому, что система перестает выполнять расчет прав немедленно. Вместо этого в регистр ОчередьОбновленияПрав записывается задание, которое будет выполнено фоновым процессом. Проанализируем работу регламентного задания ОбновлениеПравДоступа. Именно оно отвечает за обработку этой очереди. Если вы видите, что права у пользователей обновляются слишком долго даже в фоновом режиме, необходимо «толкнуть» (запустить принудительно) это фоновое задание или увеличить частоту его выполнения.
Продолжим изучение механизмов доступа. Важно понимать, что на быстродействие прав влияет иерархия объектов. Система пересчитывает права «сверху вниз». Если вы изменили права на папку в корне дерева, инициируется цепочка обновлений для всех дочерних элементов. В связи с этим проанализируем следующие рекомендации:
Очистка устаревших дескрипторов: Проверьте наличие и активность регламентного задания по очистке неиспользуемых дескрипторов. Если таблицы дескрипторов разрастаются до миллионов записей, это критически тормозит расчет даже в отложенном режиме.
Упрощенное управление правами: В версиях 2.1 и 3.0 существует режим УпрощенноеУправлениеПравами. Посмотрим на этот механизм: он позволяет отключить проверку прав на некоторые некритичные объекты, что существенно снижает нагрузку на базу данных и ускоряет запись прав.
Разберем вторую проблему: сообщения на почту приходят с задержкой в 20 и более минут, хотя регламентные задания настроены на ежеминутный запуск. Выясним, почему так происходит. Процесс отправки письма в 1С:ДО — это многослойная цепочка, где каждое звено зависит от предыдущего.
Проанализируем цепочку обработки событий, которая должна отработать последовательно:
ОбработкаПроизошедшихБизнесСобытий анализирует событие и определяет, нужно ли уведомлять пользователя.УведомлениеПользователейОПроизошедшихБизнесСобытиях создает тело письма и помещает его в очередь отправки.ОтправкаПисем осуществляет непосредственную передачу данных на SMTP-сервер.Если хотя бы одно из этих заданий работает медленно или стоит в очереди за тяжелым процессом (например, за тем же расчетом прав), общая задержка суммируется. Посмотрим, как ускорить этот процесс.
Часто причина задержки кроется не в технических ошибках, а в настройках самой системы. Проанализируем ситуацию с группировкой писем. В 1С:ДО существует опция Группировать уведомления. Если она включена, система не отправляет письмо сразу, а ждет определенный интервал времени (например, 15 минут), чтобы собрать все накопившиеся уведомления в одно письмо. Это сделано для того, чтобы не спамить пользователя десятками писем в минуту.
Проверим эти настройки:
Для обеспечения максимального быстродействия обоих процессов — и прав, и уведомлений — необходимо выполнить ряд технических мероприятий на уровне СУБД и кластера 1С:
1. Обслуживание индексов: Таблицы, отвечающие за права (РегистрСведений.ДескрипторыДоступаОбъектов) и события, крайне чувствительны к фрагментации индексов. Настройте регулярное выполнение REINDEX и UPDATE STATISTICS в SQL-базе. Это может сократить время обработки очереди прав в несколько раз.
2. Разнесение заданий по серверам: Если вы используете кластер серверов 1С, попробуйте разнести тяжелые регламентные задания (расчет прав) и оперативные задания (отправка писем) по разным рабочим серверам или разным процессам rphost. Это исключит ситуацию, когда расчет прав блокирует поток отправки почты.
3. Использование многопоточности: В современных версиях 1С:ДО реализована возможность многопоточной обработки очередей. В настройках программы проверьте параметры количества потоков для обработки событий. Это позволит параллельно рассчитывать права и готовить уведомления, не дожидаясь завершения одного процесса для начала другого.
4. Контроль регистра «Очередь уведомлений»: Проанализируем содержимое регистра ОчередьУведомлений. Если в нем скопилось много «зависших» записей (например, из-за неправильных email-адресов), система может тратить ресурсы на попытки их обработки, замедляя новые уведомления. Регулярно очищайте очередь от ошибок.
Таким образом, мы выяснили, что для корректной и быстрой работы 1С:Документооборот необходимо не только настраивать частоту регламентных заданий, но и понимать внутреннюю архитектуру взаимодействия дескрипторов прав и механизмов бизнес-событий. Сочетание Отложенного обновления прав и правильной настройки Цепочки уведомлений позволит системе работать стабильно и без задержек для конечных пользователей.