gifts2017

Как открыть форму внешней обработки из другой формы внешней обработки. 8.2. Управляемый режим.

Опубликовал Кирилл Логинов (kirlog) в раздел Программирование - Универсальные функции

Обсуждений на эту тему достаточно много, но окончательного ответа на вопрос, как открыть одну форму внешней обработки из другой в управляемом режиме, я не нашел.
Решил разместить свое решение.

Иногда надо сделать внешнюю обработку с несколькими формами. Но как открыть одну форму внешней обработки из другой, не вставляя эту обработку в конфигурацию? Ведь в команде "ПолучитьФорму" мы должны прописать полный путь к форме обработки. А для нашей внешней обработки этот путь система не знает.

Предлагаю такой путь решения:

1. При открытии основной формы внешней обработки определяем путь к ее файлу. Это штатными средствами не сделать. Поэтому, используем WScript.Shell.

2. Помещаем файл внешней обработки во временное хранилище. Получаем адрес во временном хранилище.

3. По этому адресу регистрируем обработку в системе с помощью команды  ВнешниеОбработки.Подключить . Эта команда возвращает нам имя, под которым обработка зарегистрировалась в системе.

4. Все. Теперь мы знаем, что передавать в команду ПолучитьФорму в качестве пути к форме:

   "ВнешняяОбработка."+ИмяПодКоторымЗарегистрированаОбработка+".Форма."+ИмяФормыДляОткрытия

Такой механизм должен работать в управляемом режиме для тонкого, толстого и web клиентов.

Пример обработки с двумя формами присоединен к публикации

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Файл примера обработки с двумя формами
.epf 7,67Kb
23.05.12
76
.epf 7,67Kb 76 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Yaroslav (maddy) 23.05.12 17:12
На ИТС есть статья "Как программно открыть внешнюю обработку?". Там даже подробнее все описано.
2. Кирилл Логинов (kirlog) 23.05.12 17:42
Статью читал. Там написано как программно открыть внешнюю обработку. Но не написано, как из самой внешней обработки открыть вторую форму этой же внешней обработки.

В статье сказано, что для того, чтобы программно открыть внешнюю обработку, нужно знать полное имя ее файла.
В нашей ситуации мы его не знаем. Пользователь может положить внешнюю обработку в любой каталог.

Многих ставит в тупик тот факт, что не существует штатных средств узнать полное имя файла обработки из нее самой.
Я демонстрирую, как это можно сделать с помощью WScript.Shell
kostyaomsk; truba; SirYozha; +3 Ответить
3. naus (Danil.Potapov) 23.05.12 17:55
ВнешняяОбработкаОбъект.ИспользуемоеИмяФайла
4. Сергей Ожерельев (Поручик) 23.05.12 18:05
(3) Ответ неверный. Это для обычной формы.
5. naus (Danil.Potapov) 23.05.12 18:11
(4) Поручик,
ответ верный, используй &НаСервере и РеквизитФормыВЗначение()
truba; SirYozha; +2 Ответить
6. Кирилл Логинов (kirlog) 23.05.12 18:27
Точно!

&НаСервере
....
РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла
....

Можно и без WScript обойтись.

Меня смутило, что синтакс-помощнике написано:

ВнешняяОбработка (ExternalDataProcessor)
ИспользуемоеИмяФайла (UsedFileName)
Использование:Только чтение.
Описание: Тип: Строка. Содержит полное имя файла внешней обработки.
Доступность: Толстый клиент.

Т.е., что на толстом клиенте доступно только.
7. naus (Danil.Potapov) 23.05.12 18:49
(6) kirlog, в справке к 8.2.15.310 указано, что сервер и толстый клиент
8. Кирилл Логинов (kirlog) 23.05.12 19:02
Да. Вижу. У меня подревнее платформа.
Спасибо.
9. Сергей Лещин (Slon1c) 06.12.12 17:23
Не знаю... вот такая строка срабатывает без таких извращений.

ОткрытьФорму("ВнешняяОбработка.ЗаполнениеОС.Форма.ФормаОсновныеСредства", Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения), ВладелецФормы, КлючИзПараметров);

где ФормаОсновныеСредства одна из форм внешней обработки заполнение ОС.
10. Алексей Маташин (matashin) 16.01.15 11:40
(9) Это если обработка в конфе.
11. Кирилл Логинов (kirlog) 16.01.15 13:21
(9) Slon1c, для этого сначала обработка должна быть подключена к конфигурации через ВнешниеОбработки.Подключить
Это и демонстрируется в моем примере
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа