Имя: Пароль:
1C
 
Получение содержимого чека из "Честного Знака"
,
0 MWWRuza
 
гуру
25.02.24
13:00
Добрый день!
Я хоть и пишушу свои разработки под клюшки, но это не имеет значения, тема общая...
Вот такой отчет:





Что выводить в поле с красными вопросиками? По логике(да и вообще, по здравому смыслу), 355, как сумма всех строк чека.
НО!!!
В JSON файле из API ЧЗ, 200... В описании API, это поле описано так:





Но, в файле так:





Почему?
При этом, если в чеке одна позиция, или несколько, но они одинаковые, то все верно:





Что за нах?
Я чего-то не понимаю в их логике, или это ошибка в Честном Знаке - ?
Такое ощущение, что они в "total" выводят сумму всех позиций по последней одинаковой позиции... Как так-то?
Писать в поддержку? Не проблема, но, я хотел прежде услышать ваше мнение, может я чего-то туплю...
Вот сам файл JSON чека тремя позициями: https://cloud.mail.ru/public/AAzk/RX6wz5gy1
1 Смотрящий
 
25.02.24
13:00
Скидку они так показывают. 355 - 200 = 155 рэ скидки
2 MWWRuza
 
гуру
25.02.24
13:19
Ну, можно было бы предположить, но нет в этих чеках никаких скидок... (Точнее, даже не только в этих чеках, а у этой фирмы вообще). Да даже, если бы и так, тогда почему на чек с одной позицией(или несколько, но одинаковых), такого нет? :-)
3 stopa85
 
25.02.24
15:21
Вы выгрузку сделали по товарной группе молочка. Вот по ней сумма 200.
4 MWWRuza
 
гуру
25.02.24
17:52
(3) Да, по ответу очень похоже на это.
Но, НЕТ. Было бы так, было бы все понятно, и вопроса бы не было...
По описанию параметр "pg" не обязательный:





и я его не указываю в адресе запроса(в этом запросе тела запроса нет, все в адресе):





Так, что, причина не в этом...
5 MWWRuza
 
гуру
25.02.24
19:01
Да, в в ответе на запрос, откуда я беру ID этого чека, он идет двумя строками, с одним ID:





Хотя, не понятно почему - реквизит "productGroups" - это у них массив, в [], могли бы в одной строке, с одним ID сделать так: [13, 8]... но, нет, сделали почему-то 2 строки с группами [13] и второй [8]...
Ну, хотя тут наверно можно понять почему - реквизит - "processingDateTime" - время обработки сервером отличается на 1 секунду, и у одного продукта есть вес, но нет объема, у другого наоборот... А делать эти параметры массивами или вложенными объектами JSON, они поленились :-(

Ну, да ладно, когда я сам чек запрошиваю, это не должно влиять - я то не указываю группу, вообще... Чек прилетает один, общий, только общая сумма в нем расчитана для одной группы.
6 Гена
 
гуру
25.02.24
19:39
(0) Мой ответ на первую картинку с пятью вскл: 200.

Ход размышлений. ЧМ не налоговая и ему не нужны полные фискальные суммы по чекам. Например, ЧестныйГена, которому поручили отслеживать всех ген. Мало ли какую ещё светотень накупил в одной тележке покупатель. Понятно, что касса отправила мне полный чек. Но мне в нём нужны только строчки по генам, их я и буду выдавать на запросы, только их и буду суммировать.
7 stopa85
 
25.02.24
19:47
(5) к слову, а что это за идентификатор чека? Из чего он состоит и как его получают?

Я пока только понял, что там в середине номер фискального накопителя.

Можно как-то получить чек зная его ФН, ФП, номер чека за смену?
8 MWWRuza
 
гуру
26.02.24
00:24
(6) Да, но Гена покупает маркированный товар, пусть разных групп, в одном чеке молоко и вода... И отбор по конкретной группе нигде не установлен. Почему они считают, что можно посчитать сколько Гена заплатил за молоко, а воду, что, он хапнул нахаляву???
Кстати, немаркированные товары в эти чеки из ЧЗ не попадают, я много чеков просмотрел, в них нет немаркированной продукции, только молоко и вода. И это, в принципе понятно - ЧЗ нет дела до немаркированных товаров, поэтому, эти чеки все равно не соответствуют чекам в ФНС... В них однозначно кроме молока с водой есть и другие товары. Но, по маркированным, должны правильно сумму считать, ИМХО...

(7) Да х.з... Как-то не задавался целью проанализировать это...
Вот например:





Его ИД: 23637281440501109803482
Ном ФД: 2363
Ном ФН: 7281440501109803

ФД + ФН, получается: 23637281440501109803

Остается 482.
Что это такое, понятия не имею, видимо какя-то их константа, возможно привязка к фирме(хотя, три знака для этого явно мало), может вид документа-запроса, непонятно, но она неизменна для всех чеков...
ФП они вообще не передают... Я сначала не посмотрел, был уверен, что есть, QR нарисовал, думал выведу такой-же как на чеке из ККТ :-) Ага, сЧаСт... Без ФП его не сформировать. Убирать пока не стал, мало-ли, вдруг начнут передавать в какой-нибудь следующей версии API :-)

А получают его вот таким запросом:





При этом, там, в ответе, не только чеки, а все доки, УПД со своими длинными ИД, как в именах файлов, АктыСписания, со своими ИД...
PS Пока писал, подумал - надо еще отбор по виду доков в отчет добавить :-)
9 stopa85
 
26.02.24
06:43
(9)
ФД + ФН, получается: 23637281440501109803


У меня это правило не всегда срабатывает
10 MWWRuza
 
гуру
28.02.24
16:02
(9) Не знаю, почему не срабатывает.
Вот скриншот от клиента, у которго три кассы:





Все то-же самое, номера ФД + ФН(естественно, разные для трех касс), и в конце те-же 482(что это такое, можно только гадать, но, ясно одно - с клиентом не связано).

PS И, кстати, у этого клиента сигареты есть, они тоже туда попадают, вместе с молоком и водой, хотя, по описанию API - не должны, запрос типа только для этих двух ТГ.
11 MWWRuza
 
гуру
29.02.24
12:49
+(10) хотя, по описанию API - не должны, запрос типа только для этих двух ТГ.

Скачал свежее описание API, в нем исправили:

"Метод возвращает список документов, влияющих на баланс склада участника оборота товаров,
за запрашиваемый период (разница между начальной и конечной датами не более 92 дней) для
товарных групп «Антисептики и дезинфицирующие средства», «Биологически активные
добавки к пище», «Молочная продукция» и «Упакованная вода»."

Там все 4 группы, по которым ОСУ. Но, все равно, про сигареты нет ни слова, но они в ответ сервера попадают.
"Не видишь суслика? А он есть!" :-)
12 stopa85
 
01.03.24
11:46
(10) А я знаю. Нужно копать в сторону чеков Коррекции.

Если есть, указывается не его ФП, а исходного. Ну... похоже.
13 stopa85
 
01.03.24
12:02
А вот тут описана формула этого волшебного кода

https://честныйзнак.рф/info/releasenotes/chto-novogo-v-sisteme-s-22-07-2022-po-28-07-2022/?sphrase_id=322970
14 MWWRuza
 
гуру
01.03.24
14:55
Ага, спасибо!
482 - получаетя: 4 - версия ФФД 1.2, а 82 - "Уведомление о реализации".
15 stopa85
 
01.03.24
22:15
(12) нет чеки коррекции тут не причем
Чек на реализацию 555357280440500121123482 от 01.03.2024 от 17:00
А имеет он порядковый номер CheckNumber="84598" от 09:00

В ЧЗ он попадает с лагом в 8 часов, номера не соответствуют.

Единственное как я могу сопоставить одно с другим: это коды маркировки в составе чека.
16 MWWRuza
 
гуру
02.03.24
14:03
А что такое - "CheckNumber", где Вы его берете, как получаете?
В ответе JSON реквизит называется: "fiscalDocumentNumber" если что, может Вы что-то другое пытаетесь вместо него подтянуть?

И по времени... Их там два: "docDate" - как я понял, это дата/время самого чека, и "receivedAt" это дата/время обработки документа сервером ЧЗ... Обычно разница в несколько секунд, но, иногда может отличаться часами, и даже сутками.
17 stopa85
 
03.03.24
14:13
(16) это номер чека
Из драйвера кассы.
18 MWWRuza
 
гуру
03.03.24
20:38
А что такое "номер чека Из драйвера кассы" - ?
Это порядковый номер чека(непонятно, за какой период?), или номер ФД(Фискального документа), сквозная нумерация всех ФД от "отчета о регистрации", до последнего фискального документа - чека, или отчета о закрытии смены(если она закрыта) - ? Номер ФД не совпадает с номером Чека, так, как в его счетчик попадают все ФД - отчеты о регистрации/перерегистации, отчеты об открытии/закрытии смены, отчеты о состоянии расчетов.
В ЧЗ используется именно номер ФД, ни о каких номерах чеков они и не знают...
19 stopa85
 
03.03.24
21:53
Номер ФД. Конечно.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн