Документы и Печать · 10 мин
Как получить связанные документы в 1С
Как найти связанные документы в 1С: панель «Связанные документы», структура подчинённости, критерии отбора и запросы на языке 1С для разработчиков.
Связанные документы в 1С — это документы, которые образуют цепочку хозяйственной операции: заказ покупателя, реализация товаров, счёт-фактура, оплата. Программа хранит связи между ними и позволяет быстро посмотреть всю цепочку, не перебирая журналы вручную. Это нужно и бухгалтеру при сверке, и менеджеру при проверке исполнения заказа, и разработчику при построении отчётов.
Способ получения связей зависит от задачи. Обычному пользователю достаточно встроенной панели «Связанные документы» или отчёта «Структура подчинённости». Разработчику, которому нужны связи программно — для отчёта, обработки или обмена, — потребуются критерии отбора, запросы к реквизитам-основаниям или анализ движений по регистрам.
Ниже разобраны оба подхода: пользовательский (без программирования) и программный (через встроенный язык 1С), а также типичные ошибки и способы проверить, что цепочка документов найдена полностью.
Что считается связанным документом в 1С
Документы связываются между собой двумя основными механизмами. Первый — ввод на основании: когда из заказа создают реализацию, в реквизите нового документа сохраняется ссылка на документ-основание. Второй — движения по регистрам: один документ может изменять состояние взаиморасчётов или резервов, созданных другим документом, и это тоже формирует связь.
Какие именно связи видит пользователь, определяется настройками конфигурации. В типовых решениях (1С:Бухгалтерия, Управление торговлей, ERP) разработчики заранее описали состав связанных документов через критерии отбора и свойство «Вводится на основании» в конфигураторе. Если связь не настроена в конфигурации, стандартная панель её не покажет — даже если логически документы относятся к одной сделке.
Как посмотреть связанные документы через интерфейс
В управляемых формах типовых конфигураций откройте нужный документ и найдите кнопку «Связанные документы» — обычно она находится в командной панели формы или в меню «Ещё». Откроется панель, где все связанные документы сгруппированы по типам: основания, документы оплаты, отгрузки, корректировки.
Из панели можно открыть любой документ двойным щелчком, создать новый документ на основании текущего или перейти к полному дереву связей. Если кнопки «Связанные документы» нет, проверьте меню «Ещё» — в некоторых формах она скрыта туда, а в старых конфигурациях на обычных формах аналогичная функция вызывается через кнопку «Структура подчинённости» или пункт меню «Перейти».
Отчёт «Структура подчинённости»
Отчёт показывает связи в виде дерева: вверху родительский документ, ниже — все введённые на его основании. В типовых конфигурациях он доступен из формы документа и из общего списка отчётов. Дерево удобно тем, что видно сразу всю цепочку сделки, включая «внуков» — документы, введённые на основании дочерних.
Обратите внимание: структура подчинённости строится только по реквизитам оснований. Оплата, зарегистрированная без ссылки на заказ (например, платёж введён вручную и лишь распределён по сделке), в дереве может не отобразиться, хотя по смыслу относится к цепочке.
- 1Откройте исходный документ, например заказ покупателя
- 2Нажмите «Связанные документы» в командной панели или в меню «Ещё»
- 3Просмотрите сгруппированный список и откройте нужный документ
- 4Для полной картины откройте «Структуру подчинённости» и разверните дерево
- 5Сверьте суммы и статусы документов в цепочке
Программное получение связанных документов
Для отчётов, обработок и интеграций связи получают встроенным языком. Есть три рабочих подхода, и выбор зависит от того, как именно документы связаны в вашей конфигурации.
Через критерии отбора
Если в конфигурации настроен критерий отбора типа «Связанные документы», это самый надёжный способ — он учитывает и основания, и другие реквизиты связи, описанные разработчиком конфигурации:
МассивСвязанных = КритерииОтбора.СвязанныеДокументы.Найти(ДокументСсылка);
Для Каждого Док Из МассивСвязанных Цикл
Сообщить(Строка(Док));
КонецЦикла;
Метод возвращает массив ссылок на документы, удовлетворяющие критерию. Учтите, что состав критерия фиксирован в конфигураторе: если нужный вид документов туда не включён, метод его не вернёт.
Запросом по реквизиту «Основание»
Когда известно, по какому реквизиту документы ссылаются друг на друга, прямой запрос даёт больше контроля — можно отобрать только проведённые, только определённого вида, с нужными суммами:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Документ
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.ЗаказПокупателя = &Основание
| И РеализацияТоваровУслуг.Проведен";
Запрос.УстановитьПараметр("Основание", ЗаказСсылка);
Результат = Запрос.Выполнить().Выгрузить();
Имя реквизита-основания в разных конфигурациях отличается: «ЗаказПокупателя», «ДокументОснование», «Основание». Точное имя смотрите в конфигураторе в свойствах документа или через «Синтакс-помощник».
Через ввод на основании
Если нужно построить дерево «вверх» — от документа к его основаниям, — перебирают реквизиты составного типа, которые могут содержать ссылки на другие документы. Универсального метода «дай все основания» в платформе нет, поэтому на практике либо перечисляют известные реквизиты, либо анализируют метаданные: у каких документов в составе оснований указан текущий тип.
// Поиск документов, введённых на основании текущего, через метаданные
Для Каждого МетаДок Из Метаданные.Документы Цикл
Если МетаДок.ВводитсяНаОсновании.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(Основание))) Тогда
// строим запрос к документу этого вида
КонецЕсли;
КонецЦикла;Как выбрать подходящий способ
Для разовой проверки пользователем всегда начинайте с интерфейса — это быстрее и безопаснее. Программные методы оправданы, когда связи нужны массово: в отчёте по незакрытым заказам, в обработке сверки, при выгрузке во внешнюю систему.
Как выбрать способ получения связей
Проверка результата и ограничения
После получения списка связанных документов убедитесь, что цепочка полная. Сравните количество найденных документов с тем, что показывает панель «Связанные документы» в интерфейсе для того же исходного документа. Расхождение обычно означает, что часть связей лежит в реквизитах, которые ваш запрос не охватывает.
Учитывайте помеченные на удаление и непроведённые документы: запрос с условием «Проведен» их отфильтрует, а критерий отбора может вернуть. Для сверки с учётом это критично — непроведённая реализация не формирует задолженности, но в цепочке отображается.
Как проверить полноту цепочки
Запрос и панель «Связанные документы» дают одинаковый набор
Программный список короче — не охвачены часть реквизитов связи
Ясно, какие документы проведены, а какие помечены
В выборке смешаны проведённые и помеченные без разделения
Сумма реализаций сходится с суммой заказа с учётом частичных отгрузок
Суммы не бьются — возможны корректировки, не попавшие в выборку
Типичные ошибки и риски
Самая частая ошибка — предположение, что все связи хранятся в одном реквизите. В типовых конфигурациях реализация может ссылаться на заказ, счёт-фактура — на реализацию, корректировка — на исходную реализацию, и у каждого вида своё имя реквизита. Запрос по одному реквизиту даст неполную картину.
Вторая ошибка — изменение или удаление документов цепочки без анализа связей. Удаление основания при наличии подчинённых документов разрывает цепочку: ссылки в дочерних документах станут битыми или потеряют смысл для отчётности. Перед удалением всегда открывайте структуру подчинённости и оценивайте последствия.
Что важно запомнить
В интерфейсе связанные документы смотрят через панель «Связанные документы» и отчёт «Структура подчинённости». Программно используют критерии отбора, запросы по реквизитам-основаниям или анализ метаданных. Перед удалением документа из цепочки всегда проверяйте его связи.
Частые вопросы
Почему в панели «Связанные документы» не виден платёж по сделке?
Панель показывает связи, настроенные в конфигурации, — в основном по реквизитам оснований. Если платёж введён без ссылки на заказ или счёт, формально он не связан с документом. Такие документы ищите через отчёты по взаиморасчётам с отбором по контрагенту и договору.
Как найти документ-основание, если смотрю на подчинённый документ?
Откройте документ и посмотрите поле «Основание» (или аналогичное по смыслу) в форме. Программно — прочитайте значение соответствующего реквизита через ссылку: ДокументОбъект.ДокументОснование или обращение к реквизиту ссылки в запросе.
Можно ли получить связанные документы за период сразу для многих документов?
Да, запросом с условием по дате и соединением таблиц документов по реквизиту-основанию. Например, выбрать все реализации за месяц и левым соединением подтянуть их заказы. Это стандартный приём для отчётов по исполнению заказов.
Что делать, если в конфигурации нет критерия отбора «Связанные документы»?
Используйте прямые запросы по реквизитам-основаниям — они работают независимо от критериев. Если связи нужны регулярно и в интерфейсе, попросите разработчика добавить критерий отбора в конфигураторе: это не требует доработки документов, только настройки состава критерия.
Видны ли связанные документы из других периодов и закрытых месяцев?
Да, панель связей и запросы показывают документы независимо от периода и закрытия месяца. Ограничение возможно только по правам доступа: если у пользователя нет прав на просмотр определённого вида документов, они могут не отображаться или открываться с ошибкой доступа.
Как проверить, нет ли «оборванных» цепочек — заказов без реализаций?
Постройте запрос: выберите проведённые заказы за период и левым соединением присоедините реализации по реквизиту основания, оставив строки, где реализация есть NULL. В типовых конфигурациях аналогичную задачу решают штатные отчёты по состоянию исполнения заказов.