Как в 1С:Бухгалтерии 3.0 распределить затраты на оплату труда по 20 счету пропорционально выручке

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

При ведении учета в программе 1С:Бухгалтерия 3.0 КОРП в связке с 1С:ЗУП 3.1 часто возникает методологическая сложность: как распределить заработную плату производственных рабочих, если они задействованы сразу в нескольких проектах (номенклатурных группах), а количество этих групп исчисляется десятками или сотнями. Прямое указание номенклатурной группы для каждого сотрудника в ЗУП становится нерациональным, а типовой механизм БП 3.0 не предполагает автоматического распределения прямых затрат с 20 счета "по выручке" в момент загрузки данных.

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

Методологическая коллизия: 20 или 25 счет

Перед тем как приступать к технической реализации, проанализируем учетную политику. Согласно ФСБУ 5/2019, затраты, которые невозможно прямо отнести на конкретную единицу продукции или номенклатурную группу в момент их возникновения, признаются косвенными. В 1С для таких целей предназначен счет 25 «Общепроизводственные расходы».

Если мы используем счет 25, проблема решается типовыми средствами:

  1. В настройках учетной политики устанавливаем базу распределения "Выручка".
  2. В регистре "Методы распределения косвенных расходов" указываем, что затраты счета 25 распределяются пропорционально выручке.
  3. При закрытии месяца программа сама соберет обороты по счету 90.01 и распределит зарплату между номенклатурными группами.

Однако, если бухгалтерия настаивает на использовании счета 20 (прямые затраты), нам придется либо распределять их на стороне ЗУП, либо дорабатывать логику проведения документа в БП.

Решение 1: Типовое распределение на стороне ЗУП 3.1

Наиболее правильным с точки зрения архитектуры 1С является подготовка корректных данных в источнике (ЗУП). В программе предусмотрен документ Распределение основного заработка. Рассмотрим, как это работает:

Для каждого сотрудника или подразделения можно задать доли распределения ФОТ по разным Способам отражения в бухучете. Каждый способ в БП будет соответствовать своей номенклатурной группе на 20 счете.

Чтобы не вводить эти данные вручную, проанализируем возможность автоматизации:

  1. Создаем внешнюю обработку для ЗУП.
  2. Алгоритм обработки подключается к базе БП (через COM-соединение или HTTP-сервис) и получает данные о выручке (обороты счета 90.01) в разрезе подразделений и номенклатурных групп за отчетный период.
  3. На основе этих долей автоматически заполняется документ Распределение основного заработка в ЗУП.
  4. При формировании документа Отражение зарплаты в бухучете программа сама "нарежет" суммы зарплаты, налогов и взносов по нужным аналитикам.

Плюс этого метода: В БП прилетает готовый документ, который не конфликтует с закрытием месяца, а взносы распределяются идеально точно вместе с зарплатой.

Решение 2: Автоматизация распределения в БП через расширение

Если перенос данных из БП в ЗУП невозможен, рассмотрим вариант модификации документа Отражение зарплаты в бухучете непосредственно в 1С:Бухгалтерии. Наша задача — в момент проведения или заполнения документа программно разделить одну строку (без НГ) на несколько строк (по НГ с выручкой).

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


// Пример получения структуры выручки для распределения
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ХозрасчетныйОбороты.НоменклатурнаяГруппа КАК НГ,
|	ХозрасчетныйОбороты.СуммаОборотКт КАК Выручка
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, , Счет = &Счет90, , Подразделение = &ТекущееПодразделение) КАК ХозрасчетныйОбороты";

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Объект.ПериодРегистрации));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.ПериодРегистрации));
Запрос.УстановитьПараметр("Счет90", ПланыСчетов.Хозрасчетный.Выручка);
Запрос.УстановитьПараметр("ТекущееПодразделение", ПодразделениеОтражения);

Выборка = Запрос.Выполнить().Выбрать();

Проанализируем технические риски этого подхода:

Решение 3: Использование промежуточной номенклатурной группы

Выясним, существует ли способ обойтись без сложного программирования. Рассмотрим схему с "транзитной" аналитикой:

  1. В ЗУП настраиваем отражение всех рабочих на одну техническую номенклатурную группу, например, «Зарплата к распределению».
  2. В БП после загрузки документа Отражение зарплаты мы имеем всю сумму на 20 счете на этой "транзитной" группе.
  3. Создаем документ Операция, введенная вручную (или специальную обработку), которая в конце месяца делает сторно с этой группы и переносит суммы на реальные НГ, по которым зафиксирована выручка.

Этот метод позволяет сохранить типовой документ отражения "чистым", что важно для последующих обновлений и сверки с расчетчиком в ЗУП.

Рекомендации по реализации через расширение

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

Посмотрим на пример логики распределения в модуле объекта документа через расширение:


&После("ОбработкаПроведения")
Процедура Распр_ПослеОбработкиПроведения(Отказ, РежимПроведения)
    // 1. Проверяем, что это документ отражения зарплаты
    // 2. Рассчитываем доли выручки по подразделениям из документа
    // 3. Формируем таблицу корректировок проводок
    // 4. Записываем наборы записей регистра Хозрасчетный с подменой НГ
    // Важно: регистратор остается типовым, но движения меняются согласно вашей логике
КонецПроцедуры

Важный нюанс: Отражение зарплаты в БП обычно проводится до закрытия 20 счета. Убедитесь, что на момент проведения документа выручка по счету 90 уже отражена (все реализации проведены). Если реализация происходит позже, чем отражение зарплаты, база распределения будет неверной. В таком случае логику распределения лучше перенести в отдельный регламентный шаг перед закрытием месяца.

Заключение

Мы проанализировали три способа решения задачи. Наиболее стабильным является автоматизация заполнения Распределения основного заработка в ЗУП на основе данных из БП. Это сохраняет целостность данных в обеих базах. Вариант с расширением в БП более гибок, но требует тщательной проработки распределения страховых взносов и обработки ошибок округления. Вариант с 25 счетом остается самым простым и методологически верным с точки зрения 1С, и мы рекомендуем еще раз обсудить его с бухгалтерией перед началом разработки.

← На главную