Как удалить нежелательные связи между документами в 1С:Управление торговлей 10.3

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

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

Выясняем причину возникновения лишних связей

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

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

Где именно «прячутся» ссылки в УТ 10.3

Разберем по шагам, в каких именно полях документа ВозвратТоваровОтПокупателя может храниться нежелательная ссылка на РеализациюТоваровУслуг:

  1. Реквизит Сделка: Этот реквизит часто используется для связи с заказами или реализациями. Даже если он скрыт в настройках формы, программно он может быть заполнен значением из документа-образца.
  2. Реквизит ДокументОснование: У многих документов в УТ 10.3 есть стандартный реквизит «ДокументОснование». Он крайне редко выводится на форму, так как служит для служебных целей платформы, но именно по нему строится большинство связей.
  3. Табличная часть Товары, колонка Документ партии: Если в информационной базе ведется партионный учет (особенно по методу FIFO), то при возврате система фиксирует, из какой именно отгрузки возвращается товар. Ссылка на реализацию записывается в каждую строку табличной части.
  4. Табличная часть Товары, колонка Заказ покупателя: Аналогично партиям, если возврат оформляется в рамках конкретного заказа, ссылка на него будет присутствовать в строках документа.

Способ 1: Использование встроенной обработки

Посмотрим на самый простой метод для пользователя, не требующий написания кода. В конфигурации УТ 10.3 присутствует стандартная «Групповая обработка справочников и документов». С её помощью можно принудительно изменить значения реквизитов.

Для этого выполним следующие действия:

  1. Откроем обработку (меню Сервис — Групповая обработка).
  2. Выберем тип объекта «Документы» и добавим в список «Возврат товаров от покупателя».
  3. Установим отбор по конкретным документам, в которых нужно удалить связь.
  4. Нажмем «Выбрать», затем в поле «Действие» выберем «Изменить реквизит».
  5. В списке реквизитов найдем Сделка или ДокументОснование и установим пустое значение.

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

Способ 2: Программная очистка связей

Если визуальные методы не помогают, проанализируем программный способ решения задачи. Для этого нам понадобится внешняя обработка «Консоль кода» или возможность выполнить произвольный алгоритм. Мы должны очистить ссылки в объекте и записать его.

Рассмотрим пример кода, который очищает основные реквизиты связи в шапке документа:


// Получаем объект документа из ссылки
ДокументОбъект = СсылкаНаВозврат.ПолучитьОбъект();

// Очищаем основные реквизиты связи
ДокументОбъект.ДокументОснование = Неопределено;
ДокументОбъект.Сделка = Неопределено;

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

// Записываем документ с отключением проверок, если это необходимо
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

Этот алгоритм позволяет гарантированно «отвязать» документ от реализации. Однако стоит помнить, что поле ДокументПартии критически важно для корректного расчета себестоимости при проведении. Если его очистить в проведенном документе, система при перепроведении может выдать ошибку или неверно рассчитать стоимость возвращаемых остатков.

Способ 3: Использование внешних инструментов разработчика

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

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


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

Последствия удаления связей для учета

Прежде чем приступать к удалению, выясним, на что это повлияет. В 1С:УТ 10.3 связи между документами — это не просто удобство навигации. Они несут важную учетную нагрузку:

  1. Взаиморасчеты: Если документ Возврат товаров от покупателя связан с конкретной сделкой (реализацией), то сумма возврата автоматически уменьшает долг покупателя именно по этой накладной. Если связь разорвать, возврат может попасть в «общий котел» авансов, и долг по накладной останется незакрытым.
  2. Себестоимость: Как уже упоминалось, ДокументПартии определяет, по какой цене товар вернется на склад. Без этой ссылки программа будет использовать среднюю цену или выдаст ошибку об отсутствии данных о партии.
  3. Отчетность: Многие управленческие отчеты (например, «Продажи по дисконтным картам» или «Ведомость по взаиморасчетам») могут использовать эти связи для корректной группировки данных.

Рекомендации по предотвращению проблемы

Чтобы в будущем не сталкиваться с необходимостью «чистить» базу, рекомендуем придерживаться следующих правил:

Таким образом, мы проанализировали основные причины появления «призрачных» связей и разобрали три эффективных метода их устранения. Понимание работы Критериев отбора и структуры хранения данных в ДокументОбъект позволяет системно подходить к решению подобных технических задач в среде 1С.

← На главную