Имя: Пароль:
IT
Админ
Внутренние окна 1С показывать в другом приложении
0 aktor
 
13.06.13
14:43
Всем привет!
Есть 2 базы 1С v8.2. Одна только толстый клиент.
Хочу открыть внутренние окна 1с (формы списка, формы элементов и т.д.) в другой базе или приложении, без основного окна 1с.

Знаю один способ: Подключаем базу по com-соединению и пишем код "...ПолучитьФорму().Открыть()", но у него есть 2 недостатка:
1. Сом-соединение часто отваливается, потом долго переподключается.
2. Открытое окно формы часто "пропадает" и только нажав "Shift + Tab" можно его найти.

Есть другой способ? В каком направлении смотреть?
1 ДенисЧ
 
13.06.13
14:43
Смотри направо.
2 ДенисЧ
 
13.06.13
14:43
Там стенка должна быть
3 zladenuw
 
13.06.13
14:48
(0) что бы не отваливался. надо его во временно хранилище прятать и дергать раз 100 секунд. где то было статья по этому поводу. а вот то что пропадает окно. есть глюк. как победить хз
4 aktor
 
13.06.13
14:49
Направо это буква "Я" или softpoint?
5 ДенисЧ
 
13.06.13
15:00
(4) голову поверни вправо. В реале.
6 zladenuw
 
13.06.13
15:01
(5) ггг. он не понял тролинга :)
7 c00Lo
 
13.06.13
15:09
Смотри как документооборот в упп интегрируется
8 aktor
 
13.06.13
15:21
(7) Смотрел, в основе интеграции лежит Web-сервис, через него удобно делать обмен и команды (ДО 8 - УТ 11 сделано через задачи пользователя и запуск БП в ДО по кнопке из УТ), но просмотр списков и/или форм через Web-сервисы мне сложно представить как... Подскажешь?

Есть, конечно, ещё более очевидный способ: объединить конфы и открывать все окна в одной базе...
9 palpetrovich
 
13.06.13
15:38
(8) а создать нужную форму в базеПриемнике и заполнять данными из БазИсточника не?
10 aktor
 
13.06.13
17:07
(9) можно, но чем принципиально это будет отличатся от объединения? Трудозатраты на создание форм плюс создание обменов будет больше, чем на объединение конфигураций, а результат почти одинаковый...
11 Dorosh
 
13.06.13
17:27
1. Объект Соединение запихиваешь в кэш. Перед любым вызовом другой базы в попытке проверяешь валидность объекта. Если выпал в исключение - переподключаешься.
2. Перед открытием формы вешаешь обработчик ожидания, в нем вызов WSH скрипта, в нем ищешь форму по заголовку окна и поднимаешь наверх.
12 aktor
 
13.06.13
21:25
(11) Спасибо, возможно это оживит ком соединение...
Есть идеи как не через ком сделать?
13 NcSteel
 
13.06.13
21:27
(0) Веб клиент .
14 Torquader
 
13.06.13
22:47
Окна "проваливаются" из-за того, что остаётся активным вызывающее окно.
Происходит так:
1) Пользователь нажимает кнопку мышью или в активном окне.
2) Система начитает выполнение алгоритма, вызывает другой поток, который создаёт окно на экране.
3) Приходит событие отпускания клавиши (или мыши или клавиатуры), и оно делает активным окно, которые выполняло вызов.
4) Появляется окно из другого потока (у него своя очередь), но оно уже не активно, так как в (3) фокус перехватили.

Сей момент происходит не только с 1С, но с любой другой программой, создающей окно, не привязанное к родительскому в том же процессе (том же или другом потоке).
15 Dorosh
 
14.06.13
09:21
(12) Вариантов всего 2 - COM или OLE. OLE тяжелей на подъем, но не имеет проблем ком-коннектора с 32/64 разрядностью.
16 aktor
 
14.06.13
13:01
(13) Веб клиент только для управляемых форм. Мы можем получить ссылку на внутренне окно?
(15) Я понимаю что штатными средствами 1с варианта всего 2. Но есть же ещё "не штатные" :-)
Программист всегда исправляет последнюю ошибку.