Как убрать Заказ покупателя из структуры подчиненности Расходной накладной в 1С:УНФ

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

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

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

Почему документ отображается в структуре подчиненности, если поле «Заказ» пустое?

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

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

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

Рассмотрим подробнее каждый из способов исправления этой ситуации.

---

Способ 1. Очистка транзитивной связи через «Счет на оплату»

Выясним наиболее частую причину поведения системы на практике. Часто цепочка документов выглядит так: Заказ покупателя → Счет на оплату → Расходная накладная.

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

Пошаговый план действий:

  1. Откройте проблемную скопированную Расходную накладную.
  2. Внимательно изучите все вкладки документа (особенно вкладку «Дополнительно» или «Оплата»).
  3. Найдите поле «Счет на оплату» (или ДокументОснование). Если там указан счет, очистите это поле (нажмите на крестик или клавишу Del).
  4. Проведите документ. Проверьте структуру подчиненности еще раз.

---

Способ 2. Поиск и удаление скрытых связей в табличной части «Запасы»

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

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

Выполним следующие шаги для исправления:

  1. В форме Расходной накладной нажмите кнопку «Еще» в правом верхнем углу окна и выберите пункт «Шапка / табличная часть».
  2. В открывшемся диалоговом окне найдите настройку положения реквизита «Заказ». Переключите положение переключателя в значение «В табличной части». Нажмите «ОК».
  3. Посмотрим на изменившуюся табличную часть «Запасы». На форме появится новая колонка «Заказ». Обратите внимание: в строках товаров до сих пор выбраны ссылки на ваш старый заказ покупателя!
  4. Выделите и очистите значение в этой колонке для каждой строки, где присутствует старая ссылка. Если позиций много, можно очистить колонку групповым способом или просто временно удалить строки и заполнить их заново (например, через подбор).
  5. После очистки строк вы можете вернуть настройку положения заказа обратно в удобный для вас режим (например, «В шапке») через то же меню «Еще» — «Шапка / табличная часть».
  6. Обязательно нажмите кнопку «Провести и закрыть», чтобы изменения записались в базу данных.

---

Способ 3. Использование инструмента «Групповое изменение реквизитов»

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

Для этого воспользуемся стандартной обработкой изменения данных:

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

---

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

Иногда пользователи забывают, что критерии отбора в 1С работают в режиме реального времени на основе физических записей в таблицах транзакций СУБД. Если вы просто удалили ссылки, но не перепровели документ (или сохранили его простым нажатием «Записать»), старые индексы связей в базе данных могут быть не обновлены.

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

---

Информация для разработчиков: как быстро найти реквизит связи

Если вы являетесь программистом 1С и хотите быстро понять, по какому именно реквизиту строится связь между вашей накладной и заказом, вы можете написать простой запрос к таблице критерия отбора или воспользоваться программным кодом для поиска ссылок.

Рассмотрим пример программного кода, который позволяет быстро определить все реквизиты, связывающие два документа:


// Выведем список всех реквизитов, по которым Расходная накладная ссылается на Заказ
СсылкаНаЗаказ = Документы.ЗаказПокупателя.НайтиПоНомеру("0000-000001", ТекущаяДата());
СсылкаНаНакладную = Документы.РасходнаяНакладная.НайтиПоНомеру("0000-000002", ТекущаяДата());

ТаблицаСвязей = КритерииОтбора.СвязанныеДокументы.Найти(СсылкаНаЗаказ);
Для Каждого СтрокаСвязи Из ТаблицаСвязей Цикл
    Если СтрокаСвязи.Ссылка = СсылкаНаНакладную Тогда
        Сообщить("Связь найдена в метаданных: " + СтрокаСвязи.Реквизит);
    КонецЕсли;
КонецЦикла;

Этот код мгновенно покажет вам точное имя реквизита (будь то реквизит шапки или табличной части), который мешает разорвать связь в пользовательском интерфейсе.

Используя приведенные пошаговые инструкции, вы сможете легко поддерживать порядок в структуре подчиненности документов вашей компании и избегать путаницы при анализе цепочек продаж в 1С:УНФ.

← На главную