Связь между документами 1С 8.3: основание, расчёты, обмен и код

· 10 мин

Содержание

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

Какой способ выбрать? Если второго документа ещё нет — только ввод на основании: 1С сама перенесёт контрагента, договор, товары и суммы. Если оба документа уже есть и их нужно сцепить задним числом — правка поля-ссылки и перепроведение. Код нужен, когда связывать приходится сотни документов или связь живёт в нетиповом реквизите.

Как устроена связь документов в 1С

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

Из этого следуют три практических вывода:

  • 🔗 связь всегда направленная: подчинённый документ «знает» основание, а основание о подчинённом не хранит ничего;
  • 🔍 структура подчинённости строится поиском: платформа ищет документы, у которых в определённых реквизитах стоит ссылка на текущий;
  • 🧩 если ссылка лежит в реквизите, который не включён в этот поиск, документ «выпадет» из цепочки, хотя ссылка в нём есть.

В типовых конфигурациях на БСП поиск идёт по критерию отбора СвязанныеДокументы. В его состав разработчики включили реквизиты-основания, расчётные документы и ссылки на заказы. Отсюда частая ситуация: связь есть в данных, но в структуре её не видно — к этому вернёмся в разделе про ошибки.

Где увидеть связанные документы

Откройте документ и найдите в командной панели формы кнопку Структура подчиненности (значок иерархии; если панели не хватает места, команда уходит в меню Ещё). В отчёте текущий документ выделен жирным, выше стоят основания, ниже — подчинённые документы. Любой документ из дерева открывается двойным щелчком.

Структура подчинённости открывается и из списка документов: выделите строку и вызовите ту же команду. Удобно, когда нужно быстро проверить несколько накладных подряд.

Связать документы вручную: ввод на основании и поле «Основание»

Способ 1. Создать документ на основании

Это основной и самый надёжный способ. Связь возникает сама, а реквизиты переносятся без ошибок набора.

  1. Откройте документ-основание, например Счет покупателю в БП 3.0.
  2. Нажмите в командной панели кнопку Создать на основании.
  3. Выберите нужный документ из списка — например, Реализация (акт, накладная, УПД).
  4. Проверьте заполненные поля: контрагент, договор, склад, количество, цены.
  5. Проведите документ.

Список документов, которые можно ввести на основании, задан в конфигурации. Если нужного варианта нет в выпадающем списке, связь этим способом не предусмотрена — переходите к способу 2.

Типовые цепочки, которые чаще всего строят через ввод на основании:

ОснованиеЧто создают на его основании
Счёт покупателюРеализация, поступление на расчётный счёт
РеализацияСчёт-фактура выданный, возврат от покупателя
Поступление (акт, накладная, УПД)Платёжное поручение, счёт-фактура полученный, возврат поставщику
Платёжное поручениеСписание с расчётного счёта

Счёт-фактуру к реализации в БП 3.0 удобнее выписать ссылкой внизу формы самого документа реализации. Это тот же ввод на основании, только в один клик.

Способ 2. Выбрать основание в существующем документе

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

  1. Откройте подчинённый документ.
  2. Найдите поле со ссылкой на другой документ. Его название зависит от вида документа: «Основание», «Счет на оплату», «Заказ», «Сделка». Поле может быть на вкладке Дополнительно или в подвале формы.
  3. Нажмите кнопку выбора и найдите документ в списке. Отберите список по контрагенту и дате, чтобы не перебирать сотни строк.
  4. Нажмите Провести и закрыть.

Если поле влияет на движения (расчёты, резервы, заказы), документ нужно перепровести — иначе связь будет только в реквизите, а остатки по счетам и регистрам останутся старыми.

Как 1С связывает документы сама: расчёты, счета-фактуры, заказы

Часть связей 1С ставит без участия пользователя. Чтобы они работали предсказуемо, полезно знать, какая настройка за них отвечает.

Оплата и документ расчётов

В БП 3.0 в документах Поступление на расчетный счет и Списание с расчетного счета в расшифровке платежа есть поле «Способ погашения задолженности»:

  • ⚙️ Автоматически — программа сама закрывает самый ранний долг по договору (по методу FIFO). Документ расчётов в строке не указывается, связь определяется при проведении;
  • 📌 По документу — появляется поле «Документ расчетов», в нём выбирают конкретную реализацию или поступление;
  • 🚫 Не погашать — сумма уходит в аванс, даже если долг есть.

Нужна жёсткая связь «эта оплата — за эту накладную» — ставьте «По документу». Это важно для сверки по конкретным сделкам и при расчётах в разрезе документов.

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

Счёт-фактура и его основания

Счёт-фактура выданный в БП 3.0 хранит документы-основания в отдельной табличной части. Один счёт-фактура можно связать с несколькими реализациями одного контрагента: добавьте их строками в список оснований. Связь нужна для книги продаж — без основания счёт-фактура не сформирует запись правильно.

Заказы в УТ 11 и КА 2

В УТ 11 реализация, введённая на основании заказа клиента, связывается с ним через реквизит заказа. Один заказ может закрываться несколькими отгрузками, и одна отгрузка может закрывать несколько заказов одного клиента. Состояние заказа («к отгрузке», «закрыт») рассчитывается по этим связям.

Связь документов из разных баз при обмене

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

Что происходит при синхронизации данных:

  1. Каждый объект выгружается с уникальным идентификатором (УИД).
  2. В базе-приёмнике обмен ищет объект с тем же УИД или сопоставляет его по ключевым полям.
  3. Если основание уже загружено, ссылка в подчинённом документе восстанавливается. Если нет — ссылка останется пустой или укажет на объект, созданный только по ключевым полям; он дозаполнится, когда основание придёт следующим обменом.

Отсюда правила для межбазового связывания:

  • 🔁 выгружайте основание не позже подчинённого документа или в том же сеансе обмена;
  • 🧾 не создавайте основание в приёмнике вручную, если оно придёт обменом, — получится дубль, и связь «уедет» на копию;
  • 📎 если документ-основание в обмен не входит (например, счёт остался в УТ, а в БП переходит только реализация), фиксируйте связь текстом: номер и дату основания в комментарии или дополнительном реквизите.

При обмене по правилам Конвертация данных перенос ссылки на основание задаётся в правилах конвертации реквизитов. Если в приёмнике основание пустое, первым делом проверьте, выгружается ли этот реквизит вообще.

Входящие электронные документы из ЭДО тоже связывают с учётом: при получении УПД его сопоставляют с уже существующим документом поступления или создают новый. Если сопоставить с неверным документом, связь придётся переустанавливать вручную в карточке электронного документа.

Почему документы не связываются: ошибки и решения

Диагностика: выберите симптом

Ещё одна ловушка — копирование документа. Копия часто наследует ссылку на основание исходного документа. В результате к одному счёту «привязываются» две реализации. После копирования всегда проверяйте поле-основание и при необходимости меняйте его.

Программное связывание документов (для разработчиков)

Ввод на основании в конфигураторе

Чтобы документ можно было создать из другого, нужны два шага:

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

    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
        Основание  = ДанныеЗаполнения;
        Контрагент = ДанныеЗаполнения.Контрагент;
        Договор    = ДанныеЗаполнения.Договор;

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

КонецПроцедуры

Имена документов и реквизитов здесь условные — подставьте свои.

Создать связанный документ из кода

Метод Заполнить() вызывает тот же обработчик ОбработкаЗаполнения, поэтому документ заполнится так же, как при ручном вводе на основании:

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

Найти все документы, связанные с основанием

Если нужен список подчинённых документов в отчёте или обработке, достаточно запроса по реквизиту-основанию:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|   Док.Ссылка КАК Документ,
|   Док.Дата КАК Дата
|ИЗ
|   Документ.ПоступлениеТоваров КАК Док
|ГДЕ
|   Док.Основание = &Основание
|   И НЕ Док.ПометкаУдаления
|УПОРЯДОЧИТЬ ПО
|   Дата";
Запрос.УстановитьПараметр("Основание", СсылкаНаЗаказ);
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
    Сообщить(Строка(Выборка.Документ));
КонецЦикла;

Массовую перепривязку оснований в рабочей базе запускайте только после резервной копии и на тестовой копии сначала. Изменение реквизита без перепроведения не меняет движения, а перепроведение сотен документов закрытого периода может сдвинуть остатки и сломать сданную отчётность.

Связи в нетиповой и доработанной конфигурации

В самописной или сильно доработанной базе связь документов приходится проектировать самому. Минимальный набор:

  • 📄 реквизит-ссылка на основание — тип ДокументСсылка.<Имя> или составной тип, если оснований может быть несколько видов;
  • ⚙️ ввод на основании — свойство «Вводится на основании» и обработчик ОбработкаЗаполнения;
  • 🌳 критерий отбора — чтобы новая связь появилась в структуре подчинённости, реквизит включают в состав критерия СвязанныеДокументы (а в «чистой» конфигурации без БСП — создают такой критерий самостоятельно);
  • 🛡️ проверка при записи — например, запрет выбирать основание другого контрагента.

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

Когда программиста нет, а связь нужна «для себя» — для поиска и сверки, а не для движений, — хватит дополнительного реквизита. В типовых конфигурациях на БСП они настраиваются в Администрирование → Общие настройки → Дополнительные реквизиты и сведения. В такой реквизит можно записать номер и дату связанного документа, а потом отбирать по нему список.

Перед тем как связывать документы
Выполнено: 0 / 6

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

Можно ли связать один документ с несколькими основаниями?
Только если в документе есть табличная часть оснований или составное поле. Так устроен счёт-фактура выданный: в нём список реализаций. В обычном поле «Основание» хранится одна ссылка.
Можно ли изменить основание у проведённого документа?
Да. Снимите запрет редактирования, если период закрыт датой запрета, поменяйте поле и перепроведите документ. Изменения в закрытом периоде согласуйте с главным бухгалтером.
Пропадёт ли связь, если основание пометить на удаление?
Нет. Пометка на удаление ссылку не стирает. А удалить основание окончательно 1С не даст, пока на него ссылаются другие документы.
Чем «Создать на основании» отличается от копирования?
Копия повторяет исходный документ того же вида. Ввод на основании создаёт документ другого вида, заполняет его по правилам конфигурации и сохраняет ссылку на основание.
Почему в структуре подчинённости слишком много документов?
В неё попадают все документы, где встречается ссылка на текущий: оплаты, возвраты, корректировки. Чтобы найти нужный, раскрывайте ветки и смотрите вид документа.