Имя: Пароль:
1C
1C 7.7
v7: АТОЛ. Товар с маркировкой без фактической проверки КМ в ФФД 1.2.
0 programerfree
 
15.10.24
15:33
Доброго времени суток.
Используется: 1С ТиС 7.7 и драйвер АТОЛ 10.9.1.0.
Имеется обработка fr_comm.ert для взаимодействия с драйвером АТОЛ. В данной обработке реализовано пробитие чека на АТОЛ 55Ф. Сейчас добавляю функционал работы с маркированным товаром "Честный знак".
Из документации к драйверу понял, что перед регистрацией товара необходимо выполнить алгоритм проверки кода маркировки: beginMarkingCodeValidation(), getMarkingCodeValidationStatus() и acceptMarkingCode().

Данная проверка не всегда возможна из-за нестабильного интернет соединения. После успешного прохождения проверки LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT (тег 2106) содержит значение 15. Попробовал не выполняя проверку вручную задать LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT = 15 и выполнить acceptMarkingCode().
В итоге получил: (422) Данный КМ отсутствует в таблице.

Есть ли возможность "рассказать" ФР, что проверка прошла успешна без фактического прохождения самой проверки?
1 Злопчинский
 
15.10.24
16:10
есть готовые решения.
без почты - ССЗБ.
2 programerfree
 
15.10.24
16:14
(1) Пока попадались решения с полноценной проверкой.

Например:
ФФД 1.2 - пробитие чека через через COM драйвер ККМ v10 (АТОЛ) - пример с маркировкой
3 Злопчинский
 
15.10.24
16:23
Сорри, не дочитал по существу (0)
4 programerfree
 
15.10.24
16:54
(0) (422) Данный КМ отсутствует в таблице

По описанию ошибки выполнения acceptMarkingCode() предполагаю, что при начале проверки beginMarkingCodeValidation() КМ записывается в память ФР. Далее после получения результата проверки getMarkingCodeValidationStatus() LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT = 15 выполняется подтверждение КМ acceptMarkingCode().
После этого заполняются необходимые теги для регистрации товара и при самой регистрации registration() ФР берет КМ из памяти проверенных...
Ошибка скорее всего говорит, что при выполнении acceptMarkingCode() в памяти ФР нет КМ.

И нужно ли вообще acceptMarkingCode(), если в памяти ФР будет КМ и LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT = 15.
Может возможно все необходимые теги записать руками без фактической проверки?

Пока мысли такие.
5 programerfree
 
18.10.24
10:42
(0) Дополнение к основному вопросу.

Из информации о значениях [М] ( https://markirovka.ru/knowledge/tovarnye-gruppy/obschie-voprosy-gis/znachenie-m-v-fiskalnykh-dokumentakh-chekakh )
понял, что возможны случаи, когда проверка не будет выполнена и это не помешает дальнейшему формированию и пробитию чека. До этого пытался имитировать положительный результат проверки, т.к. интернет соединение не стабильное и проверка не всегда возможна.

Сделал цикличное получение результата проверки getMarkingCodeValidationStatus() на протяжении заданного времени. Выход из цикла выполняется или по истечению времени или по получению результата проверки ПустоеЗначение(FR.getParamBool(FR.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))=0.
После цикла выполняется acceptMarkingCode().

Из документации наряду с acceptMarkingCode() есть еще declineMarkingCode() и cancelMarkingCodeValidation().

Как правильно должен выглядеть часть алгоритма в случае выходы из цикла проверки по истечению времени?
Так же выполнять acceptMarkingCode() и в результате статус будет не [М+], а [М]?