|
"ПолучитьФорму" внешней обработки | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
11.09.20
✎
17:32
|
Всем привет. С огромным удивлением обнаружил, что для внешней обработки, инициализированной через метод "Создать" (не "Подключить") этот метод возвращает неопределено. Вот такой код:
&НаСервере Функция ПодключитьОбработку(Адрес) Рез = ВнешниеОбработки.Создать(Адрес); Возврат Рез.Метаданные().Имя; КонецФункции &НаКлиенте Процедура ВызватьМетодФормы() Имя = ПодключитьОбработку("D:\МояОбработка.epf"); ФормаНастроек = ПолучитьФорму("ВнешняяОбработка." + Имя + "Форма.ФормаНастроек"); // = Неопределено O_o //... КонецПроцедуры Причем, метод "ОткрытьФорму" отрабатывает нормально. Суть этой задачи - по включенной галке отлаживаться через подключение внешних обработок, вместо внутренних. И все работает, кроме "ПолучитьФорму". Подумалось, может меня глючит... Или, может кто знает о такой ошибке платформы, и кинется ссылкой на партнерку? Я там что-то не нашел.. |
|||
1
Zhuravlik
11.09.20
✎
17:34
|
+ 1С:Предприятие 8.3 (8.3.14.2095), серверная база
|
|||
2
RomanYS
11.09.20
✎
17:41
|
(0) А что мешает подключить?
|
|||
3
RomanYS
11.09.20
✎
17:44
|
(0) Это не ошибка платформы, а задокументированное поведение.
СП: Для внешних отчетов и обработок имя формы задается следующим образом: ВнешнийОтчет.<имя отчета>.Форма.<имя формы>; ВнешнийОтчет.<имя отчета>.<имя стандартной формы>; ВнешняяОбработка.<имя обработки>.Форма.<имя формы>; ВнешняяОбработка.<имя обработки>.<имя стандартной формы>. При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе. Для регистрации отчета следует использовать метод Подключить. Для регистрации обработки следует использовать метод Подключить. <Имя отчета> и <имя обработки> - это имена, под которыми зарегистрированы внешний отчет или обработка. |
|||
4
Ёпрст
11.09.20
✎
17:44
|
забавный код..
и что там, имя то какое тебе возвращает ? |
|||
5
RomanYS
11.09.20
✎
17:46
|
(4) Имя из метаданных обработки, здесь вроде ничего удивительного
|
|||
6
Zhuravlik
11.09.20
✎
17:50
|
(2) это нужно, для того чтобы в отладчике тормозится в методе этой обработки. Если "Подключить", этого соотв. не произойдет, т.к. подключение происходит через адрес вх.
|
|||
7
Zhuravlik
11.09.20
✎
17:51
|
(3) да, действительно.. Спасибо. Тогда думаю, закрыта тема. Очень странная реализация - открыть форму при таком подходе можно, а получить нельзя. "Было-бы смешно, если б не было так грустно".
|
|||
8
Ёпрст
11.09.20
✎
17:52
|
(5) оно же одинаковым будет для разных файлов
|
|||
9
RomanYS
11.09.20
✎
18:01
|
(7) То что открыть форму можно - скорее всего как раз баг. В (3) вырезка из описания как раз ОткрытьФорму, в ПолучитьФорму они подробности опустили. Может как раз поэтому предложение "Для регистрации обработки следует использовать метод Подключить." задвоено :)).
(8) может быть. У ТС вероятно имена уникальные или он об этом не задумывается. Даже чисто теоретически: откуда программа может знать где лежит обработка, форму которой хотят открыть? |
|||
10
Zhuravlik
11.09.20
✎
18:08
|
(8)(9) Имена уникальные. А зачем создавать две внешние обработки с одинаковым именем?
(9) Добавляем константу "КаталогОтладки", и для обращения ко всем обработкам делаем метод-обертку: если в каталоге отладки находится epf с именем файла = имени обработки, использовать его. Таким образом без перезапуска конфы легко и просто отлаживается любая обработка, затем заменяется из внешней. При работе из едт например, с проектом внешних обработок - очень удобно. |
|||
11
Zhuravlik
11.09.20
✎
18:11
|
(9) да, чудеса...
|
|||
12
RomanYS
11.09.20
✎
18:21
|
(10) ну с учетом (6) "легко и просто отлаживается любая обработка" отменяется))
|
|||
13
Zhuravlik
11.09.20
✎
18:28
|
(12) не, не отменяется. ПолучитьФорму - это частный случай, порожденный отсутствием нормальной клиент-серверной реализации у внешних обработок. Хотел распределить кодовую базу. Но как правило используется отладка объекта (модуль + реквизиты), и она прекрасно работает.
Вот замечание про "ОткрытьФорму" - это неприятный момент, но не страшный. Если вдруг когда-то эту багофичу поправят, можно использовать метод получить форму самого объекта внешней обработки, только при этом придется отлаживаться в толстом УФ клиенте, а финишную проверку выполнять в тонком. |
|||
14
RomanYS
11.09.20
✎
18:35
|
(13) ты в шаге от разработки клюшечного #ЗагрузитьИзФайла :)
В современных типовых всё чаще основной функционал обработок пишется в модуль менеджера. Во внешних его нет, ещё один костыль придумаешь? |
|||
15
Zhuravlik
11.09.20
✎
18:48
|
(14) нет, здесь ничего изобретать не стану. Если есть текст модуля менеджера, придется отлаживать как есть. Но с типовыми практически не работаю, отлаживаю то что сам и писал. А сам в менеджере обработок не использую, имхо это зло. Вообще внешние обработки это какие-то сплошные слезы. Если речь идет о чем-то более сложном чем "открыть \ нажать кнопку \ закрыть", то выходит так, что это неэффективная модель, каковой приходится пользоваться за неимением ничего другого.
Я б рад был, если разработчики платформы озаботились вопросом упрощения отладки. Если Orefkov когда-то смог ТурбоМД написать, неужели так сложно придумать нормальный способ компиляции, без постоянного перезапуска конфы? Одно это может отожрать до 30% времени, которое лучше посвятить разработке. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |