#0
by jk3
Хочу сделать выгрузку данных из ~30 баз. Написал обработку, которая подключается к базам поочередно по OLE и выгружает нужные мне данные в файл. Проблема в том, что при старте базы появляется окно: Предупреждение("Сегодня...bla, bla"); без таймаута, т.е. будет висеть до бесконечности пока юзер не нажмет кнопку OK/ENTER. Соответственно останавливается и ждет обработка, которая запускает базы. Как обычно, через 2 минуты всплывает окно "Сервер занят". Глобальный модуль редактировать не могу. Если поставить таймаут, то все OK, окошко ждет допустим 1 минуту и закрывается, запускается обработка и все хорошо. Для решения этой проблемы написал простенький скрипт, который висит 2 часа (где-то столько идет выгрузка из всех баз) и через каждые полминуты активизирует окно с заголовком "1С:Предприятие" и программно нажимает кнопку Enter. Ну так вот, если всё это время находится в терминальной сессии, то все работает. Если окно терминальной сессии свернуть, то скрипт не работает. Заново разворачиваешь, ждешь полминуты, скрипт срабатывает, и выгрузка продолжается. Вопрос. Как сделать так, чтобы периодически не открывать терминальное окно, т.е. чтобы скрипт работал и при свернутой терминальной сессии. // Server2003+TerminalClient
#3
by jk3
Да, забыл, этот скрипт лежит в отдельном .js файле, запускается из обработки как ЗапуститьПриложение(КаталогИБ + "killWindow.js");. После этой строки запускается процесс wscript.exe А насчет программного нажатия кнопок, то как по-другому без моего участия? Чтобы запустил и работало. Вопрос-то: Почему скрипт, какой бы он ни был, не работает при свернутом терминальном окне. 1С-ка работает, а скрипт нет.
#4
by smaharbA
скрипт работает, проста нет активного окна, да и нажатия передаются не активному а фореграунд окну
#5
by jk3
Хм... ну если проходит WShell.AppActivate("1С:Предприятие") == true, то соответственно WShell.SendKeys("{ENTER}"); должно передаваться в только что активизированное окно. При активном терминальном окне работает, а вот при неактивном - нет. Еще поправка: вместо WShell.Quit; должно быть WScript.Quit; // просто уже прошло 2 часа и скрипт вывалился с ошибкой.
#7
by jk3
Написал еще скрипт для проверки гипотезы while (count < 15) { Т.е. всплывает messageBox с числом count, висит 2 сек, закрывается. Потом через 5 сек следующее окно с числом count+1 и т.д. Работает и в свернутом и в развернутом состоянии. Т.о. проблема в передаче фокуса ввода. >>Как сделать, чтобы окно не только активизировалось, а и делалось что-то типа BringOnTop, чтобы точно фокус ввода был на нем? Тогда по идее все заработает. Вот только что-то такой функции я в описании Windows Script не нахожу :(
#8
by jk3
Видно, ни у кого таких проблем не было... Думал скриптом отделаюсь, а наверное придется писать прогу (.exe) которая это бы делала.
#10
by jk3
Возможно мое решение будет полезно еще кому-нибудь:) 1) WShell.AppActivate("1С:Предприятие") работает на 99.9% только когда сам не переключаешь окна, и не двигаешь мышью. В остальных случаях может не срабатывать. 2) В свернутом состоянии в терминальной сессии не срабатывает программное нажатие кнопок. т.е. WShell.SendKeys("{ENTER}"), даже если клавиша и посылается (что сомнительно), но не доходит до активного окна. 3) В WMI нет функций работы с окнами, только с процессами => нужно использовать внешнее приложение. 4) Решение см. ниже. cmdow.exe - бесплатная программка (, 15KB zip)для расширенной работы с окнами. /cls - закрыть окно с заданным заголовком. Скрипт будет работать пока запущена хоть одна 1С-ка. Проверка каждые 10 секунд.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как дать права локального админа на всех машинах, но не давать админа домен
- Как найти элементы справочника, наменование которых начинается с ...?
- Из Excel в ТЗ
- v7: Определение типа значений, добавляемых в список значений на форме
- Ошибка при загрузке данных из XML
- Как в запросе к строке прибавить число ?
- Обработка "Анализатор кода 1с 8.0"
- v8: Значение индекса выходит за границы диапазона
- Как распечатать номенклатуру
- не совпадает сумма долга контрагента по "ведомости контрагентов" и по кнопк
- Зик Банковские издержки
- Как программно активизировать определенную строку документа
- v7: мне надо программно заархивировать файл с помощью winrar
- Как 100% узнать выбран файл Excel или какой другой с расширением .xls ?
- Как работает Иерархический Просмотр справочника?
- Где взять информацию по Технологии создания внешних компонент.
- Что удобнее: 1С или Access?
- Как добавить реквизит в группу справочника?
- Как можно поменять цвет шрифта/шрифт у текущей строки ТЗ?
- не работает предварительный просмотр документа перед печатью