Почему не удаляется контрагент и как найти скрытые ссылки в документах поступления 1С

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Причины появления скрытых ссылок на контрагента в документах поступления

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

  1. Реквизиты доставки («Грузоотправитель» и «Грузополучатель»): на форме документа эти данные часто спрятаны под гиперссылкой или дополнительной панелью реквизитов доставки. Если поставщик и грузоотправитель являются разными юридическими лицами, удаляемый контрагент мог быть случайно или намеренно выбран грузоотправителем или грузополучателем.
  2. Специфические реквизиты шапки: например, КонтрагентДавалец при переработке давальческого сырья или третье лицо в операциях взаимозачета.
  3. Табличные части агентских и комиссионных операций: в табличных частях «Агентские услуги» или «Товары на комиссии» могут присутствовать отдельные реквизиты поставщиков и принципалов, ссылающиеся на удаляемого контрагента.
  4. Подчиненные справочники: удалению контрагента могут препятствовать его подчиненные элементы — ДоговорыКонтрагентов, БанковскиеСчета или КонтактныеЛица. Если документ ссылается на договор, владельцем которого является удаляемый контрагент, платформа заблокирует удаление родительского объекта.

Способ 1. Программный поиск ссылок через метод НайтиПоСсылкам

Когда стандартное удаление не дает точного ответа, в каком именно реквизите находится ссылка, воспользуемся возможностями встроенного языка 1С. Метод НайтиПоСсылкам() возвращает не просто список документов, но и точное метаописание реквизитов, где задействован объект.

Разберем пример кода для внешней обработки или консоли кода:


МассивДляПоиска = Новый Массив;
МассивДляПоиска.Добавить(УдаляемыйКонтрагент);

ТаблицаРезультатов = НайтиПоСсылкам(МассивДляПоиска);

Для Каждого Стр Из ТаблицаРезультатов Цикл
    // Стр.Данные — ссылка на документ или объект базы
    // Стр.Метаданные — имя реквизита, табличной части или регистра
    Сообщить("Объект: " + Строка(Стр.Данные) + " | Реквизит: " + Стр.Метаданные.ПолноеИмя());
КонецЦикла;

Такой подход позволяет сразу увидеть, что ссылка находится, например, в Документ.ПоступлениеТоваровУслуг.Реквизит.Грузоотправитель, минуя ручной перебор всех полей документа.

Способ 2. Поиск использования реквизитов через конфигуратор

Если доступен конфигуратор, выясним все потенциальные точки вхождения типа СправочникСсылка.Контрагенты в интересующем документе:

  1. Откроем дерево метаданных в конфигураторе.
  2. Найдем справочник Контрагенты, вызовем контекстное меню правой кнопкой мыши и выберем пункт «Поиск ссылок на объект».
  3. В окне поиска переключим фильтр на поиск «В свойствах».
  4. В сформированном списке метаданных найдем документ ПоступлениеТоваровУслуг. Платформа отобразит все реквизиты, имеющие данный тип:
    • Реквизит.Контрагент
    • Реквизит.Грузоотправитель
    • Реквизит.Грузополучатель
    • Реквизит.КонтрагентДавалец

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

Способ 3. Пакетная очистка ссылок через групповое изменение реквизитов

Если проблемных документов много, а контрагента необходимо гарантированно удалить, ручное открытие каждого документа неэффективно. Воспользуемся типовой обработкой БСП:

  1. Перейдем в раздел «Администрирование» → «Обслуживание» → «Корректировка данных» → «Групповое изменение реквизитов».
  2. В поле «Выбирать» укажем документ Поступление (акты, накладные, УПД).
  3. По кнопке «Дополнительные параметры» включим флаги «Показывать служебные реквизиты» и «Режим разработчика» (при необходимости работы со скрытыми полями).
  4. Настроим отбор: добавим условие, где Грузоотправитель Равно [Наш удаляемый контрагент] или Грузополучатель Равно [Наш удаляемый контрагент].
  5. В таблице реквизитов найдем поля Грузоотправитель или Грузополучатель, установим флаг изменения и оставим значение пустым (или выберем основного контрагента документа).
  6. Нажмем «Изменить реквизиты».

Важно: если документы находятся в закрытом периоде, проведение изменений потребует временного отключения даты запрета изменения данных для учетной записи администратора.

Способ 4. Объединение с помощью обработки «Поиск и удаление дублей»

В ситуациях, когда документы закрытого периода категорически нельзя перезаписывать или очищать, оптимальным решением является объединение удаляемого контрагента с другим элементом:

  1. Откроем инструмент «Поиск и удаление дублей» (раздел «Администрирование» → «Обслуживание» → «Корректировка данных»).
  2. Выберем область поиска — справочник Контрагенты.
  3. Выделим удаляемый элемент и целевой объект (например, созданный служебный контрагент «Архивный» или действующий дубль).
  4. Назначим правильный элемент оригиналом и выполним команду «Объединить».

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

← На главную