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