Как правильно настроить отчет СКД для вывода регистраторов по контрагентам на счетах 62.01 и 62.02

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

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

Выясним причину проблемы: почему регистраторы «размножаются»?

Проанализируем ситуацию. Когда мы строим отчет по регистру бухгалтерии (например, по счету Хозрасчетный, ошибки по которому удобно искать с помощью Проверка расчетов с поставщиками и покупателями – поиск ошибок в учете по регистру бухгалтерского учета. БП 3.0, КА 2 и ЕРП 2), мы используем виртуальные таблицы. Основная ошибка заключается в том, что в запросе СКД выбирается таблица без указания правильной периодичности или используется неверная иерархия группировок. Если системе не указать жесткую связь между записью регистра (которой и является регистратор) и аналитикой (субконто «Контрагенты»), компоновка может попытаться соединить данные не так, как мы ожидаем.

Шаг 1. Настройка виртуальной таблицы в запросе

Рассмотрим правильное построение запроса в конструкторе набора данных. Для работы со счетами 62.01 и 62.02 (или используйте готовые Расчеты с контрагентом для БП 3.0 и КА 2) нам идеально подойдет таблица ОстаткиИОбороты. Самый важный нюанс здесь — параметр Периодичность.

По умолчанию в виртуальных таблицах периодичность установлена в значение Авто или Период. В этом случае поле Регистратор либо будет недоступно, либо будет содержать пустые значения, либо приведет к нелогичному выводу строк. Чтобы получить связь «Документ — Контрагент — Сумма» (что также полезно для отчета Расчеты с контрагентами за период), нам нужно установить периодичность в значение Запись (в некоторых случаях — Регистратор).

Посмотрим на пример правильного текста запроса:


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

Обратите внимание на использование функции ВЫРАЗИТЬ. Поскольку Субконто1 имеет составной тип, явное приведение к справочнику Контрагенты позволяет СКД корректно работать с полями этого справочника и ускоряет работу запроса.

Шаг 2. Работа с полями и ролями в СКД

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

Шаг 3. Настройка иерархии группировок

Теперь проанализируем настройки отчета (вкладка «Настройки»). Чтобы «подчинить» регистратор контрагенту, необходимо создать четкую структуру вложенности:

  1. На верхнем уровне создаем группировку по полю Контрагент.
  2. Внутри этой группировки (нажав правой кнопкой мыши на группировку контрагента и выбрав «Добавить») создаем детальные записи или группировку по полю Регистратор.

Важный момент: если вы выводите регистратор на том же уровне, что и контрагента, система может вывести дубли строк. Только вложенная структура гарантирует, что под конкретным контрагентом будут показаны только те документы, которые изменили его сальдо по счету 62.

Шаг 4. Обработка пустых субконто

Иногда новички видят в отчете странные строки: пустой контрагент и огромный список документов. Это происходит, когда в проводках по 62 счету не заполнено субконто. Чтобы избежать этого в отчете, мы можем применить отбор в настройках: Контрагент Заполнено или Контрагент Не равно [Пустая ссылка]. Однако правильнее будет выяснить причину появления пустой аналитики в учете.

Шаг 5. Использование ресурсов

Чтобы суммы по регистраторам правильно суммировались в итоги по контрагенту, не забудьте добавить числовые поля (СуммаДебет, СуммаКредит) на закладку «Ресурсы». В поле «Выражение» обычно используется стандартная агрегатная функция Сумма(ИмяПоля).

Альтернативный вариант: «Универсальный отчет»

Если вам нужно быстро получить данные без написания кода, разберем способ использования встроенных инструментов 1С (Бухгалтерия предприятия 3.0, КА, ERP). Вместо создания нового отчета СКД, можно воспользоваться Универсальным отчетом:

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

Подведем итог: для корректного подчинения регистратора аналитике в СКД необходимо использовать виртуальную таблицу с периодичностью Запись и настраивать вложенные группировки. Это обеспечит точность данных и удобство анализа расчетов с покупателями.

← На главную