В процессе работы с программой 1С:Зарплата и управление персоналом 3.1 (особенно в версии КОРП) пользователи часто сталкиваются с ситуацией, когда при выборе головного подразделения в документе Начисление зарплаты и взносов программа не видит сотрудников подчиненных отделов. На первый взгляд кажется, что система должна автоматически подтягивать всех сотрудников «вниз по дереву», но на практике это происходит не всегда. Разберем детально, почему так происходит и как восстановить правильную работу механизмов иерархического заполнения.
Прежде чем переходить к решению, проанализируем, как 1С обрабатывает структуру компании. В типовых конфигурациях на платформе 8.3 дерево подразделений строится на основе справочника Подразделения. Однако для ускорения работы системы, особенно при построении сложных отчетов и запросов к базе данных, используется вспомогательный механизм — регистр сведений «Подчиненность подразделений организаций».
Этот регистр хранит «развернутую» структуру. Если у подразделения «А» есть дочернее подразделение «Б», а у того — «В», то в регистре будут записи о связи «А-Б», «А-В» и «Б-В». Именно к этому регистру обращаются алгоритмы заполнения документов. Если этот регистр пуст или записи в нем некорректны (что часто случается после первоначального переноса данных, программной загрузки структуры или сбоев при обновлении), система будет считать, что у подразделения «А» нет подчиненных структур, и заполнит документ только сотрудниками самого верхнего уровня.
Если вы столкнулись с ситуацией, когда визуально в справочнике иерархия настроена верно, но в документах (например, НачислениеЗарплаты) по кнопке «Заполнить» подчиненные сотрудники не попадают в список, нам необходимо принудительно обновить данные в служебном регистре. Рассмотрим, как это сделать программным способом через консоль кода или внешнюю обработку.
В конфигурации ЗУП 3.1 за перезаполнение этой структуры отвечает специальный метод. Для исправления ситуации выполним следующий код:
// Вызов процедуры пересчета всей иерархии подразделений
РегистрыСведений.ПодчиненностьПодразделенийОрганизаций.ПерезаполнитьПодчиненностьПодразделений();
После выполнения этой команды система проанализирует текущую структуру справочника Подразделения и заново сформирует все связи в регистре ПодчиненностьПодразделенийОрганизаций. В большинстве случаев это мгновенно решает проблему «невидимости» сотрудников в документах.
Разберем еще одну ситуацию: сотрудники не попадают в документ при использовании кнопки «Подбор». Проанализируем поведение формы подбора. В левой части этой формы отображается дерево подразделений. Важно помнить, что в 1С реализован механизм переключения режима отображения.
Обратим внимание на настройки в самой форме подбора. Часто пользователи не замечают флажок «Выбирать из подчиненных подразделений» (или аналогичную настройку отображения). Если этот флаг снят, то при клике на папку «Администрация» в правой части списка мы увидим только тех людей, которые числятся непосредственно в «Администрации». Чтобы увидеть всех, кто работает в отделах внутри нее, этот флаг должен быть активен.
Посмотрим на типичную ошибку: пользователь видит сотрудников в подборе, выбирает их, но при закрытии формы они не переносятся в документ. Это верный признак того, что данные в регистре подчиненности не соответствуют кадровым данным. Проверьте актуальность записей в регистре Текущие кадровые данные сотрудников.
Выясним причину, по которой сотрудники могут игнорироваться даже при заполненном регистре подчиненности. В 1С:ЗУП 3.1 подразделение имеет реквизиты Дата формирования и Дата расформирования. Если вы пытаетесь заполнить документ за январь, а у подразделения или его родителя установлена дата формирования февралем, система исключит их из выборки.
Также стоит проверить кадровые переводы. Рассмотрим пример: сотрудник был переведен из основного подразделения в подчиненное в середине месяца. При заполнении документа по головному подразделению программа должна корректно определить его принадлежность к иерархии на дату формирования документа. Если в базе включена функциональная опция Обособленные территории или сотрудники закреплены за разными Регистрациями в налоговом органе, то в документе Начисление зарплаты система может разбивать расчеты. Если в шапке документа указана конкретная ИФНС, в него попадут только те сотрудники из иерархии подразделений, которые прикреплены к этой налоговой.
Проанализируем ситуацию в крупных корпоративных базах (версия КОРП). Часто обновление служебных регистров, в том числе и иерархии, выносится на регламентные задания. Если в вашей базе отключено выполнение фоновых заданий (например, в тестовой копии), то любые изменения структуры подразделений не будут подхвачены документами до тех пор, пока не отработает соответствующее задание или не будет сделан ручной вызов, который мы разобрали выше.
Также не стоит забывать про механизм RLS (ограничение прав на уровне записей). Если у расчетчика настроены права доступа только к определенным подразделениям, то при выборе «головного» подразделения, на которое права есть, он все равно не увидит сотрудников «дочерних» отделов, если на них права отсутствуют. Проверьте настройки групп доступа в разделе «Администрирование».
Если сотрудники подчиненных подразделений не попадают в расчет, выполним следующие шаги:
ПерезаполнитьПодчиненностьПодразделений() через консоль разработчика.Подразделения верно указан реквизит Вышестоящее подразделение.Даты расформирования, которая меньше даты документа.Организации или Регистрации в налоговом органе в шапке документа.Следуя этой методике, мы обеспечим корректную работу иерархического заполнения и минимизируем ручной труд при расчете заработной платы в крупных организациях.