В процессе работы с программой «1С:Зарплата и управление персоналом» (редакция 3.1) пользователи часто сталкиваются с крайне неприятной проблемой: при попытке подобрать сотрудников в ведомостях на выплату зарплаты или других кадрово-расчетных документах программа намертво зависает. Процесс 1cv8.exe или rphost начинает потреблять до 25% (или 50%) ресурсов центрального процессора, что означает полную загрузку одного или нескольких ядер CPU, а в журнале регистрации фиксируются бесконечные циклы входа и выхода из системы.
Давайте подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы работы конфигурации и рассмотрим пошаговые методы устранения этого сбоя — от простых административных действий до работы со служебными регистрами и обновления платформы.
Одной из наиболее частых причин зависания подбора в релизах ЗУП 3.1 является зарегистрированная ошибка самой платформы 1С. Проблема локализуется в общем модуле при инициализации формы подбора.
Давайте разберем, что происходит на программном уровне. При открытии формы подбора срабатывает серверный метод:
ФизическиеЛицаЗарплатаКадрыРасширенный.ФормаВыбораСотрудниковПриСозданииНаСервере(Форма, Параметры)
Внутри этой процедуры система пытается принудительно активировать использование определенных колонок в динамическом списке для корректной фильтрации и отображения данных. Зависание происходит непосредственно на строке кода:
Форма.Список.УстановитьОбязательноеИспользование("ВидДоговора", Истина);
На некоторых версиях платформы (в частности, в ветках 8.3.12.1529, ранних сборках 8.3.13 и смежных релизах) метод УстановитьОбязательноеИспользование уходит в бесконечную рекурсию при отрисовке элементов формы интерфейса. Клиентское приложение начинает непрерывно запрашивать данные у сервера, имитируя постоянный перезапуск сеанса.
Как решить эту проблему:
8.3.12.1714), необходимо выполнить обновление технологической платформы до актуального стабильного релиза (рекомендуется использовать проверенные сборки веток 8.3.20, 8.3.22 или выше в зависимости от требований вашей конфигурации).Динамические списки в современных конфигурациях на управляемых формах активно используют механизмы полнотекстового поиска для быстрой фильтрации данных по мере ввода текста пользователем. Если индекс полнотекстового поиска поврежден или содержит некорректные ссылки, любая попытка обращения к списку сотрудников через форму подбора может вызывать зависание системы.
Разберем по шагам, как очистить и пересчитать этот индекс:
УправлениеПолнотекстовымПоиском (или перейдем через администрирование в раздел «Поддержка и обслуживание» -> «Полнотекстовый поиск»).В некоторых случаях, если выполнение операции через интерфейс также вызывает зависание, рекомендуется временно отключить регламентное задание ОбновлениеИндексаППД в консоли регламентных заданий, физически удалить каталог 1Cv8FTxt из папки с базой данных (для файлового варианта) и затем снова включить полнотекстовый поиск.
Форма подбора сотрудников в ЗУП 3.1 — это не просто список элементов справочника Справочник.Сотрудники. Для оптимизации скорости расчета и вывода информации разработчики 1С используют вспомогательные регистры сведений, которые хранят предварительно рассчитанные данные о кадровом состоянии сотрудников и условиях оплаты их труда.
Зависание или появление ошибок дублирования ключей при подборе часто связано с повреждением данных в следующих регистрах:
РегистрСведений.ДанныеДляПодбораСотрудниковРегистрСведений.ДанныеОбОплатеТрудаДляПодбораСотрудниковРегистрСведений.ТекущиеКадровыеДанныеСотрудниковЕсли в результате некорректного обновления, переноса данных или прерывания транзакций в этих регистрах появились дублирующиеся записи по сотрудникам (например, когда по одному физическому лицу в рамках одной организации создается несколько противоречащих друг другу записей), динамический список при попытке наложить левое соединение уходит в бесконечный цикл обработки запроса СУБД.
Рассмотрим, как исправить данные в регистрах:
e1cib/list/РегистрСведений.ДанныеДляПодбораСотрудников.Если база данных работает в файловом режиме, причиной зависания при выполнении сложных запросов динамического списка может быть нарушение физической или логической целостности таблиц базы данных. Обычная проверка утилитой chdbfl.exe часто не находит ошибок, так как она проверяет только физическую структуру файла, но не логические связи между таблицами.
В этом случае эффективным решением является проведение полного тестирования и исправления с обязательной реструктуризацией таблиц:
1Cv8.1CD или выгрузку .dt). Это обязательный шаг перед проведением любых восстановительных работ!Реиндексация таблиц информационной базыПроверка логической целостности информационной базыРеструктуризация таблиц информационной базы (это самый важный флажок, так как он принудительно пересоздает физические таблицы базы данных на диске, устраняя скрытые дефекты распределения памяти).Для клиент-серверных баз аналогичную процедуру реиндексации и очистки процедурного кэша рекомендуется выполнять непосредственно на сервере СУБД (например, MS SQL Server или PostgreSQL) с помощью планов обслуживания базы данных (инструкции DBCC DBREINDEX или VACUUM FULL).
Подводя итоги, отметим, что для быстрого решения проблемы зависания формы подбора в 1С:ЗУП 3.1 стоит действовать методом исключения: сначала обновите платформу 1С до актуальной версии для устранения возможных багов кода, затем очистите и пересчитайте индекс полнотекстового поиска, и наконец, выполните реструктуризацию таблиц информационной базы совместно с перезаполнением служебных регистров данных подбора сотрудников.