Как вывести срок оплаты в отчете по задолженности в «1С:Бухгалтерия предприятия 3.0»?

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

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

Разберем механизм хранения данных: где «живет» срок оплаты?

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

Рассмотрим иерархию, по которой система определяет дату оплаты:

  1. Индивидуальная настройка в конкретном документе: Это самый высокий приоритет. Данные записываются в независимый регистр сведений Сроки оплаты документов. Запись там появляется только в том случае, если пользователь вручную изменил срок через гиперссылку «Планирование платежа» на форме документа.
  2. Настройка в договоре с контрагентом: Если в документе дата не задана вручную, система заглядывает в карточку договора. Там должен быть установлен флаг «Установлен срок оплаты» и указано количество дней.
  3. Общие настройки параметров учета: Если ни в документе, ни в договоре срок не определен, программа берет значение из констант. Найти их можно в разделе «Администрирование» — «Параметры учета» — «Сроки оплаты покупателями». В базе они хранятся в константах СрокОплатыПокупателей и СрокОплатыПоставщикам.

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

Проанализируем работу типового отчета «Задолженность покупателей по срокам долга»

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

Чтобы поле заполнилось в пользовательских настройках, необходимо убедиться, что вы выбираете именно то поле, которое предусмотрено структурой набора данных (обычно оно называется ДатаОплаты), а не пытаетесь «пробраться» к нему через реквизиты объекта документа.

Влияние функциональных опций на видимость поля

Если вы не видите возможности задать срок оплаты в самом документе (гиперссылка отсутствует), проанализируем настройки функциональности. Рассмотрим последовательность действий для включения этой возможности:

  1. Перейдем в раздел Главное — Настройки — Функциональность.
  2. На вкладке Расчеты найдем флаг «Планирование платежей от покупателей».
  3. Только при включении этой опции в документах реализации появится возможность указывать конкретную дату оплаты, и начнет задействоваться регистр сведений Сроки оплаты документов.

Техническое решение для программистов: как достучаться до данных в запросе

Если вы создаете собственный отчет или обработку и вам нужно получить актуальную дату оплаты для списка документов, рассмотрим правильный алгоритм построения запроса. Поскольку прямого реквизита нет, нам необходимо выполнить ЛЕВОЕ СОЕДИНЕНИЕ с регистром сведений СрокиОплатыДокументов и предусмотреть логику «отката» к срокам из договора.

Посмотрим на пример запроса, который учитывает приоритеты:


ВЫБРАТЬ
    Реализация.Ссылка КАК Документ,
    ВЫБОР
        КОГДА СрокиОплаты.СрокОплаты ЕСТЬ НЕ NULL
            ТОГДА СрокиОплаты.СрокОплаты
        КОГДА Реализация.ДоговорКонтрагента.УстановленСрокОплаты
            ТОГДА ДОБАВИТЬКДАТЕ(Реализация.Дата, ДЕНЬ, Реализация.ДоговорКонтрагента.СрокОплаты)
        ИНАЧЕ ДОБАВИТЬКДАТЕ(Реализация.Дата, ДЕНЬ, &КонстантаСрокОплаты)
    КОНЕЦ КАК ДатаОплаты
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СрокиОплатыДокументов КАК СрокиОплаты
        ПО Реализация.Ссылка = СрокиОплаты.Документ
ГДЕ
    Реализация.Проведен

В данном примере мы сначала проверяем наличие записи в регистре СрокиОплатыДокументов. Если её нет, мы анализируем реквизиты договора (УстановленСрокОплаты и СрокОплаты в днях). Если и там данных нет, используем значение по умолчанию, переданное в параметр &КонстантаСрокОплаты.

Особенности расчета по рабочим дням

Рассмотрим ситуацию с выходными и праздничными днями. Важно понимать, что базовый механизм БП 3.0 работает по календарным дням. Если в вашей организации принято считать просрочку по рабочим дням, типовые средства отчета «Задолженность покупателей по срокам долга» могут выдавать некорректный результат. В этом случае потребуется существенная доработка отчета с использованием производственного календаря. Проанализируем разницу: в УТ 11 или ERP механизмы графиков оплаты развиты гораздо сильнее, в то время как в Бухгалтерии реализован максимально упрощенный вариант.

Подведем итоги настройки

Для корректного вывода срока оплаты в отчетах БП 3.0 выполним следующие шаги:

  1. Проверим, включена ли функциональная опция «Планирование платежей».
  2. Убедимся, что заполнены настройки в Параметрах учета или в конкретном Договоре.
  3. В настройках отчета (через «Изменить вариант») ищем поле в структуре набора данных, которое называется именно Дата оплаты (или Срок оплаты в контексте СКД отчета), а не вытягиваем его из реквизитов ссылки документа.

Используя этот структурный подход, вы всегда сможете точно определить, почему те или иные данные не попадают в отчет, и оперативно исправить ситуацию.

← На главную