Добрый вечер!
Есть код на 2+ тысячи строк + библиотека на 1500+
Формируется выторг за этот месяц, прошлый год и т.д. по времени
По максимуму повторения процессов занес в библиотеку,
но вот сам блок закручивания выторга, выставления периодов приходится дублировать с изменением периодов и названия для экспорта.
Проблема в слабой стабильности( вылетело окно обновления винды - все пропало, зависла база, задержалось экспортирование, где-то почему-то не сработало - то же самое)
Частично проверок выполнения действий наделал, повставлял эти сабы на 2000+ строчек, но не уверен что лучший вариант (хотя и рабочий)
Возможно кто-то настраивал ежедневную рутину такого плана.
Нужен совет! В какую сторону посмотреть для оптимизации кода? Массив пока не могу продумать...
//Период2018
SUB(10Beg)
KEYPRESS(#0)
WAITMS(500)
KEYPRESS(#1)
WAITMS(500)
KEYPRESS(#RIGHT)
WAITMS(500)
KEYPRESS(#1)
WAITMS(500)
KEYPRESS(#0)
WAITMS(500)
KEYPRESS(#RIGHT)
WAITMS(500)
KEYPRESS(#DOWN)
END_SUB
SUB(10End)
KEYPRESS(#DOWN)
WAITMS(500)
END_SUB
SUB(20_310Beg)
KEYPRESS(#0)
WAITMS(500)
KEYPRESS(#1)
WAITMS(500)
KEYPRESS(#RIGHT)
WAITMS(500)
KEYPRESS(#1)
WAITMS(500)
KEYPRESS(#1)
WAITMS(500)
END_SUB
SUB(PostBeg)
KEYPRESS(#0)
WAITMS(500)
KEYPRESS(#1)
WAITMS(500)
END_SUB
///////////////////////////////////////////////////////////////////////////////
////////////////////////////// ФОРМИРУЕМ Поступления ////////////////////////
///////////////////////////////////////////////////////////////////////////////
//==============================================================================
SUB(MORNING)
begin:
reopen()
//==============================================================================
LOGWRITE("Таймер сработал. запуск")
WAIT(1)
HWN()
//присвоили переменные с кодами всех окон
WAITMS(100)
// открываем отчет выторг
пост()
wait(3)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT("Картинки ОП\","Отчет.bmp"),-1,70) //ищем границы отчета
LOGWRITE("+найден открытый отчет выторга")
Else
LOGWRITE("1НЕ найден открытый отчет выторга")
scr()
halt
end_if
$X1=0
$X1=$_return1
$Y1=0
$Y1=$_return2
logwrite("X1=",$X1)
logwrite("y1=",$Y1)
$X2=0
$X2=$X1+400
$Y2=0
$Y2=$Y1+500
logwrite("X2=",$X2)
logwrite("y2=",$Y2)
// присвоили переменные - границы окна настройки выторга
wait(1)
LCLICK($X1+100, $Y1+30)
wait(1)
///Вкладка ДЕТАЛЬНО
////////////ФОРМИРУЕМ ТЕКУЩИЕ для выторга /////////////////////////////
//открыть дату окончания
MOVE($X1+282, $Y1+95)
waitms(100)
LCLICK($X1+282, $Y1+95)
//выставить сегодня
GETSCREEN($x1,$y1,$x1+280,$y1+280)
COLORMODE(5)
IF_PICTURE_IN ($x1,$y1, $x1+280,$y1+280, STRCONCAT("Картинки ОП\","сегодня.bmp"),-1,80)//дата окончания на сегодня
waitms(900)
lclick($_return1+10, $_return2+5)
waitms(900)
LCLICK($_return1, $_return2-148)
waitms(900)
10End()
Else
LOGWRITE("8НЕ СМОГ найти день окончания-сегодня")
scr()
end_if // обнулили дату окончания к закрытому дню
// найдем начальный период
waitms(500)
LCLICK($X1+90, $Y1+95)
waitms(500)
GETSCREEN($x1,$y1,$x1+250,$y1+260)
COLORMODE(5)
IF_PICTURE_IN ($x1,$y1,$x1+250,$y1+260, STRCONCAT("Картинки ОП\","сегодня.bmp"),-1,80)//дата начала на сегодня
waitms(900)
LCLICK($_return1, $_return2)
waitms(900)
LCLICK($_return1, $_return2-148)
waitms(900)
Else
LOGWRITE("НЕ СМОГ найти день начала-сегодня")
scr()
end_if
PostBeg()
//обнулить отдел, подставить галку подгруппа
waitms(500)
LCLICK($X1+351, $Y1+258)
waitms(500)
LCLICK($X1+351, $Y1+308)
waitms(500)
LCLICK($X1+351, $Y1+335)
waitms(500)
//галка поддепартамент
LCLICK($X1+21, $Y1+414)
waitms(500)
//сформировать
MOVE($x1+50,$y1+450)
waitms(500)
LCLICK($x1+50,$y1+450)
wait(1)
LoadWait()
wait(1)
moneyIncome()
wait(1)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#E)
WAITMS (50)
KEYUP (#E)
WAITMS (50)
KEYUP (#CTRL)
wait(2)
saveAs()
wait(1)
toclip("С\Выторг\текущий ")
WAITMS(50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
KEYPRESS(#BACKSPACE)
WAITMS(500)
KEYPRESS(#ENTER)
WAITMS(500)
$smena=0
$smena=wndfind("Подтвердить сохранение в виде")
IF($smena > 0)
WNDBUMP( $smena)
KEYPRESS(#LEFT)
WAITMS(500)
KEYPRESS(#ENTER)
ELSE
LOGWRITE("!!!!!!!!!!!ОКНО ЗАМЕНЫ НЕ НАЙДЕНО,", $smena)
END_IF
wait(10)
// заэкспортировали
ExpWait()
//проверили что уже заэкспортировался
wait(5)
wndbump($P1)
wait(1)
wndbump($P1)
waitms(500)
close()
moneyIncomeClosed()
wait(1)
LOGWRITE("Выторг Текущие закручены")
//////////////////////////////////////////////////////////////////////////////
//////////////////////// ЗАКРУТИЛИ ТЕКУЩИЕ////// ///////////////////////////
//////////////////////////////////////////////////////////////////////////////