Где найти дебиторскую задолженность в 1С:Комплексная автоматизация 2.4 и как правильно составить отчет на СКД?

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

Переход со старых конфигураций (таких как 1С:Управление производственным предприятием 1.3 или 1С:Управление торговлей 10.3) на современные решения на платформе ERP-класса, например, 1С:Комплексная автоматизация 2.4 (КА 2.4) или 1С:ERP 2, часто вызывает у разработчиков ступор. Особенно это касается механизмов взаиморасчетов с контрагентами.

Если в УПП вся дебиторская и кредиторская задолженность лежала в понятном и едином регистре накопления, то в КА 2.4 разработчик сталкивается с целым семейством регистров. Более того, при попытке написать простейший запрос на СКД (Системе компоновки данных) программисты часто обнаруживают, что в консоли запросов данные есть, а отчет СКД выводится абсолютно пустым. В этой статье мы подробно разберем, как устроены взаиморасчеты в КА 2.4, из каких регистров получать дебиторку и как избежать классических ошибок при разработке отчетов.

Архитектура взаиморасчетов в 1С:КА 2.4: где искать данные?

Давайте проанализируем структуру хранения взаиморасчетов в новых конфигурациях. В отличие от УПП, где вид договора (с покупателем или с поставщиком) определял характер задолженности внутри одного регистра, в КА 2.4 учет разделен на два независимых направления. Соответственно, система оперирует двумя семействами регистров накопления:

  1. Расчеты с клиентами (дебиторская задолженность покупателей):
    • РегистрНакопления.РасчетыСКлиентами
    • РегистрНакопления.РасчетыСКлиентамиПоДокументам
    • РегистрНакопления.РасчетыСКлиентамиПоСрокам
  2. Расчеты с поставщиками (наша дебиторская задолженность по авансам выданным):
    • РегистрНакопления.РасчетыСПоставщиками
    • РегистрНакопления.РасчетыСПоставщикамиПоДокументам
    • РегистрНакопления.РасчетыСПоставщикамиПоСрокам

Выясним причину, почему регистров так много. Это связано со степенью детализации и оптимизацией производительности системы. При правильном ведении учета и завершении всех регламентных процедур (закрытие месяца, распределение расчетов) данные в этих регистрах в суммовом эквиваленте полностью совпадают с бухгалтерскими счетами 62 (для клиентов) и 60 (для поставщиков), но в оперативных регистрах аналитика представлена значительно шире.

В этих регистрах накопления итоговый знак ресурса Долг определяет вид задолженности:

Влияние функциональных опций на заполнение регистров: Онлайн vs Офлайн

Рассмотрим подробнее важный нюанс: почему некоторые регистры могут оказаться абсолютно пустыми. Это зависит от выбранного в настройках системы режима ведения взаиморасчетов. В КА 2.4 существует два режима:

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

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

Фактическая и планируемая задолженность

Проанализируем структуру ресурсов регистров взаиморасчетов. При написании запроса очень важно отличать реальный долг от планируемых платежей. Оперативный учет в 1С:КА 2.4 хранит:

Почему запрос работает в консоли, но возвращает пустой результат в СКД?

Это классическая проблема разработчиков, которые только начинают осваивать управляемые формы и СКД в новых конфигурациях. Вы копируете работающий запрос из консоли запросов, вставляете его в схему компоновки данных, запускаете отчет — и видите пустой экран. Разберем три основные причины этого явления.

Причина 1. Автоматическая подмена параметров виртуальных таблиц СКД

В консоли запросов вы жестко задаете параметры виртуальной таблицы (например, &НачалоПериода и &КонецПериода). Но в СКД работает встроенный оптимизатор запросов. Если вы добавили виртуальную таблицу ОстаткиИОбороты и не настроили параметры СКД должным образом, СКД пытается переопределить их самостоятельно. Если в схеме параметры виртуальной таблицы написаны просто как:


РегистрНакопления.РасчетыСКлиентамиПоСрокам.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , )

СКД может проигнорировать пользовательский выбор дат на форме отчета и передать в СУБД пустые значения (01.01.0001). В итоге виртуальная таблица вернет пустой результат.

Решение: Используйте фигурные скобки для параметров в тексте запроса, чтобы СКД правильно управляла ими:


РегистрНакопления.РасчетыСКлиентамиПоСрокам.ОстаткиИОбороты({&НачалоПериода}, {&КонецПериода}, , , )

Или используйте в СКД единый параметр типа СтандартныйПериод (например, с именем ПериодОтчета), а для системных параметров НачалоПериода и КонецПериода в выражениях укажите:

Не забудьте поставить галочку «Ограничение доступности» для системных параметров НачалоПериода и КонецПериода, чтобы пользователь не путался.

Причина 2. Ограничение доступа на уровне записей (RLS)

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

Причина 3. Ошибки при соединении таблиц

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

Практический пример: Пишем правильный запрос для дебиторской задолженности

Посмотрим на пример построения корректного запроса для получения фактической дебиторской задолженности по клиентам. Мы будем использовать виртуальную таблицу остатков регистра РасчетыСКлиентамиПоСрокам, так как именно она актуальна для режима онлайн-взаиморасчетов.

Разберем по шагам структуру этого запроса:


ВЫБРАТЬ
    ВзаиморасчетыОстатки.АналитикаУчетаПоПартнерам.Организация КАК Организация,
    ВзаиморасчетыОстатки.АналитикаУчетаПоПартнерам.Партнер КАК Партнер,
    ВзаиморасчетыОстатки.АналитикаУчетаПоПартнерам.Контрагент КАК Контрагент,
    ВзаиморасчетыОстатки.Договор КАК Договор,
    ВЫБОР
        КОГДА ВзаиморасчетыОстатки.ДолгОстаток > 0
            ТОГДА ВзаиморасчетыОстатки.ДолгОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК ДебиторскаяЗадолженность,
    ВЫБОР
        КОГДА ВзаиморасчетыОстатки.ДолгОстаток < 0
            ТОГДА -ВзаиморасчетыОстатки.ДолгОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК КредиторскаяЗадолженность
ИЗ
    РегистрНакопления.РасчетыСКлиентамиПоСрокам.Остатки({&ПериодГраница}, ) КАК ВзаиморасчетыОстатки
ГДЕ
    ВзаиморасчетыОстатки.ДолгОстаток <> 0

Важные моменты в запросе:

Если вам требуется собрать полную дебиторскую задолженность (и покупателей по 62 счету, и поставщиков по 60 счету по выданным им авансам), вам необходимо объединить (через оператор ОБЪЕДИНИТЬ ВСЕ) аналогичный запрос по регистру РасчетыСПоставщикамиПоСрокам. Помните, что для поставщиков выданный аванс (дебиторка) также будет отражаться положительным остатком ресурса ДолгОстаток.

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

← На главную