Как настроить отображение нового документа в структуре подчиненности в 1С:КА 2.4 и ERP

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

При разработке новых объектов в современных конфигурациях 1С (таких как «Комплексная автоматизация 2.4», «ERP Управление предприятием 2» или «Управление торговлей 11») разработчики часто сталкиваются с тем, что простого указания связи в метаданных (на закладке «Ввод на основании») недостаточно. Чтобы документ корректно отображался в отчете «Связанные документы» (структура подчиненности), необходимо выполнить ряд настроек в системе. Рассмотрим этот процесс детально и разберем по шагам, что именно нужно сделать.

Понимание механизма структуры подчиненности в БСП

В типовых решениях, построенных на базе Библиотеки стандартных подсистем (БСП), дерево связей не строится автоматически только по факту создания одного документа из другого. Этот механизм опирается на три «столпа»: наличие ссылки в данных, описание типа в метаданных и регистрацию в специальном критерии отбора. Проанализируем ситуацию: если мы создали документ ЗаказКлиента на основании Событие, то в ЗаказКлиента обязательно должна физически храниться ссылка на Событие в одном из реквизитов. Если реквизит пуст или не настроен критерий поиска, система не «увидит» связь.

Шаг 1: Подготовка реквизитов документа-приемника

Первым делом проанализируем структуру документа-приемника (в нашем примере это ЗаказКлиента). Чтобы связь отобразилась, в этом документе должен быть реквизит, который будет хранить ссылку на документ-основание (Событие).

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

Шаг 2: Программное заполнение связи

Просто создать документ недостаточно — нужно, чтобы при создании ссылка на основание была записана в базу данных. Для этого разберем работу программного модуля документа-приемника. Нам необходимо прописать логику в процедуре ОбработкаЗаполнения.

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


Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    
    // Проверяем, что заполнение идет на основании нашего документа
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Событие") Тогда
        
        // Заполняем основной реквизит связи
        ЭтотОбъект.ДокументОснование = ДанныеЗаполнения;
        
        // Здесь также можно заполнить другие реквизиты: Контрагент, Организация и т.д.
        ЭтотОбъект.Партнер = ДанныеЗаполнения.Партнер;
        ЭтотОбъект.Организация = ДанныеЗаполнения.Организация;
        
    КонецЕсли;
    
КонецПроцедуры

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

Шаг 3: Настройка критерия отбора «СвязанныеДокументы»

Выясним причину, по которой документ может не отображаться, даже если реквизиты заполнены. В 1С за вывод иерархии документов отвечает объект метаданных КритерийОтбора. В конфигурациях БСП он обычно называется СвязанныеДокументы.

  1. Перейдем в ветку метаданных: Общие -> Критерии отбора -> СвязанныеДокументы.
  2. Перейдем на закладку «Данные».
  3. В списке слева найдем документ ЗаказКлиента.
  4. В списке справа (состав критерия) необходимо отметить галочкой тот самый реквизит, в который мы записываем основание (например, ДокументОснование).

Это действие говорит системе: «Чтобы найти все документы, связанные с Событием, ищи в таблице ЗаказКлиента значения в колонке ДокументОснование, равные ссылке на это Событие».

Шаг 4: Работа с определяемыми типами

В современных архитектурах 1С механизмы БСП используют Определяемые типы для унификации работы с документами. Нам нужно проверить два основных типа:

  1. ОснованиеСвязанныхДокументов — в этот тип должен быть включен ваш новый документ Событие. Это позволит системе понимать, что данный документ вообще может выступать «корнем» или узлом в дереве связей.
  2. ОбъектСвязанныхДокументов — сюда также следует добавить ссылку на ваш документ, чтобы для него была доступна сама команда открытия структуры подчиненности.

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

Шаг 5: Добавление команды на форму документа

Теперь, когда данные связаны и настроены в метаданных, нам нужно дать пользователю возможность открыть отчет «Структура подчиненности» прямо из формы документа Событие. Рассмотрим, как это сделать.

Обычно в типовых конфигурациях для этого используется общая команда СтруктураПодчиненности (или СвязанныеДокументы в новых версиях). Вам нужно:

  1. Открыть форму документа Событие.
  2. Перейти на закладку «Командный интерфейс».
  3. В разделе «Перейти» найти команду вывода структуры подчиненности и установить для нее видимость.

Шаг 6: Обновление вспомогательных данных

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

/C ЗапуститьОбновлениеИнформационнойБазы

Это инициализирует процедуры обновления БСП, которые зарегистрируют новые команды и связи в системных таблицах.

Резюме

Подводя итоги, кратко закрепим алгоритм действий: Создаем реквизит для хранения ссылки -> Заполняем его в коде ОбработкаЗаполнения -> Включаем реквизит в состав критерия отбора СвязанныеДокументы -> Добавляем типы в определяемые типы БСП -> Выводим команду на форму.

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

← На главную