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