![]() |
![]() |
![]() |
|
Проблема с формой, открываемой в com-соединении | ☑ | ||
---|---|---|---|---|
0
chihpyh
17.12.10
✎
17:19
|
Вопрос в следующем: база 1С 8.1 подключена к другой базе, тоже 8.1 но другая конфигурация по COM-соединению. В процессе работы в соединении вызывается некая форма принадлежащая ко второй базе. Вот код:
ФормаВыбора = V8.Обработки.ВыборНоменклатуры.ПолучитьФорму("Осно внаяФорма", ЭтаФорма, ЭтаФорма); ФормаВыбора.СтруктураИсходныхПараметров = СтруктураПараметровПодбора; СтрПарам=ФормаВыбора.ОткрытьМодально(); Все работает хорошо, все действия в обработке производятся, все данные обратно передаются. Проблема в том, что при первом вызове эта форма не становится активной, т.е. она открывается, на панели задач ее видно, но на передний план не выскакивает. Приходится переключаться, что не очень удобно. Но при последующих открытиях она открывается нормально. А вторая проблема в том, что при закрытии делается активным не то приложение, из которого вызывалась форма, а то, которое было активно перед ним. Т.е. фокус, что ли, пропадает у этого приложения? Есть какие-нибудь решения у такой проблемы? |
|||
1
IronDemon
17.12.10
✎
17:21
|
Эээ, формы в COM-соединении не существует.
|
|||
2
Mitriy
17.12.10
✎
17:22
|
(1) там апликейшн, по всей видимости...
|
|||
3
chihpyh
17.12.10
✎
17:30
|
Боюсь показаться невеждой, но я описал ситуацию как она есть. Может где-то с терминами накосячил...
Давайте попробую пояснить суть: мне из одной конфигурации нужно забраться в обработку другой конфигурации, ибо в ней прописана куча алгоритмов, которые мне очень лениво переносить в другую базу. Разные конфигурации, абсолютно разные. Так вот - подцепляюсь я к этой обработке, произвожу все необходимые действия и получаю их результат в исходное приложение. Здесь все отлично работает. Но то, что происходит с активностью вызываемой формы мне решительно не нравится. При первом вызове она не вылетает на передний фон, а после закрытия она деактивирует окно исходного приложения и в него опять приходится переключаться. А это совершенно не приемлемо в рамках поставленной задачи. |
|||
4
Mitriy
17.12.10
✎
17:37
|
(3) ну попытай Активизировать()... но тут все происходит на уровне ОС, поэтому фиг его знает... можно бубен купить...
|
|||
5
Индиго
17.12.10
✎
17:40
|
Зазубри как а б в...
Форма не юзается через ком. Это визуальное представление данных, к которым у тебя только програмный доступ. |
|||
6
luns
17.12.10
✎
17:43
|
(0) открывай модально.
|
|||
7
Индиго
17.12.10
✎
17:44
|
(6)Модально.Через СОМ.
Я б запасся попкорном и посмотрел на это :-) |
|||
8
luns
17.12.10
✎
17:46
|
(7) запарили, не цепляйтесь к словам - смотрите в суть. человек неверно выразился. он юзает application.
там действительно есть такие проблемы с окнами. |
|||
9
Индиго
17.12.10
✎
17:48
|
(8)>>Проблема с формой, открываемой в com-соединении
Это я один там вижу слово СОМ? |
|||
10
luns
17.12.10
✎
17:50
|
(9) это и есть пример того, что "человек неверно выразился" потому ка дальше там еще есть слова.
например такие: "т.е. она открывается, на панели задач ее видно" |
|||
11
Индиго
17.12.10
✎
17:51
|
(10)Ну хорошо, попкрн уже принес:-). Молчу и жду зрелищ:)
|
|||
12
Mitriy
17.12.10
✎
17:52
|
V81.Application
чего привязались? |
|||
13
Mitriy
17.12.10
✎
17:52
|
если в первый раз слышите, не делайте умный вид...
|
|||
14
Индиго
17.12.10
✎
17:53
|
(12)Да хоть как назови формы там не будет.
|
|||
15
Mitriy
17.12.10
✎
17:53
|
Для запуска системы 1С:Предприятие в качестве Automation-сервера из внешнего приложения, выполняется следующая последовательность действий:
создается COMОбъект с идентификатором V81.Application выполняется инициализация системы 1С:Предприятие методом Connect вызываются свойства и методы системы 1С:Предприятие как Automation-сервера |
|||
16
Mitriy
17.12.10
✎
17:53
|
(14) да неужели?
|
|||
17
chihpyh
17.12.10
✎
17:53
|
V8 = Новый COMObject("V81.Application");
Аппликейшн? Я ж говорю - в терминах мог и наврать: Так решаема эта проблема, в принципе? Бубен-то штука хорошая и надежная, да вот только куда им стучать? Щас Активизировать() попробую, но когда и оно не поможет, то прям не знаю, куда дальше рыть. |
|||
18
abitfrosty
17.12.10
✎
17:53
|
Он подключается через OLE приложение, и там доступны формы. А вот с активностью у меня точно такие же проблемы, Активизировать() не помогает.
Возможно из-за того, что форма не принадлежит этому окну 1с предприятия, снизу в списке открытых окон этого окна тоже нет. |
|||
19
Индиго
17.12.10
✎
17:54
|
(16)Ну как то так.
|
|||
20
Mitriy
17.12.10
✎
17:55
|
(19) если чего-то не знаешь, то это не обязано не существовать...
|
|||
21
luns
17.12.10
✎
17:55
|
можно попробовать положить на форму поле html документа и его обновить. при этом фокус перескочит на окно.
|
|||
22
Индиго
17.12.10
✎
17:56
|
(20)Код в студию, получения и вывода на экран формы хоть по оле хоть по ком?
|
|||
23
Mitriy
17.12.10
✎
17:58
|
(22) иди книжки читай...
|
|||
24
chihpyh
17.12.10
✎
17:58
|
Действительно. Активизировать() не помогает. Поле html положить на ту форму, из которой идет вызов? Т.е. на ту, которую требуется активизировать после закрытия вызываемой обработки?
|
|||
25
Индиго
17.12.10
✎
17:59
|
(23)Я так и думал, что ты это скажешь:).. Нет кода- иди тогда сам читай.
|
|||
26
luns
17.12.10
✎
18:00
|
(24) ну да. я когда чат писал столкнулся с тем, что при вызове УстановитьТекст (по таймеру было) 1с на себя фокус перехватывала.
это конечно танцы с бубном, но как вариант... |
|||
27
luns
17.12.10
✎
18:01
|
(25) толсто, а пример кода еще в (0) был
|
|||
28
Индиго
17.12.10
✎
18:02
|
(27)Аха.То то он пришел, что оно не работает...
|
|||
29
Mitriy
17.12.10
✎
18:02
|
(24) я бы с обеими формами попытал... вообще, когда я это делал, то меня такие вещи вроде бы не напрягали... правда, по XP это было...
|
|||
30
Mitriy
17.12.10
✎
18:02
|
(28) убейся об стенку, а?
|
|||
31
Индиго
17.12.10
✎
18:04
|
(30)Злишься что ли?:) Перестань.Ничего личного.
|
|||
32
Mitriy
17.12.10
✎
18:05
|
(31) да нет... за тебя стыдно...
|
|||
33
Индиго
17.12.10
✎
18:06
|
(32)Ну я переживу:-).
|
|||
34
chihpyh
17.12.10
✎
18:29
|
(28) Как раз форма-то работает. Все изумительно открывается и обрабатывается. Только вот активность скачет.
|
|||
35
Индиго
17.12.10
✎
18:34
|
(34)Именно через СОМ или мы о чем то разном говорим?
|
|||
36
chihpyh
17.12.10
✎
18:47
|
(35)
В терминах я уже запутался, показываю каким образом происходит соединение: V8 = Новый COMObject("V81.Application"); Соединение=Неопределено; Соединение=V8.Connect("File="+Путь+";Usr=Админ;Pwd=тех"); ФормаВыбора = V8.Обработки.ВыборНоменклатуры.ПолучитьФорму("ОсновнаяФорма", , ); ФормаВыбора.СтруктураИсходныхПараметров = СтруктураПараметровПодбора; СтрПарам=ФормаВыбора.ОткрытьМодально(); С таким кодом открывается форма, в ней производятся некие интерактивные действия, результат которых возвращается в СтрПарам. |
|||
37
Индиго
17.12.10
✎
19:12
|
(36)Открывается или ты думаешь что ОТКРЫВАЕТСЯ?:-)
|
|||
38
Индиго
17.12.10
✎
19:13
|
Чет мне сдается что не открывается нифига.
|
|||
39
chihpyh
20.12.10
✎
13:54
|
(38)Ну и нудный ты товарищ, Индиго.
Сказано же русским по белому. Все открывается, все работает, все формы показывает, все данные обрабатывает и в нужном виде возвращает. Проблема ТОЛЬКО И ИСКЛЮЧИТЕЛЬНО с активностью этого нового окна. |
|||
40
chihpyh
21.12.10
✎
13:54
|
Все, разобрался.
Для тех, у кого возникнет такой же вопрос: надо на форму кинуть элемент ПолеHTMLДокумента, сделать его невидимым, чтобы не мешался, и после вызова обработки из другой конфигурации выполнить команду: ЭлементыФормы.ПолеHTMLДокумента1.Документ.parentWindow.focus(); Тогда изначальное приложение махом активизируется. |
|||
41
luns
21.12.10
✎
14:15
|
(40) ну гуд. хотя и изврат. ))
|
|||
42
Mitriy
21.12.10
✎
14:23
|
(40) пасиб... может, и пригодится когда...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |