Как построить отчет по дебиторской задолженности в разрезе номенклатуры в 1С?

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

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

Разберем причины возникновения такой потребности, выясним архитектурные ограничения типовых конфигураций 1С и рассмотрим практические способы решения этой задачи.

Зачем бизнесу дебиторка по товарам

На практике подобный отчет требуется руководству в нескольких распространенных сценариях:

  1. Расчет мотивации и премий менеджерам. Во многих компаниях выплата бонусной части привязана не к моменту отгрузки, а строго к поступлению денег за конкретные высокомаржинальные, фокусные или акционные позиции.
  2. Целевое финансирование и факторинг. Если закупка определенного оборудования или сырья финансировалась банком или сторонним инвестором, компании требуется раздельный учет погашения обязательств перед кредитором именно под эти товары.
  3. Агентские и комиссионные продажи. Принципалу необходимо перечислять деньги по мере фактической оплаты покупателем конкретной партии комиссионного товара.
  4. Управление лимитами по дефицитным позициям. Устанавливается запрет на отгрузку новой партии дефицитной продукции клиенту, если он не закрыл задолженность за прошлую отгрузку аналогичного товара.

Почему задача вызывает методологический тупик

Проанализируем архитектуру подсистемы взаиморасчетов в программах платформы 1С. Во всех типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP) денежный контур строго отделен от товарного контура.

Регистры накопления взаиморасчетов (такие как РасчетыСКлиентами, РасчетыСКлиентамиПоДокументам или ВзаиморасчетыСКонтрагентами), а также счета бухгалтерского учета (62, 76) имеют максимальную аналитику: Организация, Контрагент, Договор и Объект расчетов (заказ или документ реализации). Измерения Номенклатура в регистрах взаиморасчетов нет.

Платежные документы (ПоступлениеБезналичныхДС, ПриходныйКассовыйОрдер) фиксируют только факт поступления денежных средств на расчетный счет или в кассу. В них нет и не может быть товарной табличной части. Покупатель оплачивает накладную или счет целиком, одной суммой, не указывая в платежном поручении, за какую именно строку он перевел деньги.

Посмотрим на классический пример: клиенту отгрузили по одной накладной товар А на сумму 1000 рублей и товар Б на сумму 1000 рублей. Общая сумма реализации — 2000 рублей. Покупатель перечислил частичную оплату в размере 1000 рублей. Какова задолженность по товару А? Возможны три варианта:

  1. Задолженность по товару А равна 0 рублей, а по товару Б — 1000 рублей (считаем, что сначала закрылся товар А).
  2. Задолженность по товару А равна 1000 рублей, а по товару Б — 0 рублей (считаем, что сначала закрылся товар Б).
  3. Задолженность по обоим товарам составляет по 500 рублей (оплата распределена пропорционально стоимости товаров).

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

Решение 1. Организационно-методологическое разделение

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

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

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

Решение 2. Расчетный отчет на Системе компоновки данных (СКД)

Если менять регламент оформления документов невозможно, строим внешний отчет в СКД, который берет фактический остаток долга по накладной и распределяет его по товарным строкам расчетным путем.

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

  1. Получаем остатки дебиторской задолженности из виртуальной таблицы Остатки регистра взаиморасчетов в разрезе расчетных документов (накладных).
  2. Связываем полученные накладные с их табличными частями Товары с помощью левого соединения.
  3. Вычисляем долю каждой строки номенклатуры в общей сумме документа реализации.
  4. Определяем расчетный долг по строке номенклатуры.

Посмотрим на пример текста запроса для набора данных СКД:


ВЫБРАТЬ
    ВзаиморасчетыОстатки.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
    ВзаиморасчетыОстатки.ЗаказКлиента КАК ОбъектРасчетов,
    ВзаиморасчетыОстатки.РасчетныйДокумент КАК РасчетныйДокумент,
    ВзаиморасчетыОстатки.ДолгОстаток КАК ДолгПоДокументу,
    РеализацияТовары.Номенклатура КАК Номенклатура,
    РеализацияТовары.СуммаСНДС КАК СуммаСтроки,
    Реализация.СуммаДокумента КАК СуммаДокумента
ИЗ
    РегистрНакопления.РасчетыСКлиентами.Остатки(&Период, ) КАК ВзаиморасчетыОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализация
        ПО ВзаиморасчетыОстатки.РасчетныйДокумент = Реализация.Ссылка
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
        ПО ВзаиморасчетыОстатки.РасчетныйДокумент = РеализацияТовары.Ссылка
ГДЕ
    ВзаиморасчетыОстатки.ДолгОстаток > 0

Далее в настройках СКД на вкладке Вычисляемые поля добавляем поле ДолгПоНоменклатуре с выражением пропорционального распределения:


ВЫБОР 
    КОГДА СуммаДокумента = 0 ТОГДА 0 
    ИНАЧЕ ДолгПоДокументу * (СуммаСтроки / СуммаДокумента) 
КОНЕЦ

Если заказчик требует закрывать позиции по порядку (метод FIFO), алгоритм вычисления усложняется: строки документа нумеруются, после чего сумма поступившей оплаты (СуммаДокумента - ДолгПоДокументу) последовательно списывает суммы строк начиная с первой.

Решение 3. Создание специализированного регистра накопления

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

Разберем этапы доработки:

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

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

Решение 4. Использование типовых инструментов аналитики

Если цель заказчика — видеть долги не по отдельным артикулам, а по крупным категориям или проектам, можно использовать возможности типовых конфигураций 1С:ERP и 1С:Комплексная автоматизация без модификации кода.

  1. Направления деятельности. В настройках системы включаем ведение расчетов с клиентами по направлениям деятельности. Если закрепить за каждым направлением определенную товарную категорию, взаиморасчеты будут автоматически детализироваться в стандартных отчетах.
  2. Учет по договорам. С контрагентом заключается несколько договоров под разные номенклатурные группы, а взаиморасчеты ведутся с детализацией По договорам. Это позволяет контролировать задолженность стандартной ведомостью расчетов с клиентами.
← На главную