Как правильно связать "Заказ поставщику" со "Списанием безналичных ДС" в СКД 1С для контроля оплат?

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

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

Причина неудачных прямых связей через "ДокументОснование"

Первая попытка, которую многие предпринимают, это соединить Документ.ЗаказПоставщику с Документ.СписаниеБезналичныхДенежныхСредств по полю ДокументОснование. Пример такого запроса может выглядеть так:


ВЫБРАТЬ
    ЗаказПоставщику.Ссылка КАК СсылкаЗаказа,
    ЗаказПоставщику.Дата КАК ДатаЗаказа,
    СписаниеБезналичныхДенежныхСредств.Ссылка КАК СсылкаСписания
ИЗ
    Документ.ЗаказПоставщику КАК ЗаказПоставщику
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств КАК СписаниеБезналичныхДенежныхСредств
        ПО ЗаказПоставщику.Ссылка = СписаниеБезналичныхДенежныхСредств.ДокументОснование

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

Когда мы проверяем содержимое поля СписаниеБезналичныхДенежныхСредств.ДокументОснование, выполнив запрос:


ВЫБРАТЬ
    СписаниеБезналичныхДенежныхСредств.ДокументОснование КАК ДокументОснование
ИЗ
    Документ.СписаниеБезналичныхДенежныхСредств КАК СписаниеБезналичныхДенежныхСредств

мы обнаруживаем, что оно действительно может быть пустым или содержать ссылки на другие объекты, что подтверждает неэффективность прямого соединения.

Основное решение: Связь через табличную часть "РасшифровкаПлатежа"

Наиболее распространенный и правильный способ связи в таких случаях – это использование табличной части РасшифровкаПлатежа документа «Списание безналичных денежных средств». Эта табличная часть предназначена именно для того, чтобы детально указать, по каким объектам расчетов (заказам, накладным и т.д.) производится оплата. В ней мы найдем поле, которое ссылается непосредственно на «Заказ поставщику».

Рассмотрим, как это реализовать в запросе СКД:

  1. Мы начинаем с документа ЗаказПоставщику, который является нашим основным объектом анализа.
  2. К нему мы присоединяем табличную часть РасшифровкаПлатежа документа СписаниеБезналичныхДенежныхСредств. Обратите внимание, что мы обращаемся к ней как к отдельной сущности через точку: Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа.
  3. Условием соединения будет соответствие ссылки на ЗаказПоставщику полю Заказ (или аналогичному, например, ДокументРасчетов) из табличной части РасшифровкаПлатежа.
  4. Для получения полной информации о самом документе списания (дата, номер и т.д.) мы выполняем еще одно соединение – уже от табличной части РасшифровкаПлатежа к головному документу СписаниеБезналичныхДенежныхСредств.

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


ВЫБРАТЬ
    ЗаказПоставщику.Ссылка КАК ЗаказПоставщику,
    ЗаказПоставщику.Дата КАК ДатаЗаказа,
    ЗаказПоставщику.Номер КАК НомерЗаказа,
    СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.СуммаПлатежа КАК ОплаченнаяСумма,
    СписаниеБезналичныхДенежныхСредств.Ссылка КАК СсылкаСписания,
    СписаниеБезналичныхДенежныхСредств.Дата КАК ДатаСписания,
    СписаниеБезналичныхДенежныхСредств.Номер КАК НомерСписания,
    СписаниеБезналичныхДенежныхСредств.ВалютаДокумента КАК ВалютаПлатежа
ИЗ
    Документ.ЗаказПоставщику КАК ЗаказПоставщику
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа
        ПО ЗаказПоставщику.Ссылка = СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Заказ
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств КАК СписаниеБезналичныхДенежныхСредств
        ПО СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка = СписаниеБезналичныхДенежныхСредств.Ссылка

В этом запросе мы используем ЛЕВОЕ СОЕДИНЕНИЕ, чтобы увидеть все заказы поставщику, даже те, по которым еще не было оплат. Если нам нужны только оплаченные заказы, мы можем изменить тип соединения на ВНУТРЕННЕЕ СОЕДИНЕНИЕ или добавить отбор по наличию СсылкаСписания.

Использование документа "Заявка на расходование денежных средств" в комплексных системах

В более сложных конфигурациях, таких как 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей, часто используется многоэтапный процесс оформления оплат. В этом процессе Заказ поставщику может выступать основанием для создания Заявки на расходование денежных средств. И уже Списание безналичных денежных средств будет оформляться на основании этой утвержденной Заявки.

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

  1. Начнем с Документ.ЗаказПоставщику.
  2. Соединим его с Документ.ЗаявкаНаРасходованиеДенежныхСредств по полю ДокументОснование (или аналогичному полю, которое хранит ссылку на заказ в заявке).
  3. Затем соединим Документ.ЗаявкаНаРасходованиеДенежныхСредств с Документ.СписаниеБезналичныхДенежныхСредств, снова используя поле ДокументОснование в списании, которое будет ссылаться на заявку.

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

Наиболее надежный способ: Анализ через регистры взаиморасчетов

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

Преимущества использования регистров:

  1. Полная картина: Регистры предоставляют не только факт оплаты, но и текущее состояние долга, суммы авансов, плановые платежи и другие важные показатели.
  2. Агрегированные данные: С помощью виртуальных таблиц регистров (например, ОстаткиИОбороты) мы можем легко получить агрегированные данные по каждому заказу: сколько было заказано, сколько оплачено, сколько осталось оплатить.
  3. Гибкость: Регистры позволяют строить отчеты в различных разрезах (по поставщику, по менеджеру, по валюте, по срокам).

Для построения запроса в СКД к регистру взаиморасчетов мы будем использовать его виртуальные таблицы. Виртуальная таблица ОстаткиИОбороты – это мощный инструмент, который позволяет получить данные об остатках на начало и конец периода, а также оборотах (приход/расход) за период. Для работы с взаиморасчетами нас будут интересовать ресурсы, отражающие суммы долга и оплаты, и измерения, позволяющие детализировать эти данные, например, по ЗаказуПоставщику.

Пример концептуального запроса к виртуальной таблице регистра РасчетыСПоставщиками в СКД:


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

В этом запросе мы запрашиваем данные о взаиморасчетах по конкретному ЗаказуПоставщику и Контрагенту за заданный период. Параметры &НачалоПериода, &КонецПериода, &ЗаказПоставщику и &Контрагент будут заполняться из настроек отчета СКД. В СКД вы сможете добавить этот запрос в качестве набора данных, а затем использовать поля для вывода в отчет и для группировок.

Важные моменты при работе с регистрами в СКД:

  1. Параметры виртуальных таблиц: Всегда указывайте период (&НачалоПериода, &КонецПериода) и необходимые отборы (например, по ЗаказПоставщику) для виртуальной таблицы. Это критично для производительности и корректности данных.
  2. Измерения и ресурсы: Внимательно изучайте измерения и ресурсы выбранного регистра, чтобы понимать, какие данные он хранит и в каком разрезе.
  3. Виды движения: Обращайте внимание на виды движения (Приход/Расход) в регистрах. Они показывают, является ли запись увеличением долга (Расход) или его погашением (Приход) с точки зрения нашей организации.

Поле "Расчеты" в форме "Заказа поставщику"

Автор вопроса упоминал поле "Расчеты" в форме "Заказа поставщику", которое отображается в виде гиперссылки и указывает на оплату. Важно понимать, что это поле не является прямым реквизитом самого документа ЗаказПоставщику, который можно было бы просто "вытащить" запросом. Оно формируется динамически при открытии формы документа на основе актуальных данных из регистров взаиморасчетов.

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

Алгоритм распределения оплаты

В системе 1С существует сложный алгоритм автоматического распределения оплаты по документам расчетов. При проведении документа Списание безналичных денежных средств система может автоматически зачесть платежи по заказам, накладным, договорам или другим объектам расчетов. Этот алгоритм может быть настроен и часто учитывает:

  1. Дату документа.
  2. Вид документа (например, приоритет может отдаваться заказу, затем накладной).
  3. Времени и номера документа.

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

Заключение

Для корректного связывания документов «Заказ поставщику» и «Списание безналичных денежных средств» в СКД 1С и получения полной информации об оплатах, мы приходим к выводу, что необходим комплексный подход:

  1. Начните с анализа табличной части РасшифровкаПлатежа документа СписаниеБезналичныхДенежныхСредств – это наиболее прямой и часто используемый способ, когда оплата явно привязана к заказу в платежном документе.
  2. Если в вашей системе активно используются Заявки на расходование денежных средств, учитывайте их как промежуточное звено в цепочке документов.
  3. Для получения наиболее надежных и полных данных о взаиморасчетах (оплачено, долг, аванс) всегда обращайтесь к регистрам накопления взаиморасчетов (например, Расчеты с поставщиками) с использованием их виртуальных таблиц. Это также позволит получать информацию, аналогичную динамическому полю "Расчеты" в форме документа.

Таким образом, мы видим, что, хотя прямая связь документов может показаться очевидной, архитектура 1С требует более глубокого понимания механизмов учета для построения корректных и информативных отчетов. Всегда проверяйте структуру метаданных вашей конкретной конфигурации, чтобы выбрать оптимальный метод связи.

← На главную