Постараюсь ответить на Ваш запрос по пунктам ...
1. Нет, не правильно. Требуется только вызов процедуры:
Код: Выделить всё
If Honest::CheckReceipt(...)
ПЕЧАТЬ ЧЕКА
end
Honest::CheckReceipt() определяет вид требуемой проверки (разрешительная или ТС ПИоТ) и уже вызывает нужный
метод класса (Honest.CheckCodes() или Honest.PIoT_CheckCodes()). Т.е. это такой селектор, обеспечивающий
совместимость на переходной время. Просто меняем флаг gContact.bPIoT и получаем результат из разных систем.
zmi писал(а): 17 Февраль 2026, 17:41
это проверка на дублирование в одном чеке или в разных.
Задача: обеспечить блокировку повторного выбытия кодов маркировки (в разных чеках).
Вы можете либо это сделать самостоятельно (формировать какой-нибудь список КИ (не путать с КМ !) и проверять
по нему была ли уже продажа марки, либо при включённой опции PIoT:UseLMCheckDubl - контроль дублей делает класс.
Здесь есть небольшая хитрость. Контролировать дубли нужно только в том случае, если ТС ПИоТ сообщил, что выполнял
проверку марок в режиме Off-Line. Что и реализовано в классе через ПО ЛМ Честный ЗНАК.
Можно ли тупо контролировать дубликаты всегда, например перед проверкой ?
Наверно да, ничего плохого в этом нет. Просто лишнее действие.
К тому же ПО ЛМ ведет обслуживание БД проданных марок, а в классе есть методы их выгрузки / загрузки.
zmi писал(а): 17 Февраль 2026, 17:41
В текущем у меня контроль дублей по очереди есть, надо ли табличку проданных делать?
Я так понимаю, что здесь речь идёт о контроле дубликатов внутри одного чека (сценарий 15).
Отлично если это уже сделано. Или можно делать с помощью Honest::CheckUniqueCodes() - см. примеры.
У нас есть такое понятие, как объединение, поэтому мы делаем ещё проверку на дубли при формировании
списка марок в чеке на разрешительную проверку:
Код: Выделить всё
Clear(qCodes)
qCodes.GS1 = Atol::RecodeMarking(qItems.Dump)
qCodes.Price = Round(qItems.Price,0.01) * 100 ! Для проверки МРЦ
qCodes.FractionalAmount = qItems.itemFractionalAmount ! 1291 Дробное количество маркированного товара
qCodes.ProductName = Clip(Left(qItems.Name)) ! 1030 Наименование предмета расчёта (для сообщения об ошибке)
! Проверка дубликатов КМ в чеке
If Honest::CheckUniqueCodes(qCodes.GS1, |
qUniqueCodes, |
qCodes.FractionalAmount, |
'') ! '' - Без сообщений
Add(qCodes)
else
Honest::Message('ВНИМАНИЕ ! ПЕЧАТЬ ЧЕКА ОТМЕНЕНА.||' & |
'Обнаружен дубликат кода маркировки в чеке.|' & |
'Устраните проблему и повторите печать.||' & |
qCodes.ProductName & '|' & Atol::ClearMarking(qCodes.GS1))
bPrintCheck = False ! Прервать печать чека
Free(qCodes)
Break
end ! If Honest::CheckUniqueCodes(