При переходе на онлайн-кассы по требованиям 54-ФЗ в конфигурациях на обычных формах (например, в «1С:Управление торговлей 10.3») специалисты нередко сталкиваются со сбоем на этапе пробития чека. В момент печати из кассового документа (например, Приходного кассового ордера) система аварийно прерывает выполнение операции и выводит критическое системное сообщение: Access violation at address ... in module 'v8_XXXX_XX.tmp'. Read of address 00000000 (Нарушение прав доступа при чтении адреса 00000000). При этом открытие смены и тестовое подключение в справочнике подключаемого оборудования проходят успешно.
Разберем природу этого сбоя, выясним, почему он возникает даже на чистых установках, и рассмотрим шаги, необходимые для его полного устранения.
Файлы с маской вида v8_XXXX_XX.tmp в каталоге временных файлов операционной системы (%TEMP%) представляют собой двоичные динамические библиотеки (DLL), которые платформа 1С распаковывает из макетов внешних обработок обслуживания (например, ATOLkkt.epf) непосредственно перед инициализацией драйвера оборудования. В случае с кассами АТОЛ речь идет о компонентах интеграции FprnM1C82_54FZ.dll или FprnM1C.dll.
Ошибка нарушения прав доступа при чтении адреса 00000000 означает разыменование нулевого указателя (NULL-pointer) в скомпилированном машинном коде библиотеки драйвера. Как правило, это происходит внутри метода СформироватьЧек (CheckPackage), когда парсер внешней компоненты не находит обязательного XML-узла или параметра, ожидавшегося в структуре фискального пакета, и пытается обратиться к несуществующей области памяти.
Проанализируем основные причины этой несовместимости:
ATOLkkt.epf из общего каталога внешних обработок на сайте обновлений часто приводит к тому, что обработка ориентирована на более свежий стандарт БПО или более новый релиз конфигурации, чем текущая установленная база. В результате формируемый XML-пакет не соответствует ожиданиям конкретной сборки драйвера.ATOLkkt.epf, может не совпадать по подверсии с системными библиотеками АТОЛ (fptr.dll), установленными инсталлятором ДТО в операционной системе..tmp в каталоге %TEMP%.Самое эффективное решение проблемы — восстановить соответствие между версией конфигурации и используемой обработкой обслуживания. Не следует использовать сторонние или универсальные файлы, загруженные вне рамок установленного релиза.
Выполним следующие действия:
1c\trade\10_3_40_1\TradeWareEpf\).ATOLkkt.epf.TradeWareEpf установленного релиза.Если простая замена файла не помогла, необходимо синхронизировать системную часть драйвера с компонентой из обработки:
%TEMP%) и системный кэш 1С, чтобы удалить ранее распакованные файлы v8_*.tmp.KKT_8_14_02_00_Full.exe) от имени администратора.Если ошибка сохраняется, выясним точное место сбоя с помощью отладки. Для этого запустим конфигуратор в режиме отладки и установим точку останова в модуле объекта обработки обслуживания ATOLkkt.epf внутри функции печати чека.
Рассмотрим типовой фрагмент взаимодействия с драйвером:
Попытка
Результат = ОбъектДрайвера.СформироватьЧек(ПараметрыПодключения.ИДУстройства, Кассир, Электронно, ДанныеЧека, НомерЧека, НомерСмены);
Исключение
ОписаниеОшибки = ОписаниеОшибки();
ЗаписьЖурналаРегистрации("ОшибкаККТ", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки);
ВызватьИсключение;
КонецПопытки;
Посмотрим на входящую переменную ДанныеЧека. В ней формируется XML-пакет. Обратим внимание на следующие узлы:
none, в то время как более новые ожидали числовые идентификаторы.Электронно установлен в значение Истина, обязательно должны быть переданы телефон или адрес электронной почты.Также рекомендуется включить подробное логирование в настройках теста драйвера АТОЛ. Журнал работы библиотеки FprnM1C82_54FZ.log покажет XML-строку непосредственно перед аварийным завершением, что позволит сразу определить некорректный атрибут.
Если библиотека драйвера падает сразу в момент обращения к ее методам, не успев обработать XML, проверим системную политику защиты от выполнения данных (DEP):
1cv8.exe в список исключений, либо переключим режим в состояние «Включить DEP только для основных программ и служб Windows».Соблюдение соответствия релиза конфигурации, поставляемой с ним обработки из каталога TradeWareEpf и соответствующей версии ДТО гарантирует стабильную фискализацию чеков без падения платформы.