Связь «основание → подчинённый документ» в 1С: как её разорвать и не испортить учёт
Содержание
Разъединить документы в 1С — значит убрать ссылку одного документа на другой: очистить поле основания, поменять заказ или счёт в шапке, переназначить счёт-фактуру. Удалять сам документ для этого не нужно. Сначала откройте Структура подчиненности в форме документа и найдите, в каком поле хранится связь, затем очистите или замените это поле и перепроведите документ.
Частое заблуждение: связь живёт где-то отдельно, и её снимают специальной кнопкой «Отвязать». Такой кнопки в типовых конфигурациях нет. Связь — это обычный реквизит со ссылкой на другой документ. Поменяли реквизит — связь пропала. Отсюда и все способы ниже: от правки одного поля руками до обработки, которая чистит сотни документов за раз.
Когда документы приходится разъединять
Связь появляется при вводе на основании: из счёта создали реализацию, из реализации — счёт-фактуру, из поступления — возврат. Иногда эта связь мешает.
Типовые ситуации:
- 🔗 Документ создали не на том основании. Реализацию ввели из чужого счёта на оплату, и теперь счёт числится оплаченным, а нужный — нет.
- 🧾 Счёт-фактура привязан не к той реализации. Например, выставили один счёт-фактуру, а он должен относиться к другой отгрузке.
- 💳 Оплата закрыла не тот долг. В расшифровке платежа указан не тот документ расчётов, и сальдо по контрагенту «разъехалось».
- 🗑️ Документ нельзя удалить. Обработка удаления помеченных объектов пишет, что на него есть ссылки. Пока ссылки не убраны, объект останется в базе.
- ✂️ В одном документе смешались две операции. Две отгрузки разными датами или два договора оформили одной реализацией, и её надо разделить.
Перед любыми действиями ответьте себе на вопрос: нужно убрать ссылку или разделить содержимое? Первое — правка одного поля. Второе — создание нового документа и перенос строк. Это разные процедуры.
Как разорвать связь вручную в форме документа
Ручной способ подходит, когда документов один-три. Работает во всех конфигурациях на платформе 8.3 с интерфейсом «Такси».
Шаг 1. Найдите, где хранится связь
- Откройте подчинённый документ (тот, что создан на основании).
- Нажмите в командной панели кнопку
Структура подчиненности(значок иерархии) или найдите эту команду в менюЕщё. - В дереве посмотрите, какой документ стоит выше текущего — это основание. Ниже — документы, созданные уже на основании текущего.
- Вернитесь в форму и найдите поле, где указано основание. Чаще всего это поле в шапке («Основание», «Счёт на оплату», «Заказ»), реже — колонка в табличной части.
Если поле не видно, проверьте вкладки формы и раскрывающиеся группы. В части документов реквизит основания на форму не выведен вообще: тогда ручная правка невозможна, нужен групповой способ или код.
Шаг 2. Очистите или замените ссылку
- Нажмите на поле и очистите его (крестик справа или
Shift+F4) либо выберите правильный документ из списка. - Проверьте, не заполнились ли от основания другие поля: договор, склад, цены, ставки НДС. При смене основания они могут остаться старыми.
- Нажмите
Провести и закрыть. Если документ не был проведён —Записать и закрыть.
После этого снова откройте Структура подчиненности и убедитесь, что основание пропало из дерева.
Шаг 3. Отдельно — счёт-фактура и оплата
Эти две связи влияют на учёт, поэтому с ними осторожнее.
Счёт-фактура. Он ссылается на документ отгрузки или поступления, и по этой ссылке формируются записи книги продаж или покупок. Самый чистый путь в БП 3.0:
- Откройте неверный счёт-фактуру и пометьте его на удаление (
Ещё → Пометить на удалениеилиDelв списке). - Откройте нужную реализацию и создайте счёт-фактуру из неё ссылкой «Выписать счёт-фактуру» внизу формы.
- Сверьте номер: если номер должен остаться прежним, поправьте его вручную в новом документе.
Перепривязать счёт-фактуру, поменяв основание в его форме, тоже можно, но тогда проверьте книгу продаж за период: старые записи должны уйти, новые — появиться.
Оплата. В документах банка и кассы связь с долгом задаётся в расшифровке платежа. Там есть настройка погашения задолженности со значениями «Автоматически», «По документу» и «Не погашать». Чтобы отвязать оплату от конкретной реализации, выберите «Автоматически» или укажите другой документ расчётов и перепроведите платёж. Если в расшифровке есть колонка счёта на оплату — очистите и её, иначе счёт останется в статусе «оплачен».
Если период закрыт или по нему сдана отчётность, менять связь счёта-фактуры и оплаты задним числом нельзя без перерасчёта. Изменения коснутся книги покупок/продаж, сальдо по 62 и 60 счетам и закрытия месяца.
Как разделить один документ на два
Иногда «разъединить» значит другое: разбить одну реализацию или одно поступление на два документа. Например, отгрузку на 200 позиций по двум договорам провели одним документом.
Порядок:
- Откройте исходный документ и снимите с него проведение (
Ещё → Отмена проведения) — так вы не получите задвоения на время работы. - В списке документов выделите его и нажмите
Скопировать(F9). - В копии оставьте строки, которые уходят во второй документ, остальные удалите. Поправьте договор, дату, номер.
- В исходном документе удалите строки, перенесённые в копию.
- Сверьте итоговые суммы: сумма двух новых документов должна совпасть с суммой исходного до копейки.
- Проведите оба документа.
Не проводите копию, пока в оригинале остаются те же строки: товар спишется дважды, а выручка задвоится. Если копию провели по ошибке, отмените её проведение и пометьте на удаление.
Подчинённые документы при этом остаются привязаны к оригиналу. Если от исходной реализации уже был выписан счёт-фактура, его надо исправить на новую сумму и выписать второй счёт-фактуру от копии.
| Сценарий | Что делать | Риск |
|---|---|---|
| Документ не проведён, подчинённых нет | Копировать и удалить лишние строки | Минимальный |
| Документ проведён, подчинённых нет | Отменить проведение, разделить, провести оба | Задвоение, если провести копию раньше |
| От документа выписан счёт-фактура | Разделить, исправить первый счёт-фактуру, выписать второй | Ошибка в книге продаж |
| Период закрыт, отчётность сдана | Лучше корректировочный или исправительный документ текущим периодом | Пересдача деклараций |
Групповое снятие связей обработкой
Когда документов десятки, ручной способ не годится. В конфигурациях на БСП (БП 3.0, УТ 11, ЗУП 3.1) есть обработка группового изменения реквизитов.
Путь в БП 3.0: Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.
- Сделайте резервную копию базы
— выгрузку в
.dtили копию каталога файловой базы. - Откройте обработку и выберите вид документов, например «Реализация (акты, накладные, УПД)».
- Настройте отбор: период, организация, контрагент, нужное основание.
- В списке реквизитов отметьте поле со ссылкой на основание и оставьте новое значение пустым (или укажите правильный документ).
- Запустите изменение и посмотрите итог: обработка сообщит, сколько объектов изменено и какие не удалось записать.
Обработка меняет реквизиты, но сама не перепроводит документы. Если от поля зависят движения (НДС, расчёты), перепроведите изменённые документы: групповое перепроведение есть в той же группе Корректировка данных или выполняется через закрытие месяца
.
Сначала прогоните обработку на одном-двух документах, проверьте результат и только потом запускайте на весь отбор.
Если документ нужно не перепривязать, а удалить, а удаление упирается в ссылки, обработка Администрирование → Обслуживание → Удаление помеченных объектов сама покажет, кто ссылается на объект. Пройдите по этому списку и уберите ссылки, затем повторите удаление.
Программное разъединение для разработчика
Код нужен, когда реквизит со ссылкой не выведен на форму или связь хранится в табличной части сотен документов. Работайте во внешней обработке, а не правкой типовой конфигурации.
Найти все документы, которые ссылаются на объект
Платформенная функция НайтиПоСсылкам возвращает таблицу с колонками Ссылка, Данные и Метаданные:
&НаСервереБезКонтекста
Процедура ПоказатьСсылающиеся(ДокументОснование)
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(ДокументОснование);
Таблица = НайтиПоСсылкам(МассивСсылок);
Для Каждого СтрокаТаблицы Из Таблица Цикл
Сообщить(Строка(СтрокаТаблицы.Данные) + " — " + СтрокаТаблицы.Метаданные.Представление());
КонецЦикла;
КонецПроцедуры
На большой базе функция работает долго: она проверяет все таблицы, где может храниться ссылка такого типа. Запускайте её в нерабочее время или ограничьтесь запросом к конкретным документам.
Очистить реквизит основания
&НаСервереБезКонтекста
Процедура ОчиститьОснование(СсылкаНаДокумент, ИмяРеквизита)
Объект = СсылкаНаДокумент.ПолучитьОбъект();
Попытка
Объект.Заблокировать();
Исключение
Сообщить("Документ открыт другим пользователем: " + Строка(СсылкаНаДокумент));
Возврат;
КонецПопытки;
Объект[ИмяРеквизита] = Неопределено;
Если Объект.Проведен Тогда
Объект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
Объект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецПроцедуры
Пояснения к коду:
- 🧩 Имя реквизита у разных документов своё. Посмотрите его в конфигураторе в дереве метаданных документа или в форме через
Ещё → Изменить форму. - 🧩
Неопределеноподходит для реквизитов составного типа. Для реквизита одного ссылочного типа присвойте пустую ссылку, напримерДокументы.СчетНаОплатуПокупателю.ПустаяСсылка(). - 🧩 Режим
Проведениепересоздаёт движения. Если документ проводится с ошибкой (закрытый период, нехватка остатков), запись не пройдёт — это правильно, не обходите проверку. - 🧩 Не ставьте
ОбменДанными.Загрузка = Истина, чтобы «быстрее записать». Документ запишется без проверок, а движения останутся от старой связи.
Если ссылка хранится в табличной части, обойдите строки и очистите колонку в каждой, затем запишите объект один раз.
Где это делается по-разному: БП, УТ и ЗУП
Принцип везде один, отличаются поля, в которых живёт связь, и последствия.
| Конфигурация | Типичная связь | Где менять | На что повлияет |
|---|---|---|---|
| Бухгалтерия 3.0 | Реализация ← счёт на оплату; счёт-фактура ← реализация | Поле счёта в документе; основание счёта-фактуры | Статус оплаты счёта, книга продаж |
| Бухгалтерия 3.0 | Оплата ← реализация | Расшифровка платежа, способ погашения | Сальдо по 62/60, акт сверки |
| УТ 11 | Реализация ← заказ клиента | Поле заказа в шапке или в строках товаров | Статус и остатки к отгрузке по заказу, резервы |
| ЗУП 3.1 | Исправляющий документ ← исходный | Связь не меняют, отменяют исправление | Перерасчёт начислений |
В УТ 11 смена заказа в реализации меняет картину исполнения заказа: отгрузка «уйдёт» с одного заказа и закроет другой. Проверьте оба заказа после правки.
В ЗУП 3.1 исправляющий документ создаётся из исходного и хранит на него ссылку. Разрывать её вручную нельзя: если исправление ошибочное, отмените проведение исправляющего документа и пометьте его на удаление — исходный снова станет действующим.
Если связь разорвали по ошибке
Вернуть связь проще, чем кажется, если знать, какой была ссылка.
- Журнал регистрации.
Администрирование → Обслуживание → Журнал регистрации, отбор по событию изменения данных и по нужному документу. Видно, кто и когда записал документ. - История изменений. Если в базе включено версионирование объектов, в форме документа есть команда
Ещё → История изменений. Там можно сравнить версии и увидеть прежнее значение поля, а иногда — восстановить версию целиком. - Резервная копия. Разверните копию базы рядом с рабочей, откройте в ней тот же документ и посмотрите основание. Затем руками укажите его в рабочей базе. Загружать
.dtповерх рабочей базы ради одного поля не нужно — потеряете всё, что ввели после копии. - Обработка массово. Если связь сняли у многих документов, выгрузите из копии пары «документ — основание» и восстановите их тем же кодом из раздела выше, только присваивая сохранённое значение.
После восстановления перепроведите документы и проверьте книгу продаж, взаиморасчёты и статусы заказов за затронутый период.
Ошибки при разъединении и как их не допустить
- ❌ Удалить документ вместо смены ссылки. Вместе с ним уходят его движения, а подчинённые документы ссылаются на удалённый объект. Если нужен только разрыв связи — меняйте поле.
- ❌ Не перепровести после правки. Поле поменяли, а движения регистров остались по старой связи. Отчёт показывает одно, документ — другое.
- ❌ Править закрытый период. Изменения задевают уже рассчитанные итоги. Сначала снимите дату запрета изменения у ответственного, затем перезакройте месяц.
- ❌ Оставить хвосты от основания. Договор, цены и ставки НДС заполнились из старого основания и остались в документе.
- ❌ Групповая обработка без отбора. Пустое поле основания проставляется всем документам вида за всё время.
Чтобы связи не приходилось рвать, проверяйте четыре вещи перед вводом на основании: