Поиск нужной формы
Пожелания заказчиков по «улучшению» типовых решений чаще всего касаются обеспечения дополнительного сервиса в формах тех или иных объектов. Но что бы ту или иную форму «улучшить» - ее, прежде всего, надо найти в конфигурации. И, как ни странно, иногда у начинающих прикладных программистов это получается не сразу.
Живой пример одного из проектов: Заказчик для программы «1С:Управление торговлей» попросил «проредить» по определенным правилам выпадающий список менеджеров на форме «журнала документов Реализация товаров и услуг».
Поскольку работа не сложная – ее поручили одному из начинающих, но подающему большие надежды программистов. Каково же было удивление куратора, что и по истечении нескольких часов рапорта о выполнении - все не поступало. К программисту подошли, стали разбираться. Оказалось, бедолага не смог даже начать, потому что программа вообще не реагировала на любые попытки внесения изменений в форму списка документа.
Давайте посмотрим, в чем там дело:
Итак, первое правило поиска нужной формы: убедитесь, что понимаете, о форме какого объекта идет речь в задаче.
Следующий прием, который нужно иметь в своем арсенале, – это поиск вызова нужной формы из родительской формы.
Посмотрим в следующих роликах, с чем можно столкнуться:
Итак, следующее правило: если в родительской форме не получается выйти на обработчик вызова искомой формы сразу (через контекстное меню), посмотрите команды на закладке «Командный интерфейс».
Следующий уровень сложности: это поиск формы, открываемой из неизвестной родительской формы.
Допустим, мы не имеем никакого представления об устройстве подсистемы «Печать». Но нам нужно разобраться – что же за форма открывается в подсистеме «Администрирование», разделе «Печатные формы, отчеты и обработки» по гиперссылке «Макеты печатных форм»:
Итак, следующее правило: если неочевидна и родительская форма, используйте глобальный поиск. Но имейте в виду, что переход к искомой форме может быть реализован: программно, интерактивно или системно. Поэтому в окне глобального поиска надо выставлять три флажка: «Свойства», «Модули», «Элементы форм»:
Но кроме вышерассмотренных примеров, можно еще столкнуться и с обыкновенным волшебством, когда возникает иллюзия, что неизвестная форма открывается из-за неизвестного кода.
Пример: формы задач бизнес-процесса «Типовая продажа».
Вот так выглядит форма задачи «Квалифицировать клиента по сделке»:
Вот так – форма задачи «Отразить первичный контакт»
Формы вроде похожи, но есть существенное отличие в гиперссылке на правом фланге. Для каждого вида задач – она своя. У кого «Клиент», у кого «Взаимодействия», да еще с загадочным нулем в скобках.
Допустим, мы хотим разобраться, это одна форма, просто разные гиперссылки, или все же – разные формы?
А для себя выводим следующее правило: Если упорно открывается не основная форма объекта, но при этом в родительской форме обработчик выбора не задействован – ищите в модуле менеджера обработчик «ОбработкаПолученияФормы»
А теперь поговорим о том, с чем возможно столкнетесь в будущем.
Дело в том, что большинство предопределенных обработчиков событий объектов типа «ПриЗаписи», «ПриУстановкеНовогоНомера» и т.д. могутперехватываться «Подписками на события». Подвох в том, что подписки на события располагаются в другой ветке объектов конфигурации, сами объекты(документы, справочники и другие) никак не показывают, что некоторые их события перехватываются подписками, и пока ее (подписку) не найдешь – очень трудно понять, почему в жизни объекта происходят какие-то вещи, не описанные в модулях самого объекта.
Ну что, уже поняли, к чему я это все?
Да-да, подписки на события могут касаться и только что продемонстрированного обработчика «ОработкаПолученияФормы».
Ну и последнее для нашей статьи правило: Если после всех вышеописанных приемов все-равно не понятно, какая именно форма открылась – «Ищите женщину подписку на события».
Как видите, разработчиками программ на базе платформы «1С:Предприятие» некоторые формы весьма талантливо прячутся от начинающих прикладных программистов. И дело тут не в заговоре против неофитов. Что Вы! Какой заговор?
Просто платформа имеет огромное количество возможностей для вызова форм в той или иной ситуации, и разработчики применяют тот способ, который им кажется наиболее уместным при реализации той или иной возникающей задачи.
Да-да, при возникающей! Большинство неожиданных способов вызова форм появляется при так называемом «ситуационном» программировании. Это когда типовое решение уже создано, отлажено, запущено в тираж, и вдруг выясняется, что обстоятельства применения изменились, и теперь программа должна еще, кроме прочего, делать то-то и то-то в такой-то ситуации.
А заговора никакого нет! Ведь мы же одна семья, семья прикладных программистов и разработчиков. А сейчас для семейного фото – посмотрите, пожалуйста, сюда:
Не смогли найти подходящий курс?
Обращайтесь за бесплатной консультацией