Как правильно получить список неоплаченных заказов поставщику в 1С:Управление торговлей 10.3?

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

При разработке отчетов или обработок в конфигурации Управление торговлей 10.3 часто возникает задача фильтрации заказов, которые не были оплачены в полном объеме. Многие разработчики сталкиваются с тем, что стандартные запросы к регистру РасчетыСКонтрагентами выдают неверные данные: в выборку попадают уже оплаченные заказы, или, наоборот, теряются данные при наличии нескольких сделок в одном договоре. Давайте разберемся, как решить эту задачу профессионально.

Анализ причин некорректной работы запросов

Прежде чем приступать к написанию кода, важно проанализировать, почему классический подход «остаток < 0» часто подводит. Основная проблема заключается в настройках ведения взаиморасчетов. Если в карточке ДоговорКонтрагента установлен признак ведения взаиморасчетов По договору в целом, поле Сделка в регистрах может заполняться некорректно или оставаться пустым. Это приводит к тому, что система не может однозначно идентифицировать, к какому именно заказу относится конкретная оплата.

Кроме того, механизм автоматического зачета авансов в УТ 10.3 может приводить к тому, что суммы перераспределяются между сделками внутри одного договора. В результате остаток по одной конкретной сделке становится нулевым, хотя фактически заказ еще не закрыт полностью по данным оперативного учета.

Реализация поиска через обороты регистра

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

Рассмотрим структуру запроса, которая позволяет извлечь данные для анализа:


ВЫБРАТЬ
    РасчетыСКонтрагентами.Сделка КАК Заказ,
    РасчетыСКонтрагентами.ДоговорКонтрагента КАК Договор,
    РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход КАК Запланировано,
    РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход КАК Оплачено
ИЗ
    РегистрНакопления.РасчетыСКонтрагентами.Обороты(
        , 
        &ДатаАнализа, 
        , 
        ДоговорКонтрагента = &ДоговорКонтрагента
    ) КАК РасчетыСКонтрагентами
ГДЕ
    РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход < РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход

Пошаговое руководство по настройке контроля оплаты

  1. Проверка настроек учета: Убедитесь, что в договоре контрагента тип ведения взаиморасчетов установлен как По заказам. Без этого параметра аналитика в разрезе сделок не будет достоверной.
  2. Выбор регистра: Если стандартный регистр РасчетыСКонтрагентами не дает нужной точности из-за специфики учета, рассмотрите использование регистра ЗаказыПоставщикам. Он создан специально для отслеживания состояния обеспечения и оплаты заказов.
  3. Логика сравнения: При использовании оборотов всегда сравнивайте СуммаВзаиморасчетовПриход (оплачено) и СуммаВзаиморасчетовРасход (запланировано). Условие Оплачено < Запланировано является универсальным для поиска частично или полностью неоплаченных заказов.
  4. Работа с параметрами: Всегда передавайте в запрос &ДатаАнализа и &ДоговорКонтрагента, чтобы ограничить выборку и повысить производительность системы.

Важные рекомендации

Помните, что если в вашей конфигурации учет ведется не по заказам, программное получение списка неоплаченных сделок будет невозможным, так как в регистрах отсутствует необходимая аналитика. В таком случае необходимо либо перенастроить учетную политику (что требует осторожности), либо использовать более сложные объединения запросов, чтобы «вытянуть» информацию из других регистров накопления.

Применяйте предложенный метод с оборотами для создания отчетов по дебиторской и кредиторской задолженности. Это позволит вам видеть реальную картину платежной дисциплины по каждому контрагенту и заказу отдельно, исключая ошибки, связанные с автоматическим зачетом авансов.

Если вы столкнулись с тем, что даже после настройки учета данные отображаются неверно, проверьте корректность движений самих документов ЗаказПоставщику и ПлатежноеПоручениеИсходящее — возможно, причина кроется в ручной корректировке движений или некорректно заполненных реквизитах сделки в документах оплаты.

← На главную