Память

 

 

Home 
Новости 
Разные ККМ 
Астра-100 
Астра-200 
Меркурий-115 
Меркурий-120 
Меркурий-130 
Меркурий-180 
Разное 
Ссылки 
kkm.com.ru 
Фоpум 
3еpкaло 
Библиотека 

 

Параметры записи информации в фискальной памяти Меркурий 115Ф.

Автор предупреждает, что данная информация написана исключительно для целей ремонта и тестирования ККМ «Меркурий-115Ф» и не несет ответственности за использование ее третьими лицами в иных целях, как и за возможные проблемы, возникшие у этих лиц в связи с применением данной информации.

 

Попался нам как-то Мерк 115-й, щедро политый кофе. Вымыли, оттерли спиртом, высушили, но пищит этот гаденыш НП, да еще и таким противным голосом - жуть. Прочитали фискалку и нашли в области Z-отчетов какой-то бред в виде большой полосы одинаковых закорючек в ровном узоре данных. И пришлось нам постигать смысл сей информации.

После целого дня перевода из Hex в Dec и обратно расшифровали всю фискалку за исключением одного байта в конце каждого Z-отчета с ним мы проколупались еще почти целый день, пока не заглянул к нам один очень умный человек и за две минуты не расшифровал его (Оказалось все настолько просто, что долго плевались от ощущения собственной тупости, что не смогли сразу догадаться).

После этого выправили мы все данные, и касса зажила новой жизнью, как будто с ней ни чего и не происходило и никогда она не пила кофе.

Ну а для тех, кто хочет также знать, что к чему в ентом звере по имени БЛОК ФИСКАЛЬНОЙ ПАМЯТИ ККМ МЕРКУРИЙ – 115 Ф, привожу результаты наших изысканий:

 

В начале идет заводской номер кассы (Берутся все байты вместе) и количество снятых фискальных отчетов:

Например № кассы 00123456  -  00  01  E2  40  , а количество фискальных отчетов было 13 – 0D:

00000000:   00  00  00  01  2C  47  00  0D  ¦  00  00  00  00  00  00  00  00

 

Затем дата фискализации (Байты считаются по отдельности):

Например 01.01.04г.  -  01  01  04 , 06 в конце строки – число цифр в пароле НИ (спасибо alex56 :-) ):

00000010:   00  00  00  00  00  00  00  00  ¦  00  00  00  00  01  01  04  06

 

Далее идет ИНН владельца (Байты берутся группами по 3 – при фискализации и перерегистрации он и вводится двумя половинами), а дальше в этой строке идет рег. номер кассы (Байты беруться группами по 2 – тот же принцип), и последним идет пароль налогового инспектора (Берутся все байты вместе):

Например ИНН 111111.111111  -  01 B2 07  и  01 B2 07, рег. номер 1111.1111   -  04 57 и 04 57 , пароль НИ 111111 - 01 B2 07:

00000020:   00  01  B2  07  00  01  B2  07  ¦  04  57  04  57  00  01  B2  07

 

Далее идут записи перерегистраций (если они были сделаны – максимум 4) для примера реквизиты в перерегистрациях идут соответственно 1 – все двойки, 2 – все тройки, 3 – все четверки, 4 – все пятерки (цвета соответствуют строкам, где находятся данные по этим перерегистрациям).

00000030:    00   00  00  00  00   00   00  00   ¦  00   00   02  01  04   06  00   03

00000040:    64  0E  00  03   64  0E   08  AE  ¦  08  AE  00  03  64   0E  00   01

00000050:    00   00  00  00   00  00   00  00   ¦  03   01   04  06   00   05  16   15

00000060:    00   05  16  15  0D  05   0D  05  ¦  00   05   16  15  00   02  00   00

00000070:    00   00  00  00   00  00   04   01  ¦  04   06   00  06  C8  1C  00  06

00000080:    C8  1C  11  5C  11  5C  00   06  ¦  C8  1C   00  03  00   00  00   00

00000090:    00   00  00  00   05  01   04   06  ¦  00   08  7A  23  00   08  7A  23

000000A0:   15   B3  15  B3  00  08  7A   23  ¦  00   04   00  00  00   00  00   00

Красным выделены даты перерегистраций – здесь 1 – 02.01.04, 2 – 03.01.04, 3 – 04.01.04, 4 – 05.01.04.

Синим – первая половина ИНН, голубым – вторая.  

Зеленым – первая половина регистрационного номера, салатовым – вторая.

Фиолетовым – пароль НИ, лиловым – количество цифр в пароле НИ (здесь везде 6)

Тёмно-красным – № фискального Z-отчета на момент регистрации. Он присутствует и в записи первичной регистрации (адреса 30h:31h), но там он всегда нулевой, т.к. ни одного фискального Z-отчета на момент первой регистрации еще не снято. (цвета отображены в версии для распечатки, скачать можно по ссылке внизу страницы)

 

См.Фото

 

Затем до адреса 000000F0 все забито нулями, с адреса 00000100 начинаются записи Z-отчетов:

00000100:   81  01  04  00  98  96  7F  00  ¦  98  96  7F  20  00  FF  FF  FF

Для примера будет одна запись единственного Z-отчета. Первые 3 байта это дата, которая при переводе в десятичную систему выглядит так: Первый байт – это день месяца + 128.  Установленный в единицу старший бит в байте дня - это признак работы в копейках (деноминация). Если он в нуле, значит - работа в рублях, без копеек. Старые версии (с матричным принтером) при снятии фискального отчета, "натыкаясь" на переход (была дата - с нулевым старшим битом, стала - с единичным старшим битом) печатали строку: "Изменение положения десятичной точки".(т.е. убираем первый бит и видим день) далее месяц и год, в данном примере 01.01.04г. Затем идет выручка за день (Берутся все байты вместе), здесь 99 999,99р. – 98 96 7F и возвраты за день (Берутся все байты вместе), здесь 99 999,99р. – 98 96 7F, затем идет контрольная сумма – здесь 20, а в конце записи прописывается 00 – это признак последнего Z-отчета. Контрольная сумма вычисляется следующим путем:

 80 (Это те 128 которые присутствуют в дате) – 01 (Это 1 число месяца) – 01 (первый месяц) 04 (четвертый год) – AD (Сумма выручки 98+96+7F=1AD и берем только один последний байт AD) – AD (возврат за день - вычисляется также как и выручка) = FFFFFF20 – опять же берем последний байт - 20. Если контрольная сумма посчитана неверно или нет 00 после последнего Z-отчета, касса при включении будет пищать НП (когда при включении кассы горит test она как раз и пересчитывает в фискалке все контрольные суммы и сверяет кол-во Z-ов с озушкой) и запускать ее можно будет только через режим налогового инспектора. Z-отчеты идут подряд без промежутков. После признака последнего Z-отчета идут FF до конца фискалки.

 

См.Фото

 

Количество Z-отчетов прописывается в электронном журнале (ОЗУ) и при изменении их количества там их надо тоже править (Чтобы она не пищала НП), а перед количеством Z-отчетов пишется количество снятых в смене контрольных лент, кол-во X-отчетов, затем после кол-ва Z-ов идет номер чека КЛ,  общая сумма КЛ, сумма аннуляций и возвратов, количество продаж (включая аннулированных), аннуляций и возвратов, например контрольных лент было 1 – 01, X-ов было 1 – 01 и Z-ов было 10  -  00  0A, чек КЛ был под № 5 – 00 05, сумма на КЛ была 1,11 – 00 00 00 6F сумма аннуляций была 0,01 – 00 00 00 01, сумма возвратов 0,01 – 00 00 00 01, количество продаж 3 – 00 03, из них аннулированных 1 – 00 01, возвратов 1 – 00 01:

00000010:   01  00  01  00  0A  00  00  00  ¦  00  05  00  00  00  6F  00  00

00000020:   00  01  00  00  00   01  00  03  ¦  00  01  00  01  01  91  92  90

01 – это флаг вкл-выкл озвучивания нажатых клавиш – 01 вкл, 00 выкл. 91 92 90 – начало клише.

 

Если поставить количество Z-отчетов меньше, чем реально прописано в фискалке, то касса не будет обращать внимание на те Z-отчеты, что прописаны далее, и будет их затирать с каждым новым отчетом. Это кроме случая, если надо поставить меньшую дату. Тут надо отключить на пару сек аккумулятор – после включения касса сразу потребует ввести дату и время  (Обычным путем дату в этом случае не поставить), так вот – набрать нужную дату, закоротить 5-ю и 7-ю ноги у фискалки или 2-ю и 4-ю на фискальном модуле, нажать ПИ, убрать перемычку и опять ПИ, поставить время и ПИ – после этого на кассе дата и время пойдут сами, но если понадобится подкорректировать, то пока не затрутся старые Z-отчеты (те которые записаны в фискалке до изменения их количества в электронном журнале) надо будет повторять вышеуказанную процедуру. Кстати если количество Z-отчетов сделать меньше, чем указано в реквизитах последней перерегистрации, накопление на Z-тах будет обнуляться каждый раз и равняться сумме Z-та пока кол-во Z-ов не перевалит за указанное указано в реквизитах последней перерегистрации, а если попытаться установить дату, меньшую чем дата последней регистрации, даже если она будет больше даты последнего Z-та, то надо провести вышеупомянутую операцию (ввод даты через отключение аккумулятора и корочение контактов) (Все это может пригодиться, если оператор ввел случайно неправильную дату и снял Z-отчет – а у наших клиентов это просто болезнь какая-то – любят они кнопки на кассах нажимать, да года вводить из далекого будущего и приходится отматывать дату назад и фискалку править) А иначе если налоговая снимет фискальный отчет по датам выйдет полный бред – например на кассе по случайке ввели 2020 год (Бывало и такое), поработали недельку, а потом дату насильно назад отмотали, а когда налоговая проверяет кассу – она как будто только до середины года работала, а дальше пусто. Объясняется все просто – когда идет запрос по датам, касса натыкаясь на 2020 год останавливается и не смотрит – было ли там что-то еще из подходящих ей по выборке дат т.к. это по идее не возможно. В таких случаях надо снимать отчет по номерам смен – но не будешь же у каждого такого нерадивого клиента записульки оставлять…

Здесь же хранятся пароли кассира и администратора (обычно пароля нет, а если стоит неизвестный пароль, так проще закоротить 5-ю с 7-й ножки у фискалки или 2-ю и 4-ю на фискальном модуле и войти без пароля, а потом запрограммировать нулевой пароль: пароль кассира программируется в режиме ПРОГ 1 ИТ набираешь 7 раз любую цифру - на экране только одна закорючка n останетси и ПИ, тоже самое с администратором только через 2 ИТ).

Например пароль кассира 111111 – 01 B2 07, а пароль администратора 222222 – 03 64 0E:

00000000:   00  00  00  01  B2  07  06  00  ¦  03  64  0E  06  00  00  00  00

06 после паролей – число цифр в пароле

Далее в журнале идет клише, которое программируется по клавише 4. Например СТРОКА КЛИШЕ НОМЕР 11111

00000020:   00  01   00  00  00   01   00  03  ¦  00  01  00  01  01   91  92  90

00000030:   8E  8A  80  20  8A  8B  88  98  ¦  85  20  8D 8E  8C  85  90  20

00000040:   31  31   31  31  31   01   00  07  ¦  01  04  00  00  00  00  00  00 

Клише можно забить и самому – переводи коды из таблицы символов в HEX и все дела.

 

Потом идут время (вначале минуты, потом часы) и дата первой покупки (начала смены) – после Z-отчета обнуляется и появляется после первой покупки (даже не завершенной) или X-отчета. Например время 00:01 – 01 00 и дата 7.01.04г. – 07 01 04

00000040:   31  31  31  31  31  01  00   07  ¦  01  04  00  00  00  00  00  00

 

Затем с адреса 00000050 идут записи продаж. Формат записи продаж такой: первый байт это сумма часов во времени продаж и старшего бита, который принимает следующие виды: A0 – единичная продажа или начало любого чека с множеством продаж (в примере A0+00(00 часов)= A0); 20 – означает продолжение продажи в одном чеке (в примере 20); 60 – аннуляция в чеке (в примере 60) (при аннуляции к минутам аннулируемой продажи прибавляется старший бит 80 – в примере A0 81); 80 – чек возврата (в примере 80); C0 – контрольная лента (в примере C0) (пишется только время и если после снятия КЛ опять пробивать чеки он затирается следующими записями продаж, как идет заполнение ОЗУ после переполнения и снятия КЛ не знаю – слишком долго сидеть и набивать чеки для переполнения. Этим же битом отмечается X-отчет, только в отличие от КЛ пишется полностью время, почему он не стирается следующим чеком и попадает в КЛ). Последняя запись продажи отмечается 00 00 (Если при не завершенном чеке сделать «выкл-вкл» касса напечатает «Чек не действителен ххх» (xxx – это идентификатор версии ПО ККМ), при этом в озу он сохранится без часов во времени и на конце у него будет 00 FF вместо 00 00, следующим чеком эта запись будет затерта) . Количество чеков, пробитых с начала смены или после последней КЛ ни где не прописывается – считается просто по количеству записей, номер чека КЛ в начале озу прописывается просто для того, чтобы касса начинала писать в следующую КЛ только те чеки, что не вошли в предыдущую КЛ. В записи первого чека в смене нет часов, только минуты, вместо часов всегда 00. После времени идет сумма продажи (аннуляции или возврата) и 00. Например опишем одну продажу в 1р - 64, чек с продажей в 0,01р – 00 00 01, аннуляцией 0,01р – 00 00 01, продажей в 0,10р – 00 00 0A, чек возврата 0,01р – 00 00 01, X-отчет и контрольную ленту, пробитые в 00:01 (00 01 , A0 81 , 60 01 , 20 01 , 80 01 , C0 01):

00000050:   00  01  00  00  64  00   A0  81  ¦  00  00  01  00  60  01   00  00

00000060:   01  00  20  01  00  00  0A   00  ¦  80  01  00  00  01  00  C0  01

00000070:   00  00  00  00  C0  01  00   00  ¦  00  00  00  00  00  00  00   00

 

См.Фото

 

В конце озушки с версией s8c пишутся 3 дополнительные строки клише (программируются через 10, 11, 12), флаг размера шрифта (00 – крупный шрифт, 01 – мелкий, программируется через 8) процентные ставки НДС и НСП (программируются через 20, 21, 22, 23), их сумма в чеке и общее накопление по кассе с момента фискализации или перерегистрации.

Например общее накопление на кассе было 23 461,53р. – 00 23 CC A9, три дополнительные строки клише будут выглядеть так: СТРОКА КЛИШЕ НОМЕР 22222, СТРОКА КЛИШЕ НОМЕР 33333 и СТРОКА КЛИШЕ НОМЕР 44444, ставка НДС1 = 11% - 0B, НДС2 = 12% - 0C, НСП1 = 13% - 0D, НСП2 = 14% - 0E (нули, выделенные цветами ставок налогов отмечают адреса, где прописываются суммы налогов пробитых в смене:

000001F00:   FF  FF  FF  01  00  00  00   23  ¦  CC  A9  00  00  00   00  00   00 

000001F10:   00  00   91  92  90  8E  8A  80  ¦  20   8A  8B  88  98   85  20   8D

000001F20:   8E  8C  85  90  20  32  32   32  ¦  32   32   91   92  90   8E  8A  80

000001F30:   20  8A  8B  88  98  85  20  8D  ¦  8E  8C  85   90   20   33  33   33

000001F40:   33  33   91  92  90  8E  8A  80  ¦  20   8A  8B  88  98   85  20   8D

000001F50:   8E  8C  85  90  20  34  34   34  ¦  34   34   0B  0C  0D  0E  00  00

000001F60:   00   00  00  00  00  00   00  00  ¦  00   00   00   00   00   00  00  00

 

См.Фото

 

Общее накопление в старых версиях, начиная с какой не помню (начали накопление писать только на версиях с термопринтером) и по 02:

000001FF0:   00  23  CC  A9  00  00  00  00  ¦   00   00  FF  FF  FF  FF  FF  FF 

 

 

Данный текст подвергался множеству доработок и дополнений.

Если кто что узнает нового – мыльте на sergey_usoltsev@mail.ru.

Удачи!

Mr.Torture.

 Скачать статью (pdf) 

 

 

Примечания к статье:

 От: Бывший г. Москва

Я бы отметил на Вашей странице одну неточность: то, что названо номером перерегистрации, на самом деле - № фискального Z-отчета на момент регистрации. Он присутствует и в записи первичной регистрации (адреса 30h:31h), но там он всегда нулевой, т.к. ни одного фискального Z-отчета на момент первой регистрации еще не снято.

А чтобы в дальнейшем не мучится с двоичными файлами сброшу на "мыло" две программки: конвертирования двоичного образа ФП «Меркурий-115Ф» в текстовый файл и обратно.

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

В связи с чем разрешаю выставить для всеобщего доступа.

Может быть, то, что делают эти программы, уже написано другими: не знаю. Все, что мне было нужно, писал сам, потому мало интересовался творчеством других.

 

Автор предупреждает, что данный пакет программ написан исключительно для целей ремонта и тестирования ККМ «Меркурий-115Ф» и не несет ответственности за использование ее третьими лицами в иных целях, как и за возможные проблемы, возникшие у этих лиц в связи с применением данных программ. Скачать

 

 От: Бывший г. Москва

Еще одна, даже не поправка, а просто пояснение. Цитирую с Вашей страницы:

"Первый байт – это день месяца + 128 (т.е. убираем первый бит и видим день)". Установленный в единицу старший бит в байте дня - это признак работы в копейках (деноминация). Если он в нуле, значит - работа в рублях, без копеек. Старые версии (с матричным принтером) при снятии фискального отчета, "натыкаясь" на переход (была дата - с нулевым старшим битом, стала - с единичным старшим битом) печатали строку: "Изменение положения десятичной точки". В новых (после 98г.) ККМ такого перехода естественым путем образоваться не могло, а искусственным - не пробовал. Может быть, этот кусок программы и убрали за ненадобностью

 

Замечания приняты, текст поправлен.

 

Rambler's Top100

 

Copyright(c) 2004 Knots. All rights reserved.
Knots01@rambler.ru

    

Hosted by uCoz