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