Имя: Пароль:
1C
1С v8
ПолучитьФорму() внешней обработки в управляемом толстом клиенте
0 TormozIT
 
гуру
17.03.13
15:44
Оригинальная тема http://partners.v8.1c.ru/forum/thread.jsp?id=1128514#1128514

Попробовал получить неосновную управляемую форму из внешней обработки методами ВнешняяОбработкаОбъект.ПолучитьФорму и ВнешниеОбработки.ПолучитьФорму. Ничего не вышло - вернулось Неопределено.

Если же попробовать получить основную управляемую форму внешней обработки методом ВнешниеОбработки.ПолучитьФорму, то приложение выполняет недопустимую операцию (проверено на 8.2.16-8.2.18).

Прилагаю обновленный демонстрационный пример в виде выгрузки базы http://rghost.ru/44566872. Он крайне лаконичный - все происходит при начале работы толстого управляемого клиента. Выполняется код

   ИмяФАйла = ПолучитьИмяВременногоФайла();
   ПолучитьОбщийМакет("Макет").Записать(ИмяФайла);
   ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФАйла);
   ФормаУправляемая = ВнешняяОбработка.ПолучитьФорму("ФормаУправляемая");
   Сообщить(ТипЗнч(ФормаУправляемая));
   Попытка
       ФормаУправляемая = ВнешниеОбработки.ПолучитьФорму(ВнешняяОбработка.ИспользуемоеИмяФайла, "ФормаУправляемая");
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   Предупреждение(1);
   ФормаУправляемая = ВнешниеОбработки.ПолучитьФорму(ВнешняяОбработка.ИспользуемоеИмяФайла);

Сначала в окно сообщений выводится

Не определено
{ОбщийМодуль.ОбщийМодуль1.Модуль(17)}: Ошибка при вызове метода контекста (ПолучитьФорму): Недопустимое значение параметра (параметр номер '2')

Затем нажав на ОК в окне предупрежедения. Приложение выполняет недопустимую операцию с описанием

Problem signature:
 Problem Event Name:    APPCRASH
 Application Name:    1CV8.exe
 Application Version:    8.2.16.352
 Application Timestamp:    4ffcb73d
 Fault Module Name:    basic.dll
 Fault Module Version:    8.2.16.352
 Fault Module Timestamp:    4ffcaf4b
 Exception Code:    c0000005
 Exception Offset:    0022d6b8
 OS Version:    6.1.7601.2.1.0.256.1
 Locale ID:    1049
 Additional Information 1:    0a9e
 Additional Information 2:    0a9e372d3b4ad19135b953a78882e789
 Additional Information 3:    0a9e
 Additional Information 4:    0a9e372d3b4ad19135b953a78882e789

Уже год не могу понять, как же программно получить управляемую форму из внешней обработки. Теперь стало понятно, что фактически сейчас это невозможно. Однако интерактивно это возможно, т.е. через меню Файл пользователь может открыть файл внешней обработки с управляемой формой, и эта форма откроется. Следовательно, технических ограничений нет, но есть либо очень странное проектное решение, либо неполная реализация проектного решения.

Если вам известен какой либо другой способ получить программно управляемую форму из внешней обработки, особенно неосновную, очень прошу сообщить мне.

Долгая переписка с [email protected] так и не принесла решения проблемы. Они твердят, что ошибки нет (исключая недопустимую операцию).
1 sanja26
 
17.03.13
16:21
на инфосиарте у поручика выложено решение. через имя формы
2 TormozIT
 
гуру
17.03.13
16:43
(1) Может подскажешь еще где оно там выложено, ведь инфостарт большой.
3 TormozIT
 
гуру
17.03.13
16:49
4 TormozIT
 
гуру
17.03.13
17:01
Как я понимаю способ через полное имя формы несколько кривой, т.к. может быть открыто много разных внешних обработок с одинаковым именем. У какой из них будет получаться форма думаю никто не скажет.
5 GANR
 
17.03.13
17:45
(4) кроме полного имени, у форм есть ещё и идентификатор
6 GANR
 
17.03.13
17:47
ЭтаФорма.УникальныйИдентификатор(), подробнее - справка
7 GANR
 
17.03.13
17:47
Даже так ЭтаФорма.УникальныйИдентификатор - это не метод, а свойство
8 acsent
 
17.03.13
18:01
а через ПолучитьФорму(ВнешниеОбработки.ИмяОбработки.ИмяФормы)
9 sanja26
 
17.03.13
20:25
(8) управляемые формы тебе еще не встречались...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn