При работе в конфигурации «1С:Управление производственным предприятием» (УПП 1.3) и других типовых решениях пользователи часто сталкиваются с необходимостью узнать, за какой конкретно товар контрагент остался должен деньги. Однако стандартного отчета для решения этой задачи в платформе 1С не предусмотрено.
Проанализируем методические причины такого поведения системы и рассмотрим практические варианты решения данной задачи.
В бухгалтерском и управленческом учете деньги являются обезличенным средством платежа. Взаиморасчеты с покупателями ведутся по суммовым обязательствам. Регистры накопления взаиморасчетов (например, ВзаиморасчетыСКонтрагентами) содержат измерения Контрагент, ДоговорКонтрагента, Сделка или ДокументРасчетов, но не содержат измерения Номенклатура.
Если контрагент отгружен по одной накладной на 10 000 рублей (где 3 позиции номенклатуры), а затем перечислил частичную оплату в размере 4 000 рублей, система фиксирует только уменьшение общего долга по договору или накладной. Она не может однозначно определить, какую именно номенклатуру из трех контрагент уже оплатил, а за какую удерживает долг.
Если менять учетную политику и схему проведения документов нельзя, наиболее распространенным решением является разработка внешнего отчета (на СКД или с использованием алгоритма на сервере). Отчет берет суммовой остаток задолженности и справочно распределяет его по номенклатурным позициям из документов реализации.
Рассмотрим основные методики распределения:
Рассмотрим пример алгоритма выборки неоплаченных товаров по документу методом перебора строк:
// Пример логики выборки номенклатуры под остаток долга
ОстатокДолга = ДокументРеализации.СуммаДокумента - СуммаОплаты;
Если ОстатокДолга > 0 Тогда
Для Каждого СтрокаТЧ Из ДокументРеализации.Товары Цикл
СуммаСтроки = СтрокаТЧ.Сумма;
Если ОстатокДолга >= СуммаСтроки Тогда
ДолгПоТовару = СуммаСтроки;
ОстатокДолга = ОстатокДолга - СуммаСтроки;
Иначе
ДолгПоТовару = ОстатокДолга;
ОстатокДолга = 0;
КонецЕсли;
// Вывод строки Номенклатура - ДолгПоТовару в отчет
Если ОстатокДолга = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если требуется штатный и точный контроль, пересмотрим структуру ведения взаиморасчетов средствами конфигурации:
По заказам. Каждая оплата привязывается к конкретному документу Заказ покупателя. В таком случае задолженность детализируется до заказа, состав которого строго определен номенклатурной спецификацией.Ведомость по взаиморасчетам с контрагентами.Если юридически и фактически переданный товар остается в собственности продавца до момента полной оплаты покупателем, задействуем схему комиссионной торговли (передача товара на реализацию). В этом случае отгрузка оформляется документом Реализация товаров и услуг с видом операции На комиссию.
При использовании данной схемы товар числится за контрагентом на счете 45 (или в регистре Товары переданные), и стандартные отчеты по комиссии позволяют точно видеть, какая именно номенклатура находится у контрагента и еще не подлежала оплате (не закрыта документом Отчет комиссионера о продажах).
Для быстрого получения справочных данных без изменения структуры базы данных оптимальным решением является создание внешнего отчета с виртуальным распределением суммы долга по позициям последних накладных. Для строгого учета следует использовать детализацию расчетов до документа Заказ покупателя или разделять взаиморасчеты по специализированным договорам.