Как изменить отображение сальдо и выплат в расчетных листках и своде начислений ЗУП 3?

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

При переходе с редакции 2.5 конфигурации «Зарплата и управление персоналом» на редакцию 3.0 пользователи и расчетчики часто сталкиваются с принципиальным отличием в формировании отчетов: Свод начислений и удержаний, Расчетный листок и форма Т-51 показывают взаиморасчеты по так называемому «зарплатному» принципу, а не по фактическим датам выплат.

Разберем подробнее, почему возникает эта разница, какие существуют способы технической доработки системы для получения «бухгалтерского» сальдо (по аналогии со счетом 70), а также рассмотрим штатные механизмы современных версий ЗУП 3.1.

Выясним причину такого поведения конфигурации. В системе выделяются два подхода к учету взаиморасчетов:

  1. Зарплатное сальдо (по месяцам начисления) — базовый принцип редакции ЗУП 3.0. Все начисления, удержания и выплаты жестко связываются с месяцем, за который они рассчитаны (периодом взаиморасчетов). Если зарплата за январь выплачивается 10 февраля, в зарплатном отчете за январь сальдо будет закрыто в ноль, так как выплата относится к январскому расчетному периоду.
  2. Бухгалтерское сальдо (по фактической дате выплаты) — классический принцип редакции 2.5 и бухгалтерского учета по счету 70. Выплаты попадают строго в тот календарный месяц, когда фактически были оформлены и проведены платежные документы.

Способ 1. Модификация общего запроса сбора данных для отчетов

В типовой конфигурации ЗУП 3 за подготовку данных для большинства зарплатных отчетов отвечает функция ЗарплатаКадрыОбщиеНаборыДанныхБазовый.ПолучитьТекстОбщегоЗапроса. Чтобы отчеты строили начальные и конечные остатки с учетом даты регистратора выплат, проанализируем изменение логики выборки данных регистра накопления ВзаиморасчетыССотрудниками.

Посмотрим на пример запроса, формирующего временную таблицу оборотов с заменой периода для выплат на месяц даты документа-регистратора:


ВЫБРАТЬ
    ВЫБОР
        КОГДА ВзаиморасчетыССотрудниками.ГруппаНачисленияУдержанияВыплаты = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Выплачено)
            ТОГДА НАЧАЛОПЕРИОДА(ВзаиморасчетыССотрудниками.Регистратор.Дата, МЕСЯЦ)
        ИНАЧЕ ВзаиморасчетыССотрудниками.Период
    КОНЕЦ КАК Период,
    СУММА(ВЫБОР
            КОГДА ВзаиморасчетыССотрудниками.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                ТОГДА ВзаиморасчетыССотрудниками.СуммаВзаиморасчетов
            ИНАЧЕ 0
        КОНЕЦ) КАК Приход,
    СУММА(ВЫБОР
            КОГДА ВзаиморасчетыССотрудниками.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
                ТОГДА ВзаиморасчетыССотрудниками.СуммаВзаиморасчетов
            ИНАЧЕ 0
        КОНЕЦ) КАК Расход,
    ВзаиморасчетыССотрудниками.Организация КАК Организация,
    ВзаиморасчетыССотрудниками.Сотрудник КАК Сотрудник,
    ВзаиморасчетыССотрудниками.ФизическоеЛицо КАК ФизическоеЛицо,
    ВзаиморасчетыССотрудниками.СтатьяФинансирования КАК СтатьяФинансирования,
    ВзаиморасчетыССотрудниками.СтатьяРасходов КАК СтатьяРасходов,
    ВзаиморасчетыССотрудниками.Подразделение КАК Подразделение
ПОМЕСТИТЬ ВТВсеОборотыРегистра
ИЗ
    РегистрНакопления.ВзаиморасчетыССотрудниками КАК ВзаиморасчетыССотрудниками
{ГДЕ
    ВзаиморасчетыССотрудниками.Сотрудник.*,
    ВзаиморасчетыССотрудниками.ФизическоеЛицо.*,
    ВзаиморасчетыССотрудниками.Организация.*,
    ВзаиморасчетыССотрудниками.Сотрудник.ГоловнойСотрудник.* КАК ГоловнойСотрудник}

СГРУППИРОВАТЬ ПО
    ВЫБОР
        КОГДА ВзаиморасчетыССотрудниками.ГруппаНачисленияУдержанияВыплаты = ЗНАЧЕНИЕ(Перечисление.ГруппыНачисленияУдержанияВыплаты.Выплачено)
            ТОГДА НАЧАЛОПЕРИОДА(ВзаиморасчетыССотрудниками.Регистратор.Дата, МЕСЯЦ)
        ИНАЧЕ ВзаиморасчетыССотрудниками.Период
    КОНЕЦ,
    ВзаиморасчетыССотрудниками.Организация,
    ВзаиморасчетыССотрудниками.Сотрудник,
    ВзаиморасчетыССотрудниками.ФизическоеЛицо,
    ВзаиморасчетыССотрудниками.СтатьяФинансирования,
    ВзаиморасчетыССотрудниками.СтатьяРасходов,
    ВзаиморасчетыССотрудниками.Подразделение;

Далее на основании полученной таблицы рассчитываем входящее сальдо до начала периода формирования отчета:


ВЫБРАТЬ
    ВТВсеОборотыРегистра.Организация КАК Организация,
    ВТВсеОборотыРегистра.Сотрудник КАК Сотрудник,
    ВТВсеОборотыРегистра.ФизическоеЛицо КАК ФизическоеЛицо,
    ВТВсеОборотыРегистра.СтатьяФинансирования КАК СтатьяФинансирования,
    ВТВсеОборотыРегистра.СтатьяРасходов КАК СтатьяРасходов,
    ВТВсеОборотыРегистра.Подразделение КАК Подразделение,
    СУММА(ВТВсеОборотыРегистра.Приход - ВТВсеОборотыРегистра.Расход) КАК Остаток
ПОМЕСТИТЬ ВТСальдоНаНачалоПериода
ИЗ
    ВТВсеОборотыРегистра КАК ВТВсеОборотыРегистра
ГДЕ
    ВТВсеОборотыРегистра.Период < &НачалоПериода

СГРУППИРОВАТЬ ПО
    ВТВсеОборотыРегистра.Организация,
    ВТВсеОборотыРегистра.Сотрудник,
    ВТВсеОборотыРегистра.ФизическоеЛицо,
    ВТВсеОборотыРегистра.СтатьяФинансирования,
    ВТВсеОборотыРегистра.СтатьяРасходов,
    ВТВсеОборотыРегистра.Подразделение;

Соединяя входящие остатки с оборотами расчетного периода, формируем итоговую таблицу остатков и оборотов ВТОстаткиИОбороты, которая имитирует виртуальную таблицу, но выстраивает сальдо по хронологии фактических дат.

Важное предостережение: при такой переработке запроса следует учитывать документы ПереносДанных и ручные корректировки. Дата самого документа переноса может относиться к текущему месяцу, из-за чего исторические движения выплат могут некорректно попасть в текущие периоды.

Способ 2. Корректировка записи периода при проведении ведомостей

Альтернативный путь — изменение логики записи движений в регистр взаиморасчетов на этапе проведения платежных документов. В общем модуле или модуле менеджера ведомостей в процедуре ВедомостьЗарегистрироватьВыплатуСтроки анализируется блок формирования записей по взаиморасчетам.

Вместо записи периода регистрации документа:

Запись.Период = Ведомость.ПериодРегистрации;

Устанавливается дата самой ведомости:

Запись.Период = НачалоМесяца(Ведомость.Дата);

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

Настройка поля «К выплате» в схеме компоновки данных (СКД)

В типовых расчетных листках поле К выплате рассчитывается как сумма выплаты за период. Если требуется, чтобы оно отражало конечное сальдо (долг предприятия на конец месяца), разберем настройку пользовательского поля схемы отчета АнализНачисленийИУдержаний (вариант Расчетный листок):

  1. Открываем схему компоновки данных нужного отчета.
  2. Находим вычисляемое поле или пользовательское выражение КВыплате.
  3. Заменяем типовое выражение:
    
    Выбор Когда ВидРасчета = Значение(Перечисление.ВидыВзаиморасчетовССотрудниками.ВыплатаЗарплаты) Тогда Сумма Иначе 0 Конец
    
    на выражение конечного сальдо:
    
    Выбор Когда Группа = Значение(Перечисление.ГруппыНачисленияУдержанияВыплаты.КонечноеСальдо) Тогда Сумма Иначе 0 Конец
    
  4. В ресурсах СКД для поля КВыплате устанавливаем расчет как Сумма(КВыплате).

Штатный механизм переключения сальдо в ЗУП 3.1

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

Разберем, как включить бухгалтерское сальдо штатно:

  1. Переходим в раздел Настройка → Дополнительные настройки.
  2. В блоке Настройки печатных форм и отчетов находим пункт «Показывать взаиморасчеты».
  3. Выбираем вариант «По данным бухучета» (вместо значения по умолчанию «По месяцам расчета зарплаты»).

После включения этой настройки все зарплатные отчеты, включая Расчетный листок и Полный свод начислений, удержаний и выплат, автоматически начинают рассчитывать остатки и выплаты по датам фактических выплат, полностью совпадая с оборотно-сальдовой ведомостью по счету 70.

← На главную