К статье
Практический материал

Документы и Печать · 11 мин

Связанные документы в 1С: как сделать и настроить связь

Как сделать связанные документы в 1С: ввод на основании, критерии отбора, подписки на события и программная связь. Пошаговые инструкции, ошибки и FAQ.

Связанные документы в 1С — это объекты, между которыми установлена логическая связь: например, заказ покупателя и созданная на его основании реализация, счёт на оплату и поступление денежных средств. Такая связь позволяет быстро переходить от одного документа к другому, строить цепочки «заказ → отгрузка → оплата» и контролировать полноту оформления хозяйственных операций.

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

Ниже разобраны основные способы: ввод на основании, критерии отбора, программное заполнение, отображение связанных документов в форме и типичные ошибки, из-за которых связь «не работает».

Что такое связанные документы и зачем они нужны

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

Практическая польза связей очевидна: менеджер видит, отгружен ли заказ и оплачен ли он; бухгалтер быстро находит первичный документ к проводке; при расхождениях в учёте можно пройти по цепочке и найти, на каком этапе возникла ошибка. Кроме того, ввод на основании автоматически переносит данные (контрагента, номенклатуру, суммы), что сокращает ручной ввод и количество опечаток.

Способ 1. Ввод на основании в пользовательском режиме

Самый простой способ создать связанный документ — не настраивать ничего, а воспользоваться штатной кнопкой. Откройте документ-основание (например, «Заказ покупателя») и нажмите «Создать на основании» — система предложит список документов, которые можно ввести. Выберите нужный, и новый документ откроется уже заполненным данными из основания.

После проведения нового документа связь зафиксируется. Чтобы увидеть всю цепочку, откройте любой документ из неё и перейдите по команде «Связанные документы» (в разных конфигурациях она находится в меню «Ещё», на панели навигации формы или отдельной кнопкой). Откроется иерархическая структура: основание, сам документ и все производные от него.

Если кнопки «Создать на основании» нет или в списке нет нужного вида документа — значит, связь не настроена в конфигурации, и потребуется доработка в конфигураторе, описанная ниже.

Порядок действий в пользовательском режиме
  1. 1
    Откройте документ-основание и нажмите «Создать на основании».
  2. 2
    Выберите нужный вид документа из предложенного списка.
  3. 3
    Проверьте автоматически заполненные поля и дополните недостающие данные.
  4. 4
    Проведите документ — связь зафиксируется.
  5. 5
    Откройте «Связанные документы» и убедитесь, что цепочка отображается корректно.

Способ 2. Настройка ввода на основании в конфигураторе

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

Далее в модуле объекта документа-получателя создайте обработчик «ОбработкаЗаполнения». Он вызывается при вводе на основании и отвечает за перенос данных. Минимальный пример:

1c
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
	Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
		ДокументОснование = ДанныеЗаполнения;
		Контрагент = ДанныеЗаполнения.Контрагент;
		Для Каждого СтрокаТовары Из ДанныеЗаполнения.Товары Цикл
			НоваяСтрока = Товары.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовары);
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

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

Способ 3. Критерий отбора «Связанные документы»

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

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

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

Способ 4. Программное создание связанного документа

Во внешних обработках, обменах и регламентных заданиях связанный документ создаётся кодом. Принцип тот же: создать объект, заполнить реквизит основания ссылкой, перенести данные и записать. Пример:

1c
НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДатаСеанса();
НовыйДок.Заполнить(СсылкаНаЗаказ); // вызовет ОбработкаЗаполнения
НовыйДок.Записать(РежимЗаписиДокумента.Проведение);

Вызов метода «Заполнить» с параметром-ссылкой автоматически запускает обработчик «ОбработкаЗаполнения», поэтому логика переноса данных не дублируется. Если обработчика нет, заполняйте реквизиты вручную, но реквизит основания установите обязательно — без него связь не образуется.

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

Проверка результата и типичные ошибки

После настройки проверьте связь в обе стороны: от основания к созданному документу и обратно. Откройте заказ, перейдите к связанным документам — реализация должна быть видна. Откройте реализацию — в ней должен быть заполнен реквизит основания, а в панели связей — исходный заказ.

Контрольные точки

Как проверить результат

Кнопка «Создать на основании»
Норма

В списке есть нужный вид документа

Тревожный признак

Вида нет — не заполнено свойство «Вводится на основании»

Данные нового документа
Норма

Поля и табличные части перенесены из основания

Тревожный признак

Документ пустой — ошибка в ОбработкаЗаполнения

Панель «Связанные документы»
Норма

Отображается вся цепочка

Тревожный признак

Документ не виден — его реквизит основания не включён в критерий отбора

Типичные ошибки
01
Нет реквизита основания в документе-получателе — связь некуда записывать, критерий отбора не сработает.
02
ОбработкаЗаполнения перезаписывает данные при каждом открытии — обработчик должен срабатывать только при создании, а не при перепроведении.
03
В критерий отбора включён не тот реквизит (например, «Контрагент» вместо «ДокументОснование») — связи показываются неверно или не показываются вовсе.
04
Документ создан копированием, а не вводом на основании — реквизит основания пуст, цепочка разорвана.
05
Доработка типовой конфигурации без расширения — при обновлении настройка связей теряется.

Ограничения и альтернативные подходы

Механизм ввода на основании предполагает связь «один ко многим» через реквизит ссылки. Если требуется связь «многие ко многим» (несколько заказов в одной реализации и наоборот), одного реквизита недостаточно — используют табличную часть с ссылками на основания или отдельный регистр сведений, фиксирующий пары связанных документов. В типовых конфигурациях для этого есть свои механизмы (например, распределение по заказам).

Альтернатива полноценной связи — простой гипертекстовый переход через отбор в динамическом списке или подчинённые регистры. Это проще в настройке, но не даёт автозаполнения и единой структуры связей. Выбирайте такой вариант, только если нужно лишь «видеть рядом» связанные объекты без строгого контроля цепочки.

Маршрут решения

Как выбрать действие

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

Что важно запомнить

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

Частые вопросы

Почему кнопка «Создать на основании» пустая или неактивна?

Либо у документа не настроено свойство «Вводится на основании» для нужных видов, либо у пользователя нет прав на создание документов-получателей. Проверьте права роли и настройки в конфигураторе. Также кнопка может быть скрыта настройками формы — проверьте меню «Ещё → Изменить форму».

Можно ли связать уже созданные документы задним числом?

Да. Откройте документ-получатель и вручную заполните реквизит основания ссылкой на нужный документ, затем запишите. После этого документ появится в панели связанных. Для массовой обработки удобнее написать простую обработку, заполняющую реквизит программно.

Почему документ не виден в структуре связанных документов?

Наиболее частая причина — реквизит основания этого документа не включён в состав критерия отбора, по которому строится структура. Вторая причина — реквизит основания пуст (документ создан копированием или вручную). Проверьте оба момента.

Как разорвать связь между документами?

Очистите реквизит основания в документе-получателе и запишите его. Учтите, что в типовых конфигурациях очистка основания может повлиять на контроль остатков по заказам и проверки при проведении — делайте это осознанно и при необходимости перепроведите связанные документы.

Можно ли настроить связи без доступа к конфигуратору?

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

Сохранятся ли настройки связей при обновлении типовой конфигурации?

Штатные связи типовой конфигурации сохраняются всегда. Собственные доработки сохранятся, если выполнены через расширение конфигурации. Прямые изменения типовых объектов могут быть затёрты при обновлении — поэтому их и рекомендуется избегать.