Как настроить отображение структуры подчиненности для нового документа в 1С:УПП 1.3?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

В этой статье мы подробно разберем механизм работы структуры подчиненности "под капотом" платформы 1С:Предприятие 8 и реализуем пошаговое решение этой задачи для конфигураций на обычных формах (таких как УПП 1.3, УТ 10.3, КА 1.1).

Философия связи документов: как система ищет "родителей" и "потомков"

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

  1. Поиск "вниз" (подчиненные документы): Чтобы найти все документы, созданные на основании текущего, система обращается к специальному объекту метаданных — Критерию отбора (обычно он называется СвязанныеДокументы). В качестве параметра передается ссылка на текущий документ. Запрос возвращает список всех документов, у которых реквизиты, входящие в состав критерия, ссылаются на исходный.
  2. Поиск "вверх" (родительские документы): Чтобы найти документы-основания, система анализирует метаданные самого текущего документа. Она обходит все его реквизиты (включая табличные части) и отбирает те, тип которых совпадает с типами документов. Важнейшее правило: реквизит будет признан "родителем" только в том случае, если этот конкретный реквизит (например, Документ.Корректировка.Реквизит.ДокументОснование) явно включен в состав критерия отбора СвязанныеДокументы.

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

Шаг 1. Настройка критерия отбора в Конфигураторе

Первым делом откроем конфигурацию и найдем нужный критерий отбора. Разберем по шагам, что нужно сделать:

  1. Откройте дерево метаданных и перейдите в ветку Общие -> Критерии отбора -> СвязанныеДокументы.
  2. Перейдите на вкладку "Данные". Убедитесь, что в качестве типа данных критерия выбран общий тип ДокументСсылка (в УПП 1.3 это сделано по умолчанию). Если в вашей конфигурации типы перечислены вручную, обязательно добавьте в этот список ссылку на ваш новый документ (например, ДокументСсылка.Корректировка).
  3. Перейдите на вкладку "Состав". Здесь представлено дерево всех документов конфигурации и их реквизитов. Найдите ваш новый документ (Корректировка), разверните его структуру и установите флажок напротив реквизита, который хранит ссылку на документ-основание (например, ДокументОснование).

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

Шаг 2. Размещение кнопки "Структура подчиненности" на обычной форме

В отличие от управляемых форм (где интерфейс "Перейти" может формироваться автоматически), в обычных формах УПП 1.3 командную панель навигации необходимо настраивать вручную. Если просто настроить критерий отбора, пользователь не увидит изменений, так как на форме нового документа банально нет кнопки для открытия структуры связанных документов.

Давайте добавим эту кнопку на форму документа Корректировка:

  1. Откройте форму вашего нового документа в Конфигураторе.
  2. Найдите основную командную панель формы (обычно она располагается вверху формы).
  3. Добавьте на командную панель новую кнопку. Назовем её, например, ДействиеСтруктураПодчиненности, установим для неё понятное представление (например, текст "Структура подчиненности" или выберем стандартную иконку дерева подчиненности).
  4. В свойствах кнопки в поле "Действие" нажмите на лупу, чтобы создать новый обработчик события нажатия на клиенте.

Шаг 3. Программный вызов отчета

Теперь нам нужно написать код, который при нажатии на кнопку будет открывать стандартный типовой отчет структуры подчиненности, передавая в него ссылку на текущий документ. В конфигурации УПП 1.3 для этого предусмотрен готовый общий модуль.

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


Процедура ДействиеСтруктураПодчиненности(Кнопка)
    
    // Проверим, что документ записан в базу данных, так как у нового (незаписанного) 
    // документа еще нет ссылки и строить структуру подчиненности для него бессмысленно
    Если ЭтоНовый() Тогда
        Предупреждение("Для просмотра структуры подчиненности документ необходимо записать!");
        Возврат;
    КонецЕсли;
    
    // Вызываем стандартный метод открытия формы отчета из общего модуля УПП
    РаботаСДиалогами.ОткрытьФормуСтруктурыПодчиненности(Ссылка);
    
КонецПроцедуры

Этот простой вызов автоматически инициализирует типовой отчет, передаст в него контекст текущего документа, и система сама построит дерево связей как "вверх" к ПоступлениеТоваровУслуг, так и "вниз", если у вашего нового документа появятся свои подчиненные объекты.

Частые ошибки и нюансы при настройке

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

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

← На главную