Имя: Пароль:
1C
 
Печать чеков коррекции на Атол 55Ф через команды драйверу из 1С
↓ (Волшебник 24.11.2023 09:22)
0 Selma2
 
23.11.23
14:11
Добрый день! Может кто-то сталкивался с проблемой печати чеков коррекции из 1С? У нас Атол 55Ф, ФФД 1.2. Не понимаю, что я делаю не так. На чеке пропечатывается тип коррекции. пропечатывается строчка с данными по товару, но в итоге в самом низу чека - Ошибка ККТ 0x70АЕ, так как вот тут: fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED в итоге false, то есть, функции closeReceipt() чего-то не хватает, и она не отрабатывает так как надо.

Код:

fptr = Новый COMобъект("AddIn.Fptr10");
        fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, Строка(fptr.LIBFPTR_PORT_USB));
fptr.applySingleSettings();
fptr.open();

fptr.setParam(1021, СокрЛП(Кассир));
fptr.setParam(1203, СокрЛП(КассирИНН));
fptr.operatorLogin();
    
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL_CORRECTION );
    
    
fptr.clearMarkingCodeValidationResult(); //пробую очищать марки, по аналогии с вызовом этого метода несколькими строками ниже перед назначением реквизита 1173, но это не дает никакого эффекта

//составной реквизит
Fptr.setParam(1178, "2023-041-01");    
Fptr.setParam(1179, "0");  
Fptr.utilFormTlv();
correctionInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
Fptr.setParam(1174, correctionInfo);
        
        
fptr.clearMarkingCodeValidationResult();
        
fptr.setParam(1173, 0); //на чеке пропечатывается: Тип коррекции "САМОСТОЯТЕЛЬНО", но только если команда очистки марок находится строчкой выше. Изменение порядка назначения реквизитов 1174 и 1173 приводит к ошибке чека.
    
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL_CORRECTION );
fptr.openReceipt();

    
//товары
Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, "Каша");
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 1);    
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT0);
Fptr.setParam(1212, 1);
Fptr.setParam(2108, Fptr.LIBFPTR_IU_PIECE);
        
Fptr.registration();
    
//
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_other);
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_SUM,10);
fptr.payment();
    

fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_other);    
fptr.closeReceipt();

подозреваю, что ошибка в составном реквизите 1174, но не понятно какая....
Помогите, пожалуйста, если вдруг кто-то уже сталкивался с такой проблемой!
1 Selma2
 
23.11.23
14:13
*1 в дате опечатка, там без цифры 4, если что, то дело конечно же не в этом, это я уже когда тему создавала, подчистила лишнее и опечаталась  )
2 Тихий омут
 
24.11.23
04:27
Попробуй добавить в тег 1174 тег 1177 - описание коррекции. На прошлой неделе столкнулся - касса со старой прошивкой отказывается печатать чек коррекции без него, хотя он вроде бы как уже не нужен
3 Selma2
 
24.11.23
08:48
В общем, заработало вот так

fptr.setParam(1021, СокрЛП(Кассир));
    fptr.setParam(1203, СокрЛП(КассирИНН));
    fptr.operatorLogin();
    
    Fptr.setParam(1177, "Служебная записка");    
    fptr.setParam(1178, Date(2021,09,01));    
    Fptr.setParam(1179, "00001");
    Fptr.utilFormTlv();
    correctionInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
    Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL_CORRECTION);
    Fptr.setParam(1173, 0);
    Fptr.setParam(1174, correctionInfo);
    
    fptr.openReceipt();

правда, сделала не я)))))
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.