Потребовалось как-то обеспечить запуск в ночное время обработки в 1С - 8.0. Вроде ничего сложного - пишешь скрипт и ставишь его в планировщик на заданное время. Да вот беда - во время работы появляются сообщения, выводимые в окно сообщений, которые нужно затем проанализировать, а с закрытием 1с пропадают и все сообщения. Первая мысль - перенаправить поток в файл, но в 1С 8.0 такого не нашел. пришлось программно давить кнопки. Итак, что сделано.
- В корне диска D: создан текстовый файл Сообщения.txt.
- В модуле приложения в процедуре ПриНачалеРаботыСистемы вставлен текст
Если ОбработатьПараметрЗапуска() Тогда
Отказ = Истина; Возврат;
КонецЕсли;
- В ОбработатьПараметрЗапуска() есть такой кусочек
ИначеЕсли ЗначениеПараметраЗапуска = "PP" Тогда
ПроведениеПоПартиям = Обработки.ПроведениеПоПартиям.Создать();
Форма = ПроведениеПоПартиям.ПолучитьФорму("Форма");
ДатаКонца = Дата(РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска,";")[1],РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска,";")[2],РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска,";")[3]);
Форма.ДатаКонцаОбработки = ДатаКонца;
ПроведениеПоПартиям.ВыполнитьВосстановление();
//Создаем WScript
wshShell=Новый COMObject("WScript.Shell");
//Переходим в окно "Служебные сообщения" Ctrl+Alt+O
wshShell.sendKeys("^%(O)");
//Выделяем текст окна Ctrl+A
wshShell.sendKeys("^(A)");
//Сохраняем в буфер Ctrl+С
wshShell.sendKeys("^(C)");
//завершаем работу 1С
ЗавершитьРаботуСистемы(Ложь);
Возврат ИСТИНА;
В качестве параметров запуска указан год,месяц,день (это для моей обработки, у вас - что угодно).
- Написан скрипт pp.vbs
WScript.Sleep 5000 Set WshShell=CreateObject("WScript.Shell") Set objArgs = WScript.Arguments Y = objArgs(0) M = objArgs(1) D = objArgs(2) WshShell.Run """C:\Program Files\1cv8\bin\1cv8.exe"" ENTERPRISE /F D:\1c\db\UT /N Exchange /P Exchange /Cpp;" & Y & ";" & M & ";" & D & " /DisableStartupMessages",1,1 WshShell.sendKeys "^%(Z)" 'Вызываем файл Сообщения.txt WScript.Sleep 1000 Res = WshShell.AppActivate("Сообщения - Блокнот") If Res Then WshShell.SendKeys("% ~") 'Раскрываем окно WshShell.sendKeys "^(A)" 'Выделяем текст в Блокноте WshShell.sendKeys "^(V)" 'Вставляем буфер WshShell.sendKeys "^(S)" 'Сохраняем текст WshShell.sendKeys "%{F4}" 'Закрываем блокнот ELSE WScript.MessageBox("Приложение не найдено") END IF
- В нужный момент бухи ставят на нужное время в планировщик запуск скрипта pp.vbs с параметрами год, месяц, день (например, "pp.vbs 2009 08 20" ) и выполняют обработку ПроведениеПоПартиям. После прогона все закрывается и выполняется автоматом обмен данными между базами. А наутро они открывают файл Сообщения.txt и смотрят как и что было, и не нужно ли еще чего.