Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

"ПолучитьФорму" внешней обработки

"ПолучитьФорму" внешней обработки
Я
   Zhuravlik
 
11.09.20 - 17:32
Всем привет. С огромным удивлением обнаружил, что для внешней обработки, инициализированной через метод "Создать" (не "Подключить") этот метод возвращает неопределено. Вот такой код:

&НаСервере
Функция ПодключитьОбработку(Адрес)
Рез = ВнешниеОбработки.Создать(Адрес);
Возврат Рез.Метаданные().Имя;
КонецФункции

&НаКлиенте
Процедура ВызватьМетодФормы()
Имя = ПодключитьОбработку("D:\МояОбработка.epf");
ФормаНастроек = ПолучитьФорму("ВнешняяОбработка." + Имя + "Форма.ФормаНастроек"); // = Неопределено O_o
//...

КонецПроцедуры

Причем, метод "ОткрытьФорму" отрабатывает нормально. Суть этой задачи - по включенной галке отлаживаться через подключение внешних обработок, вместо внутренних. И все работает, кроме "ПолучитьФорму".
Подумалось, может меня глючит... Или, может кто знает о такой ошибке платформы, и кинется ссылкой на партнерку? Я там что-то не нашел..
   Zhuravlik
 
1 - 11.09.20 - 17:34
+ 1С:Предприятие 8.3 (8.3.14.2095), серверная база
   RomanYS
 
2 - 11.09.20 - 17:41
(0) А что мешает подключить?
   RomanYS
 
3 - 11.09.20 - 17:44
(0) Это не ошибка платформы, а задокументированное поведение.

СП:
Для внешних отчетов и обработок имя формы задается следующим образом:
ВнешнийОтчет.<имя отчета>.Форма.<имя формы>;
ВнешнийОтчет.<имя отчета>.<имя стандартной формы>;
ВнешняяОбработка.<имя обработки>.Форма.<имя формы>;
ВнешняяОбработка.<имя обработки>.<имя стандартной формы>.
При этом внешний отчет или обработка должны быть предварительно зарегистрированы в системе. Для регистрации отчета следует использовать метод Подключить. Для регистрации обработки следует использовать метод Подключить. <Имя отчета> и <имя обработки> - это имена, под которыми зарегистрированы внешний отчет или обработка.
   Ёпрст
 
4 - 11.09.20 - 17:44
забавный код..
и что там, имя то какое тебе возвращает ?
   RomanYS
 
5 - 11.09.20 - 17:46
(4) Имя из метаданных обработки, здесь вроде ничего удивительного
   Zhuravlik
 
6 - 11.09.20 - 17:50
(2) это нужно, для того чтобы в отладчике тормозится в методе этой обработки. Если "Подключить", этого соотв. не произойдет, т.к. подключение происходит через адрес вх.
   Zhuravlik
 
7 - 11.09.20 - 17:51
(3) да, действительно.. Спасибо. Тогда думаю, закрыта тема. Очень странная реализация - открыть форму при таком подходе можно, а получить нельзя. "Было-бы смешно, если б не было так грустно".
   Ёпрст
 
8 - 11.09.20 - 17:52
(5) оно же одинаковым будет для разных файлов
   RomanYS
 
9 - 11.09.20 - 18:01
(7) То что открыть форму можно - скорее всего как раз баг. В (3) вырезка из описания как раз ОткрытьФорму, в ПолучитьФорму они подробности опустили. Может как раз поэтому предложение "Для регистрации обработки следует использовать метод Подключить." задвоено :)).

(8) может быть. У ТС вероятно имена уникальные или он об этом не задумывается.

Даже чисто теоретически: откуда программа может знать где лежит обработка, форму которой хотят открыть?
   Zhuravlik
 
10 - 11.09.20 - 18:08
(8)(9) Имена уникальные. А зачем создавать две внешние обработки с одинаковым именем?
(9) Добавляем константу "КаталогОтладки", и для обращения ко всем обработкам делаем метод-обертку: если в каталоге отладки находится epf с именем файла = имени обработки, использовать его. Таким образом без перезапуска конфы легко и просто отлаживается любая обработка, затем заменяется из внешней. При работе из едт например, с проектом внешних обработок - очень удобно.
   Zhuravlik
 
11 - 11.09.20 - 18:11
(9) да, чудеса...
   RomanYS
 
12 - 11.09.20 - 18:21
(10) ну с учетом (6) "легко и просто отлаживается любая обработка" отменяется))
   Zhuravlik
 
13 - 11.09.20 - 18:28
(12) не, не отменяется. ПолучитьФорму - это частный случай, порожденный отсутствием нормальной клиент-серверной реализации у внешних обработок. Хотел распределить кодовую базу. Но как правило используется отладка объекта (модуль + реквизиты), и она прекрасно работает.
Вот замечание про "ОткрытьФорму" - это неприятный момент, но не страшный. Если вдруг когда-то эту багофичу поправят, можно использовать метод получить форму самого объекта внешней обработки, только при этом придется отлаживаться в толстом УФ клиенте, а финишную проверку выполнять в тонком.
   RomanYS
 
14 - 11.09.20 - 18:35
(13) ты в шаге от разработки клюшечного #ЗагрузитьИзФайла :)
В современных типовых всё чаще основной функционал обработок пишется в модуль менеджера. Во внешних его нет, ещё один костыль придумаешь?
   Zhuravlik
 
15 - 11.09.20 - 18:48
(14) нет, здесь ничего изобретать не стану. Если есть текст модуля менеджера, придется отлаживать как есть. Но с типовыми практически не работаю, отлаживаю то что сам и писал. А сам в менеджере обработок не использую, имхо это зло. Вообще внешние обработки это какие-то сплошные слезы. Если речь идет о чем-то более сложном чем "открыть \ нажать кнопку \ закрыть", то выходит так, что это неэффективная модель, каковой приходится пользоваться за неимением ничего другого.
Я б рад был, если разработчики платформы озаботились вопросом упрощения отладки. Если Orefkov когда-то смог ТурбоМД написать, неужели так сложно придумать нормальный способ компиляции, без постоянного перезапуска конфы? Одно это может отожрать до 30% времени, которое лучше посвятить разработке.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.