При работе с типовыми конфигурациями на базе 1С:Предприятие 8.3, такими как «Управление торговлей 11», разработчики часто сталкиваются с ситуацией, когда на форме документа в режиме «Предприятие» отображается кнопка, которую невозможно найти в Конфигураторе. Одним из ярких примеров является кнопка «Оформить внутреннюю продажу» в документе «Приобретение товаров и услуг». В этой статье мы подробно разберем, почему так происходит, где искать исходный код такой кнопки и как проанализировать её логику.
Когда мы пытаемся найти кнопку через «Глобальный поиск» по названию или анализируем состав команд в модуле формы, мы можем не обнаружить никаких совпадений. Давайте проанализируем причины этого явления:
"Оформить" + " " + "внутреннюю продажу"), что делает поиск по точной фразе бесполезным.ХранилищеЗначения).Прежде всего, нам необходимо визуально определить природу кнопки. Рассмотрим характерные признаки:
Если рядом с названием кнопки имеется специфическая иконка (например, синяя загнутая стрелка или значок шестеренки), это явный признак того, что команда принадлежит к дополнительным обработкам. В «Управлении торговлей 11» (УТ 11.4) такие кнопки часто добавляются для автоматизации схемы Intercompany (перепродажи между собственными организациями).
Для подтверждения этой гипотезы нам следует перейти в раздел НСИ и администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки. В открывшемся списке нужно найти элементы, назначение которых соответствует документу «Приобретение товаров и услуг».
После того как мы нашли нужную запись в справочнике «Дополнительные отчеты и обработки», нам необходимо извлечь код для анализа. Разберем этот процесс по шагам:
.epf.Теперь мы можем изучить структуру обработки. Основная логика в таких случаях обычно сосредоточена в Модуле объекта. Нам нужно найти экспортную процедуру ВыполнитьКоманду. Именно она вызывается платформой при нажатии кнопки на форме документа.
Пример типовой структуры модуля такой обработки:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
Если ИдентификаторКоманды = "ОформитьВнутреннююПродажу" Тогда
// Здесь описывается логика создания документов
Для Каждого СсылкаИзСписка Из ОбъектыНазначения Цикл
СоздатьДокументыПродажиНаОсновании(СсылкаИзСписка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Если визуальный поиск в справочнике не помог, воспользуемся инструментами отладки. Рассмотрим, как проследить путь выполнения команды при нажатии на кнопку:
В списке выполненных функций мы увидим обращения к общему модулю ДополнительныеОтчетыИОбработки или УправлениеДополнительнымиОтчетамиИОбработками. Проанализируем стек вызовов. Если выполнение уходит во «Внешнюю обработку», значит, мы на верном пути.
Также полезно поставить точку останова в общем модуле ДополнительныеОтчетыИОбработки в процедуре, отвечающей за запуск серверных команд. Рассмотрим примерный участок кода, где можно перехватить выполнение:
// В общем модуле ищем код запуска
Процедура ВыполнитьКомандуИзФормы(ПараметрыКоманды, Форма) Экспорт
// Точка останова здесь позволит увидеть ИдентификаторКоманды
// и Ссылку на саму обработку в справочнике
ОбъектОбработки = ПолучитьОбъектВнешнейОбработки(ПараметрыКоманды.Ссылка);
ОбъектОбработки.ВыполнитьКоманду(ПараметрыКоманды.Идентификатор, ПараметрыКоманды.ОбъектыНазначения);
КонецПроцедуры
В контексте «Управления торговлей 11.4», кнопка «Оформить внутреннюю продажу» чаще всего связана с механизмом обеспечения потребностей между организациями. Давайте выясним, что именно она делает программно. Как правило, алгоритм следующий:
Если вы хотите изменить поведение этой кнопки, вам не нужно менять основную конфигурацию. Достаточно внести правки в выгруженный .epf файл и загрузить его обратно в справочник «Дополнительные отчеты и обработки» через кнопку «Обновить из файла».
Иногда возникает обратная задача: кнопка есть в справочнике, но она не видна на форме. Проанализируем условия её появления:
Таким образом, мы выяснили, что поиск «пропавших» кнопок в современных конфигурациях 1С требует понимания архитектуры БСП. Использование внешних обработок для расширения функционала форм — это стандарт индустрии, позволяющий сохранять типовую конфигурацию на поддержке, при этом добавляя специфические бизнес-процессы, такие как оформление внутренних перепродаж.