Часто в практике торговых компаний возникает ситуация, когда стоимость доставки товара покупателю необходимо включить непосредственно в цену самого товара. Это может быть обусловлено требованиями контрагента (желание видеть «чистую» цену за единицу без выделения услуг), особенностями управленческого учета (необходимость видеть маржинальность с учетом логистики) или исторически сложившимися бизнес-процессами. В типовой конфигурации 1С:Бухгалтерия 3.0 автоматическое «размазывание» услуг по товарным позициям в документе «Реализация (акт, накладная, УПД)» не предусмотрено, в отличие от процесса поступления товаров. В этой статье мы разберем, как решить эту задачу различными методами.
Прежде чем переходить к программной реализации, проанализируем ситуацию с точки зрения бухгалтерского и налогового учета. Согласно ФСБУ 5/2019 «Запасы», расходы на продажу и доставку товаров покупателю являются коммерческими расходами. Они должны отражаться на счете 44 «Расходы на продажу» и не могут увеличивать фактическую себестоимость товаров на счете 41.
Если мы искусственно завышаем цену реализации в базе 1С, мы увеличиваем выручку по конкретным позициям. С точки зрения налогов (НДС и Налог на прибыль) итоговая сумма налога не изменится, если общая сумма документа останется прежней. Однако возникают риски при проверках: если в договоре прописана отдельная стоимость доставки, а в первичных документах (УПД) она «спрятана» в цену товара, налоговая может потребовать объяснений.
Рассмотрим вариант, когда в самой базе данных 1С мы хотим сохранить корректный учет (отдельная строка «Доставка» на счет 90.01), а покупателю выдать документ, где стоимость доставки распределена по товарам. Проанализируем, как это реализовать:
РеализацияТоваровУслуг.Коэффициент = СуммаДоставки / ОбщаяСуммаТоваров.Цена * (1 + Коэффициент).Преимущество: Бухгалтерский учет остается «чистым», выполняются все требования ФСБУ.
Недостаток: При использовании ЭДО (электронного документооборота) данные в файле и данные в вашей базе будут различаться, что приведет к ошибкам сопоставления у контрагента.
Если необходимо, чтобы цены были изменены непосредственно в документе 1С, разберем программный способ. Мы можем создать расширение и добавить кнопку «Распределить услуги» в командную панель документа реализации. Посмотрим на логику работы кода:
// Пример упрощенного алгоритма распределения суммы доставки
&НаСервере
Процедура РаспределитьУслугиНаТовары(ДанныеФормы)
СуммаУслуг = 0;
СтрокиДляУдаления = Новый Массив;
// 1. Ищем услуги доставки и суммируем их
Для Каждого СтрокаУслуг Из ДанныеФормы.Услуги Цикл
Если Найти(СтрокаУслуг.Номенклатура.Наименование, "Доставка") > 0 Тогда
СуммаУслуг = СуммаУслуг + СтрокаУслуг.Сумма;
СтрокиДляУдаления.Добавить(СтрокаУслуг);
КонецЕсли;
КонецЦикла;
Если СуммаУслуг = 0 Тогда Возврат; КонецЕсли;
// 2. Распределяем сумму по товарам пропорционально сумме строк
ОбщаяСуммаТоваров = ДанныеФормы.Товары.Итог("Сумма");
Распределено = 0;
КоличествоСтрок = ДанныеФормы.Товары.Количество();
Для Индекс = 0 По КоличествоСтрок - 1 Цикл
СтрокаТовар = ДанныеФормы.Товары[Индекс];
Если Индекс = КоличествоСтрок - 1 Тогда
// Последняя строка забирает остаток из-за округлений
Добавка = СуммаУслуг - Распределено;
Иначе
Добавка = Окр((СтрокаТовар.Сумма / ОбщаяСуммаТоваров) * СуммаУслуг, 2);
Распределено = Распределено + Добавка;
КонецЕсли;
СтрокаТовар.Сумма = СтрокаТовар.Сумма + Добавка;
// Пересчитываем цену, так как сумма изменилась
СтрокаТовар.Цена = СтрокаТовар.Сумма / СтрокаТовар.Количество;
КонецЦикла;
// 3. Удаляем строки услуг, которые мы распределили
Для Каждого Строка Из СтрокиДляУдаления Цикл
ДанныеФормы.Услуги.Удалить(Строка);
КонецЦикла;
КонецПроцедуры
При использовании этого метода мы фактически меняем данные документа. Проанализируем последствия: в отчете «Анализ продаж» менеджер увидит выручку по товару, которая уже включает в себя доставку. Это решает задачу «управленческого» уменьшения прибыли в глазах менеджера, так как себестоимость (счет 41) остается прежней, а выручка (счет 90.01) растет вместе с ценой реализации.
Выясним причину, по которой иногда требуется выделить доставку особым образом. Если компания не оказывает услуги доставки сама, а перевыставляет услуги транспортной компании (ТК), можно воспользоваться механизмом агентских услуг. Рассмотрим алгоритм:
90) и расходы вашей компании, а отразится транзитом через счет 76.Это методологически верно, если вы действуете как агент. Однако это не решает задачу «спрятать» доставку в стоимость товара.
Разберем подробнее техническую сложность, упомянутую в коде. Предположим, у нас есть 3 штуки товара по 1000 рублей и доставка 500 рублей. 500 на 3 нацело не делится (166.666...). Если мы запишем по 166.67 руб., итоговая сумма доставки станет 500.01 руб. Если запишем по 166.66 руб. — 499.98 руб.
Решение: Всегда рассчитывайте сумму распределения для последней строки как Остаток = ОбщаяСуммаДоставки - УжеРаспределено. Это гарантирует, что итоговая сумма документа (и НДС) в точности совпадет с исходными данными, что критически важно для бухгалтерского баланса и сдачи отчетности.
Если цель — видеть чистую прибыль в отчетах менеджеров, не обязательно менять первичные документы. Рассмотрим альтернативный вариант:
ВаловаяПрибыль - ТранспортныеРасходы.Проанализировав ситуацию, можно сделать вывод: выбор метода зависит от того, кому нужно видеть распределение. Если покупателю — меняем печатную форму. Если менеджеру для аналитики — используем доп. сведения или отчеты. Если «все и сразу» — используем программное распределение в табличной части с учетом рисков округления.