1. Поговорите на эту тему с любым мастером сервисного центра. После того, как он выматерится, Вы узнаете,
что у Штрихов "больное" место - это кабели. Точнее их качество. Первым делом при ошибке "нет связи" меняется кабель.
Как правило - это решает проблему. Как мне объясняли - там какая-то беда с качеством контактной группы (Китай ?).
2. Архитектура Штриха изначально (очень давно) строилась под медленный COM порт и особо не изменилась (в отличии от АТОЛ).
Поэтому желательно не перегружать буфер печати, т.е. не гнать в него данные потоком, пока есть ещё не распечатанные.
В общем-то это описано в документации, просто обычно это место пропускают и упрощают код …

Реализовать сказанное выше можно по разному, например вставляем после КАЖДОЙ команды печати вызов:
Код: Выделить всё
ShtrihM_WaitPrint    PROCEDURE  (Object_)                  ! Declare Procedure
Loc:RetValue         BYTE(False)
  CODE
  
  Loop
     Case Int(Object_{'WaitForPrinting'})
     Of 0
        Break
     Of -34
        If Message(' В ККМ закончилась кассовая лента !| Вставьте новый ролик с лентой.|| Продолжить печать ?','У нас проблема !',Icon:Question,Button:Yes+Button:No,Button:Yes) <> 2
           Display
           Loc:RetValue = True    ! Выход с ошибкой
           Break
        else           
           Object_{'ContinuePrint'}           
        end
     Of -1
        Object_{'GetShortECRStatus'}
     else
        If Int(Object_{'ResultCode'})
           Message(' Ошибка: ' & Clip(Left(Object_{'ResultCodeDescription'})),'Сообщение',Icon:Exclamation,'&1. Закрыть')           
           Loc:RetValue = True    ! Выход с ошибкой
        end
        Break
     end
  end
  Return(Loc:RetValue)





