Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Lucius

Pages: [1]
1
Использование / Формирование отчетов в 1С
« on: September 12, 2019, 05:43:15 PM »
Добрый вечер!

Есть код на 2+ тысячи строк + библиотека на 1500+
Формируется выторг за этот месяц,  прошлый год и т.д. по времени
По максимуму повторения процессов занес в библиотеку,
но вот сам блок закручивания выторга, выставления периодов приходится дублировать с изменением периодов и названия для экспорта.



Проблема в слабой стабильности( вылетело окно обновления винды - все пропало, зависла база, задержалось экспортирование, где-то почему-то не сработало - то же самое)
Частично проверок выполнения действий наделал, повставлял эти сабы на 2000+ строчек, но   не уверен что лучший вариант (хотя и рабочий)

Возможно кто-то настраивал ежедневную рутину такого плана.
Нужен совет! В какую сторону посмотреть для оптимизации кода? Массив пока не могу продумать...



 
Code: [Select]
 

//Период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("Выторг Текущие закручены")
   
   //////////////////////////////////////////////////////////////////////////////
   ////////////////////////  ЗАКРУТИЛИ ТЕКУЩИЕ//////  ///////////////////////////
   //////////////////////////////////////////////////////////////////////////////

2
Добрый день, форумчане!

Есть макрос на удаленном компьютере, которые отправляет письмо ежедневно, иногда глючит из-за разных табличек винды, перегрузки компа админами.
Подключаюсь  к этому компу через RDP( Тимвьювер не вариант из-за политик :( ) , при выходе блокируется учетка.
Можно ли  как-то войти в компьютер с вводом логина и пароля средством Кликермана или батника через кликер?
Помогите советом.

3
Прочее / Не работает через Тимвьювер
« on: October 15, 2018, 09:59:13 AM »
Написан макрос на отложенный запуск в 16:00. Запускается, работает.
Если подключиться через Тимвьювер к этому компу и запустить макрос, ничего не произойдет, в логах ничего не пишет.
Может быть из-за того что при отключения TW  блокируется паролем комп?


Кто сталкивался с данной проблемой подскажите.

4
Использование / Три базы данных и hget
« on: June 15, 2018, 06:02:38 PM »
Добрый день!
Есть одновременно три открытые программы, Ярлычки на панели один под другим.
Можно ли как-то кроме поочередного наведения мыши, обозвать окна по hget/
Сейчас работаю по такому макросу, но стоит одной программе вылететь и все накрывается.

Code: [Select]
////////////////// ФОРМИРУЕМ отчет   ////////////////////////
///////////////////////////////////////////////////////////////////////////////
LOGCLEAR
GETSCREEN
colormode(6)
screenshot //БЛОК1   поиск ярлыка ,присвоение HWND
IF_PICTURE_IN (60,1000, $_xmax,$_ymax, STRCONCAT("Картинки ОП\","Снимок1.bmp"),-1,80)
   LCLICK($_return1+5, $_return2+5)
Else
   LOGWRITE ("Не найдено БАЗУ")
   halt
END_IF
$P=0
$P=$_return1
$P1=0
$P1=$_return2
WAIT(1)
move($P-140,$P1-75)
WAIT(1)
LCLICK($P-140,$P1-75)
WAIT(1)      //левое окно из трех БАЗ
$Pot1=0
$Pot1=hget(61,588)
LCLICK($_return1+5, $_return2+5)
WAIT(1)
move($P+60,$P1-75)
WAIT(1)
LCLICK($P+60,$P1-75)
WAIT(1)
LCLICK($P+60,$P1-75)
WAIT(1)
$pot2=0
$Pot2=HGET(61,588)   //среднее окно из трех БАЗ
LCLICK($_return1+5, $_return2+5)
WAIT(1)
move($P+280,$P1-75)
WAIT(1)
LCLICK($P+280,$P1-75)
WAIT(1)
$Pot3=0
$Pot3=HGET(61,588)   //правое окно из трех БАЗ
LOGWRITE ("Pot1=",$Pot1)
LOGWRITE ("Pot2=",$Pot2)
LOGWRITE ("Pot3=",$Pot3)
//присвоили переменные с кодами всех окон БАЗ
wndbump($Pot1)

Pages: [1]