Как установить фокус на ОЛЕ объекте

1. Casey Jones 10.03.09 19:01 Сейчас в теме
Проблема такая: Из базы А подключаюсь к базе Б посредством оле. Далее описываю переменную, которая содержит ссылку на документ в оле базе:
ОлеДок = База.CreateObject("Документ.УправлениеПродажнымиЦенами");
Дальше мне необходимо выбрать конкретный документ при нажатии на кнопку:
ОлеДок = База.CreateObject("Документ.УправлениеПродажнымиЦенами");
Если ОлеДок.Выбрать("Выберите документ источник",,) = 1 Тогда
ОлеДок.ВыбратьСтроки();
Пока ОлеДок.ПолучитьСтроку() = 1 Цикл
.......
КонецЦикла;
КонецЕсли;

Все отрабатывает, но есть одно НО. Список выбора документов появляется, но он не активен, то есть его не видно. Чтобы попасть на это окно надо клацать альт+таб, что не есть гуд. Как это можно побороть?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. biv75 10.03.09 20:42 Сейчас в теме
Думаю побороть таким способом, сделать предварительно выборку документов в ТЗ с полями ДатаДокумента, НомерДокумента, и выбрать строку из ТЗ, а затем используя НайтиПоНомеру найти выбраный документ
3. Dolly_EV 269 11.03.09 05:53 Сейчас в теме
(2) это конечно поможет, но это "не есть гуд"))
присоединяюсь к сабжу - тож была такая заморочка - только с выбором из справочника в ОЛЕ...
АЛьт+Таб напрягает, пытался помудрить с Формексовским объектом "Окна" - ничего не получилось..
4. biv75 11.03.09 07:14 Сейчас в теме
А с ОЛЕ по другому и не получится, есть это гуд или нет.
5. Casey Jones 11.03.09 07:19 Сейчас в теме
biv75 (Бывает тут) 11.03.09 7:14

А с ОЛЕ по другому и не получится, есть это гуд или нет.


Жаль, недороботочка млин.... про ТЗ тоже мысль была, но вот не очень хочется за год документы в ТЗ скидывать, ибо заранее неизвестно какой период понадобится. Вся фишка как раз таки в стандартном журнале, с выбором периода и прочих шалостей....
6. biv75 11.03.09 07:26 Сейчас в теме
Может попробовать через эмуляцию клавишь вызывать АЛьт+Таб.
15. Dolly_EV 269 11.03.09 08:53 Сейчас в теме
(6) а это идея!
А послать можно еще например через Формексовский метод
"ЭмулироватьКлавиатуру(<Строка>,<Ждать>,<Раскладка>)"

и посылать после открытия формы... опять же да... после "Выбрать" в "родной" базе будет тормоз до того, пока не выберется чегонить....
видимо без доп. кода в форме выбора в Оле-базе не обойтись...
7. Casey Jones 11.03.09 07:33 Сейчас в теме
Хм...а каким образом, подскажите?
8. biv75 11.03.09 08:11 Сейчас в теме
(7)
Shell = Новый COMОбъект("WScript.Shell");
Shell.SendKeys("%{TAB}");

как-то так например
9. Casey Jones 11.03.09 08:14 Сейчас в теме
Интересно..и никаких дополнительных библиотек подключать ненадо? Да и в какой момент это делать...До команды .Выбрать - рано, после - поздно...
10. biv75 11.03.09 08:22 Сейчас в теме
Дополнительно ничего не надо, а насчет когда... думаю что после, окно ведь для выбора сначала долно появиться.
11. Casey Jones 11.03.09 08:26 Сейчас в теме
(10) Да, но как только окно выбора появляется, программа игнорит код, пока юзер не выберет документ или, скажем, откажется от выбора вовсе. Кстате, на вот это Новый COMОбъект("WScript.Shell") 1с -ка ругнулась, мол неизвесная функция...
12. biv75 11.03.09 08:36 Сейчас в теме
Для 8ки написал )))

Shell =СоздатьОбъект("WScript.Shell");
Shell.SendKeys("%{TAB}");

и вызывать наверное тогда перед тем, что-то я не подумал
13. biv75 11.03.09 08:44 Сейчас в теме
(12) я у себя попробовал, все вроде получается
14. Casey Jones 11.03.09 08:51 Сейчас в теме
Да, отрабатывает..только терь зараза кроме того еще и в другое приложение перепрыгивает :). Если его свернуть - то, о, шаман, все на месте...как терь указать, чтобы она альт табилась сама на себя..1с-ка в смысле :)
17. biv75 11.03.09 08:59 Сейчас в теме
(14) Ну это да, должно быть только окно 1С открыто, тут вот ничем помочь не могу, думаю что есть варианты, но опять же не простые, придется раскорячиться ))) Проще окна остальные закрыть.
18. biv75 11.03.09 09:07 Сейчас в теме
(14) Здесь есть господин Душелов, он спец по таким выкрутасам, может подскажет что
16. Casey Jones 11.03.09 08:58 Сейчас в теме
Хватает и тут загвоздок...терь главное найти каким образом спозиционироваться именно на этом окне выбора бокументов - иначе, при наличии других открытых приложений, да и без них, при повторном нажатии вызова диалога - все по старому.
19. Душелов 4017 11.03.09 09:11 Сейчас в теме
А чего подсказывать? Ищем окно по заголовку "Выберите документ источник" и активируем его.
Ессно с помощью ВК.
22. biv75 11.03.09 09:14 Сейчас в теме
(19) вот, я же говорил, он знает как ))
20. Ёпрст 1063 11.03.09 09:12 Сейчас в теме
Можно и без помощи ВК вернуть фокус взад.
21. Ёпрст 1063 11.03.09 09:13 Сейчас в теме
	//фокус вернём взад ....
	Shell=СоздатьОбъект("Shell.Application");
	Shell.MinimizeAll();
	ВвестиСтроку("","",1,0,1);
23. Casey Jones 12.03.09 18:13 Сейчас в теме
(21) Не срабатывает таким образом, к сожалению
(19) А можно немного подробнее, что это за ВК?

Кстати, еще одна проблема нарисовалась. На ноуте, где разрабатывал код стоит винда ХП. База по ОЛЕ подключается без проблем. Ставлю это у клиента - у него бук подключен терминалкой к серверу, на котором стоит винда 2003 сервер энтерпрайз и соответственно запуск 1с тоже в сессии - не работает нифига. Как никрутил - база по оле не подключается, хоть убей...Может у 2003 сервер есть какая особенность?
24. Душелов 4017 12.03.09 19:21 Сейчас в теме
(23) ВК - надо писать.

Видимо в терминальной сесии нет прав на ком-соединения.
25. biv75 12.03.09 20:08 Сейчас в теме
(23) Надо написать в личку господину Душелову и попробовать договориться, когда и на каких условиях он может написать ВК для упраления окнами из 1С.
26. Душелов 4017 12.03.09 21:05 Сейчас в теме
27. biv75 12.03.09 21:35 Сейчас в теме
(26) Вот, я же помню что что-то было наподобие.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот