Ситуация, когда информационная база работает быстро у всех сотрудников, кроме одного «счастливчика», — классическая проблема для крупных систем на базе 1С:Управление холдингом или 1С:Документооборот. Часто стандартные советы вроде «почисти кэш» или «перезагрузи компьютер» не помогают. В этой статье мы подробно разберем, почему возникает такая избирательная медлительность, и пройдем по шагам диагностики: от простых настроек до анализа планов запросов SQL-сервера.
Рассмотрим ситуацию: пользователь жалуется на зависание программы (до 10 минут) при открытии форм списков (например, «Задачи мне») или при проведении документов. При этом аппаратные ресурсы компьютера (процессор Ryzen 3, 8 ГБ ОЗУ, SSD) в норме, а в терминальном режиме проблема сохраняется. Это сразу говорит нам о том, что дело не в «железе» клиента, а в специфике данных или настроек, привязанных к конкретной учетной записи в 1С.
Прежде чем переходить к тяжелой артиллерии, исключим стандартные факторы. Выясним причину через очистку системных данных:
%AppData%\1C\1Cv8.1С:Предприятие перейдем в «Администрирование» — «Настройки пользователей и прав» — «Очистка настроек». Выберем проблемного пользователя и удалим все настройки внешнего вида и отборы.Проанализируем наиболее вероятную причину — ограничение прав на уровне записей. Механизм RLS добавляет к каждому SQL-запросу дополнительные условия (подзапросы), проверяющие, имеет ли пользователь право видеть конкретную строку. Если у пользователя сложная иерархия прав или он состоит во множестве групп доступа, итоговый запрос превращается в «монстра» на несколько страниц текста.
Рассмотрим важные нюансы RLS:
RLS (доступен с платформы 8.3.16). В этом режиме проверка прав опирается на предварительно рассчитанные данные в специальных таблицах, что значительно ускоряет работу.RLS.Форма «Задачи мне» — одна из самых ресурсоемких. Она собирает данные из регистров сведений, задач, бизнес-процессов и предметов. Разберем, что может тормозить её открытие у конкретного человека:
1С:Документооборот существует регистр ОчередьОбновленияПрав. Если по данному пользователю накопилось много необработанных записей, система может пытаться «досчитать» права в момент обращения, что вызывает фриз.SQL выполнять Table Scan (полный перебор таблицы).Чтобы не гадать, выполним замер производительности именно под сеансом проблемного пользователя. Посмотрим на примере, как это сделать:
F12).ОткрытьФорму() или ВыполнитьЗапрос(), значит проблема в данных или RLS на уровне сервера БД.Иногда корень зла кроется в кэше планов запросов SQL Server. Выясним причину через механизм Parameter Sniffing. Сервер сохраняет план выполнения запроса, исходя из параметров первого запуска. Если первый раз запрос был выполнен для пользователя с двумя задачами, а у нашего «проблемного» пользователя их две тысячи, старый план будет крайне неэффективным.
Как лечить:
DBCC FREEPROCCACHE).Если замер производительности не дает четкого ответа (например, время «теряется» где-то между клиентом и сервером), настроим Технологический журнал. Это позволит увидеть реальные SQL-запросы, которые 1С отправляет к базе данных.
Создадим файл logcfg.xml со следующим содержимым для сбора событий DBMSSQL:
<config xmlns="http://v8.1c.ru/7.4/get/logcfg">
<log location="C:\LOGS\SQL_Slow" history="2">
<event>
<eq property="Name" value="DBMSSQL"/>
<gt property="Duration" value="100000"/> <!-- фиксируем запросы дольше 0.1 сек -->
</event>
<property name="All"/>
</log>
</config>
Проанализировав полученный лог, мы увидим текст запроса. Если в нем присутствуют конструкции WHERE 0=1 или бесконечные JOIN к таблицам прав — мы нашли виновника в лице RLS.
Разберем краткий чек-лист для исправления ситуации:
RLS или сложности групп доступа.SQL или серверном кэше текущего инстанса. Поможет реиндексация.VPN, проверьте размер пакетов MTU. Из-за специфических прав объем передаваемых данных формы может быть выше, что при фрагментации пакетов дает эффект «зависания».Как показала практика обсуждения на форуме, в большинстве случаев проблема решается либо пересчетом прав доступа, либо упрощением ролевой модели для конкретного сотрудника. Помните, что избыточная «безопасность» в настройках прав часто становится главным врагом производительности системы.