Предположим, у Вас имеется внешняя обработка с двумя формами. Одна из форм является основной, а вторую вы должны открывать по нажатию кнопки в основной форме.
Обработка внешняя, потому что вы, как и я, не любите перезапускать каждый раз всю 1с, чтобы проверить очередной кусок кода. Тем более управляемые формы в этом плане очень заторможенно стартуют даже на хороших серверах. Однако в последствии вы хотите закинуть эту обработку в конфигурацию и использовать уже там.
Нам понадобится три функции.
Функция в модуле, которая определяет, это внешняя обработки, или нет. И функция на клиенте, которая в зависимости от результата открывает форму. Третья — функция на сервере, которая вызовет функцию из модуля. Боле элегантного решения пока что не увидел. Поэтому фиксирую сие «изобретение» для себя и для вас, дорогие читатели.
Выглядит это так. Сначала сделаем функцию в модуле:
1 2 3 4 5 |
Функция ЭтоВнешняяОбработкаОтчет() Экспорт ПолноеИмяМетаданных = ЭтотОбъект.Метаданные().ПолноеИмя(); Возврат Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных) = Неопределено КонецФункции |
Теперь пишем в модуле формы две функции. Первая «&НаКлиенте» — это событие от кнопки, вторая «&НаСервере» — вспомогательная, чтобы вызвать функцию из модуля.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
&НаКлиенте Процедура ИсторияМониторингов(Команда) Если ЭтоВнешняяОбработкаОтчет() тогда ОткрытьФорму("ВнешняяОбработка.УправлениеПромоакциями.Форма.ИсторияМониторингов",новый структура("Промоакция",объект.Промоакция)); иначе ОткрытьФорму("Обработка.УправлениеПромоакциями.Форма.ИсторияМониторингов",новый структура("Промоакция",объект.Промоакция)); КонецЕсли; КонецПроцедуры &НаСервере функция ЭтоВнешняяОбработкаОтчет() обЗн = РеквизитФормыВЗначение("Объект"); возврат обЗн.ЭтоВнешняяОбработкаОтчет(); КонецФункции |