В процессе автоматизации розничной торговли технические специалисты часто сталкиваются с крайне неприятной проблемой: при попытке пробить фискальный чек программа 1С мгновенно и без предупреждения закрывается («вылетает» с рабочего стола). При этом сам чек на кассовом аппарате (например, АТОЛ 30Ф) может успешно физически распечататься. Никаких сообщений об ошибках на экране не появляется, а в журнале регистрации 1С не фиксируется никаких предупреждений.
Особенно часто такая ситуация возникает после планового обновления прошивки контрольно-кассовой техники (ККТ) под требования ФФД 1.05 или ФФД 1.2. В этой статье мы подробно разберем, почему происходит этот сбой, как устроен механизм взаимодействия платформы 1С с драйверами АТОЛ и предоставим пошаговый алгоритм решения проблемы.
Давайте проанализируем техническую сторону данного сбоя. Внезапное закрытие приложения без генерации стандартного окна с ошибкой 1С (так называемый «тихий вылет») указывает на то, что операционная система Windows принудительно завершила процесс 1cv8.exe или 1cv8c.exe. Это происходит из-за критического сбоя в адресном пространстве оперативной памяти — ошибки Access Violation (код исключения 0xc0000005).
Схема возникновения ошибки выглядит следующим образом:
Именно поэтому чек выходит из кассы, но сама программа 1С закрывается, не успевая зафиксировать в базе данных факт успешного проведения и пробития документа.
Рассмотрим ситуацию, когда системный администратор скачивает и устанавливает на компьютер новейший драйвер АТОЛ 10.х (ДТО 10), но при попытке пробития чека 1С все равно продолжает вылетать, а в настройках торгового оборудования по-прежнему отображается версия 9.11.0.5549.
Происходит это по двум основным причинам:
.dll во временные папки профиля пользователя. В дальнейшем программа использует именно кэшированные файлы, полностью игнорируя новые версии драйверов, установленные в операционной системе.Для того чтобы полностью избавить систему от аварийных завершений работы при печати чеков, необходимо перевести связку «1С — ККТ» на современный драйвер АТОЛ 10-й версии. Разберем этот процесс по шагам.
Перед установкой нового программного обеспечения необходимо полностью очистить операционную систему от остатков старых драйверов, чтобы исключить конфликты динамических библиотек в системных папках Windows:
Перейдите на официальный сайт компании АТОЛ и скачайте актуальный дистрибутив драйвера ККТ 10-й версии. При установке критически важно соблюдать правило соответствия разрядности (битности):
Даже если на вашем компьютере установлена 64-разрядная операционная система Windows, платформа 1С:Предприятие 8.3 для работы с базовыми или типовыми конфигурациями (такими как УТ 10.3) чаще всего запускается в 32-разрядном режиме (x86). Интеграционная библиотека драйвера загружается непосредственно внутрь процесса 1С, поэтому разрядность драйвера АТОЛ должна совпадать с разрядностью запускаемой платформы 1С. Рекомендуется устанавливать 32-битный (x86) вариант драйвера ККТ АТОЛ 10.
Запустите установщик ДТО 10, следуйте инструкциям мастера установки и по завершении процесса снова выполните перезагрузку операционной системы.
Этот шаг является строго обязательным. Если его пропустить, 1С продолжит загружать аварийную библиотеку старой версии из своего внутреннего кэша.
C:\Users\<Имя_Вашего_Пользователя>\AppData\Roaming\1C\1cv8\ExtCompT\
ExtCompT. Именно здесь хранятся устаревшие кэшированные динамические библиотеки драйверов ККТ.Примечание: папка AppData по умолчанию скрыта операционной системой. Чтобы получить к ней доступ, включите отображение скрытых файлов и папок в настройках проводника Windows или введите в адресную строку команду %appdata%.
Для того чтобы конфигурация 1С:Управление торговлей 10.3 смогла работать со структурой десятого драйвера АТОЛ, ей необходима обновленная обработка обслуживания (интеграционная компонента). Получить ее можно несколькими путями:
После получения файла интеграции (обычно это архив типа ATOL_KKT_10.zip или обработка формата .epf) выполните следующие действия в программе 1С:
Настоятельно не рекомендуется пытаться просто переназначить драйвер внутри старой карточки подключенного оборудования. Создайте новое подключение с нуля:
При использовании драйверов 9-й версии для отправки чеков в ОФД часто применялась внешняя утилита службы EoU (Ethernet over USB), которая функционировала отдельно. В 10-й версии драйверов рекомендуется перейти на современную и гораздо более стабильную технологию EoT (Ethernet over Transport).
При этой технологии сама служба десятого драйвера АТОЛ берет на себя все функции сетевого моста. Настроить это можно через внешнюю утилиту «Тест драйвера ККТ»: перейдите в раздел «Свойства» -> «Параметры ККТ» -> «ОФД» и установите канал обмена данными «EoT». Это предотвратит возможные зависания и тайм-ауты при обмене данными между 1С и кассой в момент отправки фискальных документов оператору данных.
Ниже приведен пример кода, иллюстрирующий, как платформа 1С обращается к методам внешней компоненты при правильном подключении драйвера нового поколения:
// Пример программного подключения и инициализации компоненты ДТО 10
РезультатПодключения = ПодключитьВнешнююКомпоненту("ОбщийМакет.ИнтеграционнаяКомпонентаАтол10", "Atol_KKT", ТипВнешнейКомпоненты.Native);
Если РезультатПодключения Тогда
ДрайверККТ = Новый ("AddIn.Atol_KKT.Atol_KKT_10");
ДрайверККТ.УстановитьПараметрыПодключения(ПортККТ, СкоростьККТ);
Если ДрайверККТ.Подключить() = 0 Тогда
Сообщить("Связь с кассовым аппаратом АТОЛ успешно установлена!");
Иначе
ВызватьИсключение "Ошибка подключения устройства: " + ДрайверККТ.ОписаниеОшибки;
КонецЕсли;
КонецЕсли;
Выполнив указанные шаги по очистке кэша внешних компонент и полному переходу на драйвер АТОЛ версии 10.х, вы устраните коренную причину возникновения критической ошибки памяти Access Violation. Ваша программа 1С:Управление торговлей перестанет аварийно закрываться, а проведение документов и печать чеков будут происходить стабильно и без потери важных данных в информационной базе.