Каталог решений - Связка ККМ (Феликс-РК) АТОЛ драйвера и 1С 7.7 — глюки взаимодействия

Связка ККМ (Феликс-РК) АТОЛ драйвера и 1С 7.7 — глюки взаимодействия

Связка ККМ (Феликс-РК) АТОЛ драйвера и 1С 7.7 — глюки взаимодействия

В наличии

Честно сказать, не посмотрел, что там в стандартной обработке печати фискального чека из 1С (говорят, не всё там круто), но то, что было оттуда вынесено (не мной) в нашу самописную конфу — работало глючно. Когда дошли руки — переписал.

Категория:

Описание

Все началось с http://forum.infostart.ru/forum9/topic7856/message59191/#message59191

Честно сказать, не посмотрел, что там в стандартной обработке печати фискального чека из 1С (говорят, не всё там круто), но то, что было оттуда вынесено (не мной) в нашу самописную конфу — работало глючно. Когда дошли руки — переписал.

Вот что было:

Объект.ПолучитьСостояние();
НомерЧека = Объект.НомерЧека;
Объект.ЗакрытьЧек();

Если Объект.ResultCode <> 0 Тогда //ошибка
    Предупреждение("Код ошибки: "+Строка(Объект.ResultCode)+" "+Объект.ResultDescription);
    Возврат 0;
Иначе
    Возврат 1;
КонецЕсли;

При этом часто ResultCode был 0, хотя чек не закрывался.

После долгих экспериментов написал такой код, для большей устойчивости

Объект.ПолучитьСостояние();
НомерЧека = Объект.НомерЧека;
Объект.ЗакрытьЧек();

ТекРезультат=Объект.Результат;
ОписаниеРезультата=Объект.ОписаниеРезультата;

ТекСостояние=Объект.ПолучитьСостояние();

ТекРезультат=Объект.Результат;
ОписаниеРезультата=Объект.ОписаниеРезультата;

БылаОшибка=0;
Если ТекРезультат <> 0 Тогда //ошибка
    БылаОшибка=1;
Иначе
    Если (Объект.СостояниеЧека<>0) ИЛИ (ТекСостояние<>0) Тогда
        ОписаниеРезультата="";
        ТекРезультат=0;

        Если ТекСостояние<>0 Тогда
            Если ТекСостояние=-1 Тогда
                ОписаниеРезультата="Нет связи с ККМ";
            ИначеЕсли ТекСостояние=-3807 Тогда
                ОписаниеРезультата="Нет бумаги";
            Иначе
                ОписаниеРезультата="Неизвестная ошибка";
            КонецЕсли;
            ТекРезультат=ТекСостояние;
            БылаОшибка=1;
        Иначе
            Если Объект.НетСвязиСПринтеромЧеков = 1 Тогда
                ОписаниеРезультата="Нет связи с ККМ";
                БылаОшибка=1;
            ИначеЕсли Объект.УстройствоВключено = 0 Тогда
                ОписаниеРезультата="ККМ не включена";
                БылаОшибка=1;
            ИначеЕсли Объект.КрышкаОткрыта = 1 Тогда
                ОписаниеРезультата="Открыта крышка";
                БылаОшибка=1;
            ИначеЕсли Объект.НаличиеЧековойЛенты=0 Тогда
                ОписаниеРезультата="Нет Чековой Ленты";
                БылаОшибка=1;
            ИначеЕсли Объект.НетБумаги = 1 Тогда
                ОписаниеРезультата="Нет Бумаги";
                БылаОшибка=1;
            ИначеЕсли Объект.ОшибкаПерегревПечатающейГоловки = 1 Тогда
                ОписаниеРезультата="Перегрев печатающей головки";
                БылаОшибка=1;
            Иначе
                ОписаниеРезультата="Чек не закрыт";
                БылаОшибка=1;
            КонецЕсли;
        КонецЕсли;

    КонецЕсли;
КонецЕсли;

Если БылаОшибка=1 Тогда
    ГлСформироватьСписокПараметровСбояККМ("При закрытии чека",ТекРезультат,ОписаниеРезультата, Объект, НомерНакладной);
    Предупреждение("Ошибка ККМ : "+ТекРезультат+" - "+ОписаниеРезультата);
    Возврат 0;
КонецЕсли;

Возврат 1;

Процедура ГлСформироватьСписокПараметровСбояККМ — это я веду список ошибок ККМ для передачи их в офис и дальнешего анализа

has been added to your cart:
Оформление заказа