При формировании управленческой отчетности по взаиморасчетам в конфигурации «1С:Управление торговлей 11» (УТ 11) часто возникает потребность увидеть дебиторскую задолженность не только по контрагентам, но и в более детальных разрезах: по ответственным менеджерам, торговым подразделениям и даже конкретным номенклатурным позициям. Однако при попытке настроить типовой отчет Ведомость расчетов с клиентами пользователи сталкиваются с тем, что стандартное поле Регистратор не раскрывает свойства, а в регистрах расчетов измерение номенклатуры отсутствует вовсе. Разберем по шагам, почему возникают эти сложности и какими практическими путями можно решить поставленную задачу.
Выясним причину поведения поля Регистратор в Системе компоновки данных. Стандартное поле Регистратор имеет составной ссылочный тип данных, объединяющий десятки документов конфигурации (заказы, реализации, платежные поручения, корректировки долга и т. д.). Поскольку набор реквизитов у разных видов документов различается, платформа 1С не может автоматически развернуть список свойств через «плюс» в режиме пользователя. Для извлечения конкретных реквизитов из регистратора в СКД требуется программно ограничить тип с помощью функции ВЫРАЗИТЬ или использовать вычисляемые поля с конструкцией ВЫБОР.
Рассмотрим, как вывести менеджера и подразделение без доработки конфигурации. Архитектура взаиморасчетов в УТ 11 опирается на регистры накопления РасчетыСКлиентами и РасчетыСКлиентамиПоСрокам. Измерений менеджера и подразделения в них нет, но они хранятся в связанных объектах. Применим следующие подходы:
ОбъектРасчетов содержит прямую ссылку на документ ЗаказКлиента или РеализацияТоваровУслуг. В окне «Изменить вариант» отчета мы можем добавить группировки через точку:
Объект расчетов.Менеджер
Объект расчетов.ПодразделениеКлиент.Основной менеджерПроанализируем ситуацию с дебиторской задолженностью по номенклатуре. В типовой архитектуре 1С дебиторская задолженность — это сугубо денежная (суммовая) величина. Оплата от клиента поступает по объекту расчетов или расчетному документу в целом без разбивки по конкретным строкам товарной части. Платежное поручение или приходный кассовый ордер физически не содержат номенклатуры. Поэтому остаток долга «по товару» в базе данных не хранится, и получить его простой группировкой в типовом отчете невозможно.
Тем не менее, если подобное требование выдвигается руководством или обусловлено условиями поставщиков (например, отслеживание дебиторки по конкретным брендам или SKU), задачу можно решить расчетными или организационными способами.
Разберем логику создания отчета, который сопоставляет текущую задолженность с табличной частью документа отгрузки. При детализации расчетов «По накладным» мы можем определить долю оплаты конкретной реализации и распределить остаток долга по ее строкам:
РасчетыСКлиентами.Остатки.Товары.Коэффициент = ОстатокДолга / СуммаДокумента.Рассмотрим вариант, когда необходимо контролировать задолженность по конкретным брендам, предоставляющим бонусы дистрибьюторам. В этом случае в отчете реализуется строгая стратегия погашения (алгоритм FIFO внутри документа отгрузки):
Оплачено = СуммаДокумента - ОстатокДолга.Посмотрим на пример логики вычисления остатка долга в запросе СКД при условии, что оплата в первую очередь закрывает товары ключевого бренда:
ВЫБОР
// Если накладная полностью оплачена - долга нет
КОГДА ОстатокПоНакладной <= 0 ТОГДА 0
// Если оплата превышает стоимость приоритетного бренда - долг по бренду закрыт
КОГДА (СуммаНакладной - ОстатокПоНакладной) >= СуммаПриоритетногоБренда ТОГДА 0
// Если оплаты недостаточно для покрытия бренда - считаем остаток
ИНАЧЕ СуммаПриоритетногоБренда - (СуммаНакладной - ОстатокПоНакладной)
КОНЕЦ
Если требуется получать корректные остатки взаиморасчетов в типовых отчетах без написания специализированных внешних отчетов с искусственным распределением сумм, применим методические возможности программы:
РеализацияТоваровУслуг. При ведении расчетов с детализацией «По накладным» каждая реализация выступает отдельным объектом расчетов, что исключает смешивание долгов по разным товарам.