Как найти вызов кнопки «Оформить внутреннюю продажу» на форме документа в УТ 11

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

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

Почему стандартный поиск не дает результатов

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

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

Шаг 1. Идентификация типа команды

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

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

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

Шаг 2. Получение исходного кода обработки

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

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

Теперь мы можем изучить структуру обработки. Основная логика в таких случаях обычно сосредоточена в Модуле объекта. Нам нужно найти экспортную процедуру ВыполнитьКоманду. Именно она вызывается платформой при нажатии кнопки на форме документа.

Пример типовой структуры модуля такой обработки:


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

Шаг 3. Использование отладчика для поиска точки входа

Если визуальный поиск в справочнике не помог, воспользуемся инструментами отладки. Рассмотрим, как проследить путь выполнения команды при нажатии на кнопку:

  1. Включите в параметрах конфигуратора «Замер производительности».
  2. Перейдите в режим «Предприятие» и нажмите на искомую кнопку.
  3. Вернитесь в Конфигуратор и остановите замер.

В списке выполненных функций мы увидим обращения к общему модулю ДополнительныеОтчетыИОбработки или УправлениеДополнительнымиОтчетамиИОбработками. Проанализируем стек вызовов. Если выполнение уходит во «Внешнюю обработку», значит, мы на верном пути.

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


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

Шаг 4. Анализ функционала Intercompany (Внутренние продажи)

В контексте «Управления торговлей 11.4», кнопка «Оформить внутреннюю продажу» чаще всего связана с механизмом обеспечения потребностей между организациями. Давайте выясним, что именно она делает программно. Как правило, алгоритм следующий:

  1. Анализируется текущий документ «Приобретение товаров и услуг».
  2. Определяется организация-получатель и подбирается организация-поставщик (согласно настройкам передачи товаров).
  3. На основании данных о товарах и ценах создается документ «Реализация товаров и услуг» от лица одной компании и, при необходимости, встречное «Приобретение» для другой.

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

Шаг 5. Проверка прав доступа и условий видимости

Иногда возникает обратная задача: кнопка есть в справочнике, но она не видна на форме. Проанализируем условия её появления:

Таким образом, мы выяснили, что поиск «пропавших» кнопок в современных конфигурациях 1С требует понимания архитектуры БСП. Использование внешних обработок для расширения функционала форм — это стандарт индустрии, позволяющий сохранять типовую конфигурацию на поддержке, при этом добавляя специфические бизнес-процессы, такие как оформление внутренних перепродаж.

← На главную