Как в 1С:ERP начислить зарплату по вышестоящему подразделению с учетом всех вложенных отделов

Бухгалтер 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

При работе в 1С:ERP Управление предприятием (или в 1С:ЗУП 3.1) пользователи часто сталкиваются с особенностью работы документа Начисление зарплаты и взносов. Если в шапке документа выбрать вышестоящее подразделение (например, целый цех или департамент), программа автоматически подтягивает только тех сотрудников, которые числятся в этом подразделении напрямую. Все сотрудники дочерних отделов, бюро или участков при этом игнорируются. Разберем подробно, почему так происходит, и какими способами можно решить эту задачу — от простых организационных методов до программной доработки системы.

Анализируем причину поведения системы

Прежде чем переходить к решениям, проанализируем логику разработчиков фирмы «1С». В крупных организациях иерархия подразделений может быть очень глубокой. Автоматическое заполнение «по иерархии» при простом выборе подразделения в шапке могло бы привести к серьезным ошибкам:

  1. Дублирование данных: Если по одному из дочерних отделов зарплата уже начислена отдельным документом, то при заполнении по «голове» возникнет конфликт периодов и двойное начисление.
  2. Разделение зон ответственности: Часто за расчет зарплаты в разных цехах отвечают разные расчетчики. Типовой механизм защищает их от случайного изменения данных в чужих подразделениях.
  3. Регламентированная структура: В ERP существует Структура предприятия (управленческая) и Подразделения организаций (регламентированная). Начисление зарплаты всегда жестко привязано к регламентированной структуре.

Рассмотрим пошагово способы, которые позволяют обойти это ограничение.

Способ 1: Оптимизированный механизм «Подбор»

Многие пользователи отказываются от кнопки Подбор, считая её неудобной при большом штате сотрудников. Однако проанализируем, как использовать этот инструмент максимально эффективно для нашей задачи. Рассмотрим алгоритм действий:

  1. Откроем документ Начисление зарплаты и взносов и создадим новый.
  2. В шапке документа укажем организацию и месяц. Поле Подразделение в шапке можно оставить пустым или указать вышестоящее для фильтрации, но это не решит вопрос заполнения автоматически.
  3. Нажмем кнопку Подбор над табличной частью документа.
  4. В открывшемся окне подбора в левой части экрана переключим режим просмотра на «По подразделениям» (иконка в виде дерева).
  5. Выберем в дереве наше вышестоящее подразделение. В правой части окна отобразятся сотрудники только этого узла.
  6. Важный момент: Чтобы увидеть всех сотрудников, включая вложенные подразделения, убедимся, что в настройках формы подбора или через контекстное меню включен режим отображения сотрудников иерархически.
  7. Нажмем комбинацию клавиш Ctrl+A, чтобы выделить сразу всех найденных сотрудников в правой колонке.
  8. Нажмем кнопку Выбрать.

Этот метод позволяет за несколько секунд добавить сотни людей из всех дочерних структур, не прибегая к программированию.

Способ 2: Использование динамических списков (Группы сотрудников)

Если начисление по определенному кусту подразделений производится регулярно, целесообразно настроить Списки сотрудников. Это встроенный справочник, который позволяет группировать людей по произвольным признакам.

Разберем, как это настроить:

  1. Перейдем в раздел Зарплата — Настройки и справочники — Списки сотрудников.
  2. Создадим новый список и назовем его, например, «Сотрудники цеха №1 (все)».
  3. В настройках формирования списка выберем вариант «Формировать динамически».
  4. В условии отбора укажем: Подразделение В ИЕРАРХИИ [Нужное подразделение].

Теперь при заполнении документа начисления мы можем нажать кнопку Подбор, в поле «Вид списка» выбрать наш созданный список, и система мгновенно выдаст нам всех нужных людей из всех вложенных подразделений. Это избавляет от необходимости каждый раз вручную искать подразделения в дереве.

Способ 3: Программная доработка через расширение

Если компания настаивает на том, чтобы при выборе подразделения в шапке и нажатии кнопки Заполнить система сама «проваливалась» внутрь иерархии, потребуется вмешательство программиста. Выясним техническую суть такой доработки.

Процедуры заполнения документа начисления зарплаты находятся в модуле менеджера документа или специализированных общих модулях (например, РасчетЗарплатыРасширенный). Основная задача — изменить запрос к базе данных, который собирает сотрудников.

В типовом коде условие запроса выглядит примерно так:


ГДЕ
    Сотрудники.Подразделение = &Подразделение

Для реализации нашей задачи в расширении необходимо переопределить это условие на использование оператора В ИЕРАРХИИ. Рассмотрим пример концептуального кода для модификации запроса:


&Вместо("СформироватьЗапросДляЗаполнения")
Процедура Мой_СформироватьЗапросДляЗаполнения(ТекстЗапроса)
    // Заменяем точное соответствие на иерархическое сравнение
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, 
        "Подразделение = &Подразделение", 
        "Подразделение В ИЕРАРХИИ (&Подразделение)");
КонецПроцедуры

Внимание! При использовании такого метода критически важно добавить проверку на наличие уже созданных документов начисления по вложенным подразделениям за этот же месяц. В противном случае система может попытаться начислить зарплату тем, кому она уже рассчитана, что приведет к ошибкам в регистрах расчета.

Важные нюансы: Обособленные подразделения

Проанализируем ситуацию с точки зрения налогового учета. Если в вашей иерархии присутствуют подразделения, имеющие статус обособленных (со своим КПП и регистрацией в ИФНС), то начисление зарплаты по ним в одном общем документе с вышестоящим подразделением может быть технически невозможно или методологически неверно.

Система 1С:ERP контролирует регистрацию в налоговых органах. Если сотрудники относятся к разным ИФНС, программа потребует разделения документов для корректного формирования отчетности по форме 6-НДФЛ. В этом случае начисление «по вышестоящему» будет блокироваться самой логикой налогового учета, и использование подбора или доработок не решит проблему корректного учета налога.

Резюме

Мы рассмотрели три основных пути решения задачи. Если ваша цель — избежать доработок и сохранить поддержку конфигурации в типовом виде, рекомендуем использовать механизм подбора с выделением через Ctrl+A или настроить динамические группы сотрудников. Если же процесс требует полной автоматизации, используйте расширение для изменения оператора сравнения подразделений в запросе, не забывая о контроле уникальности начислений.

← На главную