При работе в 1С:ERP Управление предприятием (или в 1С:ЗУП 3.1) пользователи часто сталкиваются с особенностью работы документа Начисление зарплаты и взносов. Если в шапке документа выбрать вышестоящее подразделение (например, целый цех или департамент), программа автоматически подтягивает только тех сотрудников, которые числятся в этом подразделении напрямую. Все сотрудники дочерних отделов, бюро или участков при этом игнорируются. Разберем подробно, почему так происходит, и какими способами можно решить эту задачу — от простых организационных методов до программной доработки системы.
Прежде чем переходить к решениям, проанализируем логику разработчиков фирмы «1С». В крупных организациях иерархия подразделений может быть очень глубокой. Автоматическое заполнение «по иерархии» при простом выборе подразделения в шапке могло бы привести к серьезным ошибкам:
Структура предприятия (управленческая) и Подразделения организаций (регламентированная). Начисление зарплаты всегда жестко привязано к регламентированной структуре.Рассмотрим пошагово способы, которые позволяют обойти это ограничение.
Многие пользователи отказываются от кнопки Подбор, считая её неудобной при большом штате сотрудников. Однако проанализируем, как использовать этот инструмент максимально эффективно для нашей задачи. Рассмотрим алгоритм действий:
Начисление зарплаты и взносов и создадим новый.Подразделение в шапке можно оставить пустым или указать вышестоящее для фильтрации, но это не решит вопрос заполнения автоматически.Ctrl+A, чтобы выделить сразу всех найденных сотрудников в правой колонке.Этот метод позволяет за несколько секунд добавить сотни людей из всех дочерних структур, не прибегая к программированию.
Если начисление по определенному кусту подразделений производится регулярно, целесообразно настроить Списки сотрудников. Это встроенный справочник, который позволяет группировать людей по произвольным признакам.
Разберем, как это настроить:
Подразделение В ИЕРАРХИИ [Нужное подразделение].Теперь при заполнении документа начисления мы можем нажать кнопку Подбор, в поле «Вид списка» выбрать наш созданный список, и система мгновенно выдаст нам всех нужных людей из всех вложенных подразделений. Это избавляет от необходимости каждый раз вручную искать подразделения в дереве.
Если компания настаивает на том, чтобы при выборе подразделения в шапке и нажатии кнопки Заполнить система сама «проваливалась» внутрь иерархии, потребуется вмешательство программиста. Выясним техническую суть такой доработки.
Процедуры заполнения документа начисления зарплаты находятся в модуле менеджера документа или специализированных общих модулях (например, РасчетЗарплатыРасширенный). Основная задача — изменить запрос к базе данных, который собирает сотрудников.
В типовом коде условие запроса выглядит примерно так:
ГДЕ
Сотрудники.Подразделение = &Подразделение
Для реализации нашей задачи в расширении необходимо переопределить это условие на использование оператора В ИЕРАРХИИ. Рассмотрим пример концептуального кода для модификации запроса:
&Вместо("СформироватьЗапросДляЗаполнения")
Процедура Мой_СформироватьЗапросДляЗаполнения(ТекстЗапроса)
// Заменяем точное соответствие на иерархическое сравнение
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"Подразделение = &Подразделение",
"Подразделение В ИЕРАРХИИ (&Подразделение)");
КонецПроцедуры
Внимание! При использовании такого метода критически важно добавить проверку на наличие уже созданных документов начисления по вложенным подразделениям за этот же месяц. В противном случае система может попытаться начислить зарплату тем, кому она уже рассчитана, что приведет к ошибкам в регистрах расчета.
Проанализируем ситуацию с точки зрения налогового учета. Если в вашей иерархии присутствуют подразделения, имеющие статус обособленных (со своим КПП и регистрацией в ИФНС), то начисление зарплаты по ним в одном общем документе с вышестоящим подразделением может быть технически невозможно или методологически неверно.
Система 1С:ERP контролирует регистрацию в налоговых органах. Если сотрудники относятся к разным ИФНС, программа потребует разделения документов для корректного формирования отчетности по форме 6-НДФЛ. В этом случае начисление «по вышестоящему» будет блокироваться самой логикой налогового учета, и использование подбора или доработок не решит проблему корректного учета налога.
Мы рассмотрели три основных пути решения задачи. Если ваша цель — избежать доработок и сохранить поддержку конфигурации в типовом виде, рекомендуем использовать механизм подбора с выделением через Ctrl+A или настроить динамические группы сотрудников. Если же процесс требует полной автоматизации, используйте расширение для изменения оператора сравнения подразделений в запросе, не забывая о контроле уникальности начислений.