Имя: Пароль:
1C
 
Егаис в рознице 7.7
0 Diman_Kr
 
16.03.17
18:05
Товарищи по несчастью, поделитесь кто может, как кто таймер ожидания ответа от УТМ в 7.7 организовал? У меня периодически приходит ответ, что марка не прошла проверку, в логах УТМ: этот чек уже был зафиксирован. Т.е. как будто ККМ не дождался положительного ответа от УТМ, а при повторной отправке чека, он уже зареген на сервере ЕГАИС, и марки как дубликаты получаются.
1 HawkEye
 
16.03.17
18:49
(0) как-то так:
Функция лкмОбменСЕГАИС(взФайлЗАпроса, вхФайлОтвета, выхЗапросИД, выхСигнатура)
    ВремяОжиданияОтвета = 10; //в секундах
    WshShell = СоздатьОбъект("WScript.Shell");
    Стр = "cmd /c" + каталогИБ() + "egais\curl.exe -F xml_file=@" + СокрЛП(взФайлЗАпроса) + " http://"; + АдресУТМ + "/xml>" + вхФайлОтвета;
    //_Сообщить(ТекстЛога,стр);
    WshShell.Run(Стр,0,0);  
    Если ФС.СуществуетФайл(вхФайлОтвета) = 0 Тогда
        НашлиФайл = 0;
        Для й = 1 По ВремяОжиданияОтвета Цикл
            Состояние("Ожидание ответа от УТМ..."+(ВремяОжиданияОтвета+1-й));
            WshShell.Run("ping 127.0.0.1 -n 2",0,1);
            Если ФС.СуществуетФайл(вхФайлОтвета) = 1 Тогда
                НашлиФайл = 1;
                Прервать;
            КонецЕсли;    
        КонецЦикла;
        Состояние("");
        Если НашлиФайл = 0 Тогда
        //    _Сообщить(ТекстЛога,"Не получен ответ от УТМ",,1);
            УдалитьФайл(взФайлЗАпроса);
            УдалитьФайл(вхФайлОтвета);
            Возврат 1;
        КонецЕсли;  
    КонецЕсли;
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший