//Создаем новый объект пса с режимом перезагрузки
wd:=WatchDog.Create(0);
//Производим включение сторожевого пса с периодом в 30 сек.
wd.Guard(30000);
//В лог будет выведено "Отладка, активность/режим: 1/0"
Message("Отладка, активность/режим: "+wd.Active+"/"+wd.Mode);
//Создаем OLE-объект компоненты весов
Try
Уст:=CreateOLE("LP16DLLCOM.lp16");
Уст.ip:="192.168.0.1";
Уст.port:=8111;
Уст.Connect();
Except
Message("Не зарегистрирована компонента весов LP16DLLCOM.dll, либо весы не настроены, обратитесь к администратору!","!");
Exit 0;
EndTry;
//Производим выгрузку информации в весы. Компонента весов этой марки имеет тенденцию зависать, если во время выгрузки оператор попробует провести работу с весами.
//Т -- текстовый файл с информацией в виде "PLU номер;Цена;Сообщение;Срок;Тара;Группа;Полное имя;Код;Лого;Текстовое Лого"
For i:=1 to T.Size() Do
s:=T.GetLine(i);
If i%10=0 Then
Message("Выгружено "+i+" из "+T.Size());
EndIf;
Try
//Выгружаем строку текстового файла -- один товар
Уст.PLUNO:=Number(Trunc(tearStr(s,";")));
Уст.PRICE:=Number(Trunc(tearStr(s,";")));
Уст.MSG:=Number(Trunc(tearStr(s,";")));
Уст.LIFE:=Number(Trunc(tearStr(s,";")));
Уст.TARE:=Number(Trunc(tearStr(s,";")));
Уст.groupcode:=Number(Trunc(tearStr(s,";")));
//Имя размещается в одной или двух строках с максимальной длиной в 28 символов
Стр:=Replace(tearStr(s,";"),"@",";");
s2:=Left(Стр,28);
if Length(s2)=0 Then
s2:=" ";
EndIf;
Уст.MSG1:=s2;
s2:=Mid(Стр,29,28);
if Length(s2)=0 Then
s2:=" ";
EndIf;
Уст.MSG2:=s2;
Уст.ITEM:=tearStr(s,";");
Уст.NumberLogo:=Number(Trunc(tearStr(s,";")));
s2:=tearStr(s,";");
if Length(s2)>0 Then
Уст.LogoStr:=s2;
EndIf;
Уст.SendPLU();
Except
Message("Не удалось отправить товар "+Стр+" в весы! Повторите выгрузку!","!");
Exit;
EndTry;
//После выгрузки одной строки производим обновление времени ожидания пса.
//Если в момент вызова Уст.SendPLU() произошло зависание, пес, не дождавшись команды Feed() произведет перезагрузку клиента
wd.Feed();
EndDo;
Try
Уст.Disconnect();
Except
EndTry;
//Выключаем сторожевого пса (система сделала бы это автоматически при выходе из текущей функции, так как переменная wd была бы уничтожена,
// поэтому все инструкции Exit в данном примере не используют конструкцию Try ... Finally)
wd.Sleep();