gifts2017

Ночная обработка

Опубликовал Vlad (kitminsk) в раздел Администрирование - Сервисные утилиты

Ночной запуск обработки в 1С - 8

Потребовалось как-то обеспечить запуск в ночное время обработки в 1С - 8.0. Вроде ничего сложного - пишешь скрипт и ставишь его в планировщик на заданное время. Да вот беда - во время работы появляются сообщения, выводимые в окно сообщений, которые нужно затем проанализировать, а с закрытием 1с пропадают и все сообщения. Первая мысль - перенаправить поток в файл, но в 1С 8.0 такого не нашел. пришлось программно давить кнопки. Итак, что сделано.

  1. В корне диска D: создан текстовый файл Сообщения.txt.
  2. В модуле приложения в процедуре ПриНачалеРаботыСистемы вставлен текст
Если ОбработатьПараметрЗапуска() Тогда  
  Отказ = Истина; Возврат;                        
КонецЕсли; 
  1. В ОбработатьПараметрЗапуска()  есть такой кусочек
ИначеЕсли ЗначениеПараметраЗапуска = "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С
    ЗавершитьРаботуСистемы(Ложь);
    Возврат ИСТИНА;

В качестве параметров запуска указан год,месяц,день (это для моей обработки, у вас - что угодно).

  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
  1. В нужный момент бухи ставят на нужное время в планировщик запуск скрипта pp.vbs с параметрами год, месяц, день (например, "pp.vbs 2009 08 20" ) и выполняют обработку ПроведениеПоПартиям. После прогона все закрывается и выполняется автоматом обмен данными между базами. А наутро они открывают файл Сообщения.txt и смотрят как и что было, и не нужно ли еще чего.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Vlad (kitminsk) 15.01.10 08:04
Упустил один момент - вешаем ярлык на файл Сообщения.txt и назначаем ему горячие кнопки Ctrk+Alt+Z, иначе непонятен оператор WshShell.sendKeys "^%(Z)" 'Вызываем файл Сообщения.txt
2. Reaper_1c Reaper_1c (Reaper_1C) 15.01.10 08:34
Зря конфигурацию испохабил. Можно было весь код записать во внешней обормотке и указывать ее как параметр пакетного запуска 1С.
3. Oberonm (oberonm) 15.01.10 08:57
а что, разве кто то отменял вывод сообщений в файл с таким ключом: /OutD:\1C\logs\centre_out.log -NoTruncate
4. Vlad (kitminsk) 15.01.10 09:04
Спасибо oberonorm! Сам не нашел :cry:
5. Vlad (kitminsk) 15.01.10 09:34
С учетом замечания obernorm скрипт должен выглядеть следующим образом.
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 /OutD:\1C\logs\ppp.log",1,1
6. Андрей (AKV77) 15.01.10 15:06
Уважаемый автор полгода использую http://infostart.ru/public/20238/, посмотри, может пригодится.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа