При настройке типовых отчетов (например, «Задолженность поставщикам по срокам долга» или «Задолженность покупателей по срокам долга») пользователи и разработчики часто сталкиваются с ситуацией, когда стандартные действия через меню «Изменить вариант...» не дают нужного результата. Галочки на вкладке «Выбранные поля» либо отсутствуют, либо их отключение игнорируется при формировании отчета. Разберем причины такого поведения платформы и выясним, как правильно скорректировать вывод колонок и расчетных полей.
Проанализируем архитектуру типовых отчетов по анализу задолженности по интервалам. В отличие от простых отчетов на схеме компоновки данных (СКД), в данных отчетах состав колонок не является статическим:
Если требуется кардинально изменить состав выводимых колонок (убрать итоговую колонку общей задолженности или интервальные остатки), необходимо внести изменения в код отчета. Чтобы сохранить возможность типового обновления конфигурации, рекомендуется вынести отчет как внешний либо доработать его через расширение конфигурации.
Рассмотрим по шагам, где и какие изменения необходимо внести в модуль менеджера отчета:
ЗаполнитьПоляВСоответствииСоСпискомИнтервалов.
// ПолеИтога = Схема.ПоляИтога.Добавить();
// ПолеИтога.ПутьКДанным = "ОстатокДолга";
// ПолеИтога.Выражение = "Сумма(ОстатокДолга)";
// БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(КомпоновщикНастроек, "ОстатокДолга");
Для Каждого Интервал Из ПараметрыОтчета.Интервалы Цикл
// Внутри этого цикла происходит программное добавление полей интервалов
// в коллекцию выбранных полей компоновщика.
// Закомментируйте добавление конкретного поля, чтобы исключить его из отчета.
КонецЦикла;
Важный момент: если вы отключаете вывод поля, убедитесь, что не нарушается работа алгоритмов расчета итогов, которые могут ссылаться на имена этих полей в постобработке.
Если цель доработки заключается исключительно в получении кредиторской задолженности по счетам 60 и 76 без интервального анализа просрочки, доработка сложного отчета по срокам долга может быть избыточной. Рассмотрим стандартные альтернативы:
Контрагенты, Договоры и Документы расчетов с контрагентом. Это даст полную картину задолженности с развернутым сальдо.Контрагенты и Договоры в единую сводную таблицу.Часто в отчет по задолженности требуется вывести расчетную дату оплаты, прибавив к дате документа срок оплаты в днях, указанный в договоре (Документ.Договор.СрокОплаты). Эту задачу можно решить двумя способами.
Разберем, как добавить расчет даты через пользовательские поля схемы компоновки данных:
ДобавитьКДате:ДобавитьКДате(Документ.Дата, "ДЕНЬ", ЕстьNULL(Документ.Договор.СрокОплаты, 0))
ПлановаяДатаОплаты) и добавим его на вкладку «Выбранные поля».Если отчет дорабатывается в конфигураторе, расчет даты можно вынести непосредственно в текст запроса набора данных:
ВЫБРАТЬ
Взаиморасчеты.Документ КАК Документ,
Взаиморасчеты.Документ.Дата КАК ДатаДокумента,
ДОБАВИТЬКДАТЕ(Взаиморасчеты.Документ.Дата, ДЕНЬ, ЕСТЬNULL(Взаиморасчеты.Документ.Договор.СрокОплаты, 0)) КАК ДатаОплатыПоДоговору
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты КАК Взаиморасчеты
Использование функции ЕСТЬNULL обязательно: если в договоре не задан срок оплаты, значение поля будет равно NULL, что при сложении с датой без проверки приведет к получению пустой даты.