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