Как найти обработчик кнопки «Добавить» в дереве связей 1С:Документооборот

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

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

Метод 1: Использование замера производительности

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

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

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

Метод 2: Анализ событий элемента «ДеревоСвязей»

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

Откроем форму справочника ВнутренниеДокументы, найдем элемент ДеревоСвязей. В палитре свойств перейдем к списку событий. Нас интересуют следующие обработчики:

Если мы видим назначенный обработчик, например, ДеревоСвязейПередНачаломДобавления, перейдем в него (F12). Проанализируем код: обычно там вызывается экспортная процедура из общего модуля, отвечающего за связи.

Метод 3: Остановка отладки (Break on start)

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

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

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

Метод 4: Информация для технического специалиста

В современных версиях платформы 8.3 (особенно в интерфейсе «Такси») есть встроенный инструмент, который помогает быстро идентифицировать форму. Посмотрим, как им воспользоваться:

Нажмем на кнопку «Сервис и настройки» (шестеренка в верхнем углу), выберем «Функции для технического специалиста» (или «Информация для технического специалиста» в меню формы). Там будет указано полное имя открытой формы. Если нажатие кнопки «Добавить» сразу открывает новое окно, этот метод покажет нам имя этой вызываемой формы, что позволит найти её в дереве конфигурации и изучить её модуль.

Метод 5: Архитектурные особенности 1С:Документооборот

Проанализируем структуру подсистемы связей. В 1С:ДО функционал связей глубоко типизирован. Кнопка «Добавить» часто вызывает общую форму ВыборТипаСвязи. Чтобы убедиться в этом, выполним глобальный поиск (Ctrl+Shift+F) по строке «СвязиОбъектов».

Скорее всего, вы обнаружите вызовы в общих модулях:

В типовом решении поиск обработчика часто приводит к коду, похожему на этот:


Процедура ДеревоСвязейПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
    Отказ = Истина; // Отменяем стандартное добавление строки в дерево
    ПараметрыСвязи = Новый Структура;
    ПараметрыСвязи.Вставить("Источник", Объект.Ссылка);
    СвязиОбъектовКлиент.ДобавитьСвязь(ПараметрыСвязи);
КонецПроцедуры

Именно в процедуре ДобавитьСвязь общего модуля и скрыта основная логика открытия форм и проверки условий.

Метод 6: Использование расширений

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

Рекомендации по поиску

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

← На главную