В конфигурации 1С:Зарплата и управление персоналом 3.1 пользователи часто сталкиваются с проблемой, когда иерархия подразделений в справочнике «Штатное расписание» начинает отображаться некорректно. Это может произойти после переноса данных, некорректного использования обработки «Групповое изменение реквизитов» (поможет обработка отката изменений по истории версий) или ручных манипуляций с родительскими подразделениями. Ситуация осложняется, если в программе включена опция ведения истории изменений штатного расписания.
В этой статье мы подробно разберем, почему «разваливается» структура предприятия, как работают внутренние механизмы платформы по учету подчиненности и какие отчеты помогут вернуть иерархию в исходное состояние.
Прежде чем переходить к лечению, проанализируем ситуацию. В ЗУП 3.1 иерархия, которую мы видим в отчетах и формах штатного расписания, строится не только на основе стандартного реквизита Родитель в справочнике ПодразделенияОрганизаций. Система использует более сложный механизм:
Рассмотрим пошагово способы решения проблемы, от самых простых до программных.
В современных релизах ЗУП 3.1 (начиная с 3.1.10 и выше) разработчики предусмотрели штатную команду для принудительной перегенерации иерархических связей. Этот способ является приоритетным, так как он безопасен и не требует написания кода.
Выполним следующие действия:
Важно: Эта команда видна только пользователям с полными правами или правами администратора. Если вы не видите этого пункта, обратитесь к системному администратору. После нажатия система в фоновом режиме пересчитает связи в регистре подчиненности, и дерево подразделений должно восстановиться.
Если интерфейсный метод по каким-то причинам недоступен (например, в старых релизах) или не дает результата, мы можем вызвать процедуру обновления программно через консоль кода или внешнюю обработку. Для этого полезно изучить справочник методов конфигурации, чтобы выяснить, какой именно метод за это отвечает.
В разных версиях конфигурации название метода может отличаться. Рассмотрим пример кода для актуальных версий ЗУП (3.1.10 — 3.1.32):
// Универсальный вызов для большинства актуальных релизов
Справочники.ШтатноеРасписание.ОбновитьСтруктуруШтатногоРасписания();
Если же вы работаете на более ранних версиях (например, ветка 3.1.7 или 3.1.8), попробуйте альтернативное имя метода:
// Вариант для старых релизов
Справочники.ШтатноеРасписание.ОбновитьСтруктуруШтатногоРасписанияПоПодразделениям();
Проанализируем ситуацию, если вы получили ошибку «Метод объекта не обнаружен». Это означает, что в вашем релизе процедура была переименована или перемещена. В таком случае рекомендуется выполнить глобальный поиск по конфигурации строки ОбновитьСтруктуруШтатногоРасписания, чтобы найти актуальное расположение метода в менеджере справочника.
Часто иерархия сбивается из-за того, что у подразделений не заполнены или заполнены некорректно даты их создания. Если подразделение считается «не созданным» на дату просмотра штатного расписания, оно выпадает из общей структуры.
Рассмотрим, как это исправить с помощью обработки «Групповое изменение реквизитов»:
Подразделения.Сформировано (или Дата формирования).Расформировано — он должен быть пустым для действующих подразделений.При ручном исправлении иерархии (как описывал автор темы: назначил родителя — удалил родителя) легко допустить логическую ошибку — циклическую ссылку. Это ситуация, когда Подразделение А является родителем для Подразделения Б, а Подразделение Б указано родителем для Подразделения А.
Посмотрим, как выявить такие ошибки:
Родитель в список.Родитель у всех подразделений, а затем выстройте иерархию заново вручную, начиная с верхнего уровня.Если программное обновление (Способ 2) не помогло, стоит заглянуть в «святая святых» — регистр сведений, где хранятся связи.
Выясним причину через Функции для технического специалиста (ранее — Все функции):
Подчиненность подразделений организаций.ОбновитьСтруктуруШтатногоРасписания(). При вызове метода система увидит, что регистр пуст, и полностью перезаполнит его на основе актуальных данных из справочника подразделений.В ЗУП 3.1 существует также реквизит Головное подразделение. Часто при сбоях иерархии в него записывается ссылка на само подразделение, хотя оно находится глубоко в структуре. Проверьте через групповое изменение, чтобы у всех подразделений одной организации в поле Головное подразделение была указана ссылка на самое верхнее подразделение этой организации (обычно это само название организации в списке подразделений).
Резюме: В большинстве случаев для восстановления иерархии достаточно выполнить команду «Обновить структуру штатного расписания» из меню «Еще» самого штатного расписания. Если это не помогает — проверяйте даты формирования подразделений и отсутствие циклических ссылок в поле «Родитель».