Как объединить отчеты «Задолженность по срокам» и «Ведомость взаиморасчетов» в 1С:Управление торговлей 11?

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

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

Ограничения пользовательского режима

В пользовательском режиме через меню «Изменить вариант...» объединить два разных типовых отчета невозможно. Штатный механизм пользовательской настройки позволяет включать или отключать доступные поля, настраивать группировки, фильтры, сортировки и условное оформление, но строго в пределах той структуры данных, которую разработчики конфигурации изначально заложили в схему компоновки данных конкретного отчета.

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

Особенности типовых отчетов по взаиморасчетам в УТ 11.4

Прежде чем приступать к разработке, проанализируем специфику построения отчетов по расчетам в «1С:Управление торговлей 11.4»:

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

Способ 1. Создание отчета в расширении и связь наборов данных

Наиболее надежный путь доработки — создать собственный отчет в расширении конфигурации. Это позволяет сохранить конфигурацию на поддержке и одновременно использовать доступ ко всем экспортным процедурам типовой конфигурации.

Разберем порядок действий по шагам:

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

Способ 2. Использование механизма «Вложенный отчет» в структуре СКД

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

  1. В структуре варианта схемы компоновки данных добавим элемент «Вложенный отчет».
  2. Для верхнего уровня выведем стандартную ведомость взаиморасчетов по партнерам и договорам.
  3. В качестве подчиненного уровня настроим схему распределения задолженности по срокам, связав параметры родительского отчета с дочерним.

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

Способ 3. Объединение запросов через «ОБЪЕДИНИТЬ ВСЕ»

Если требуется получить плоскую таблицу, объединение через прямое левое соединение остатков и сроков не рекомендуется, так как оно приводит к задвоению оборотов при наличии нескольких расчетных документов с разными сроками. Оптимально спроектировать один набор данных, объединяющий выборки через конструкцию языка запросов:


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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Сроки.Партнер,
    Сроки.Контрагент,
    Сроки.Договор,
    0,
    0,
    Сроки.СуммаДо30Дней,
    Сроки.СуммаСвыше30Дней
ИЗ
    ВременнаяТаблицаСроков КАК Сроки

При таком подходе на вкладке «Ресурсы» рассчитывается простая сумма Сумма(НачальныйОстаток), Сумма(ДолгДо30Дней) и так далее. На уровне итоговых группировок СКД числа автоматически сворачиваются без дублирования.

Типовые альтернативы без доработки

Прежде чем приступать к разработке, проверим стандартные отчеты конфигурации:

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

Если пользователю достаточно видеть дату платежа и статус просрочки в контексте конкретного расчетного документа, требуемые поля часто можно вывести через стандартную команду «Настройки» в расширенном режиме без привлечения программиста.

← На главную