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