В процессе работы с программой 1С:Розница 2.3 пользователи часто сталкиваются с неприятной ситуацией: при оформлении продажи чек физически выходит из кассового аппарата (ККТ), однако в интерфейсе программы (РМК) товар остается в списке, а само окно становится «бледным» и перестает реагировать на нажатия. Для восстановления работы приходится принудительно закрывать программу через диспетчер задач, что нарушает последовательность учета и нервирует кассиров. Проанализируем причины этого поведения и разберем по шагам способы решения проблемы.
Как показывает практика и обсуждения специалистов, наиболее часто эта проблема проявляется на платформе версии 8.3.18.1208. Данная версия признана нестабильной при работе с торговым оборудованием и механизмами фискализации. Программа отправляет команду на печать, ККТ ее выполняет, но платформа не может корректно обработать обратный ответ от драйвера кассы. В результате интерфейс блокируется, ожидая подтверждения, которое «потерялось» в недрах системных вызовов.
Рассмотрим порядок действий для устранения этой причины:
В современных версиях Розницы внедрен механизм фоновой печати чеков. Если программа не смогла мгновенно подтвердить статус чека, запись о нем может «повиснуть» в специальном регистре. Проанализируем ситуацию, когда ККТ уже напечатала чек, а 1С об этом «не знает».
Для решения этой проблемы выполним следующие шаги:
ОчередьФискализации (в разных релизах название может незначительно варьироваться, например, связанные с состоянием оплаты чеков).При продаже маркированного товара (табак, обувь, одежда) 1С выполняет запрос к информационной системе маркировки для проверки кода. Если в момент пробития чека возникают микроразрывы связи или сервер Честного ЗНАКа отвечает слишком долго, возникает эффект «бледного окна». ККТ успевает получить команду на фискализацию, так как у нее свои таймауты, а 1С продолжает ждать ответа от внешней компоненты проверки марок.
Для стабилизации работы рекомендуется:
Иногда корень проблемы кроется не в 1С, а в настройках операционной системы, особенно на Windows 7 или Windows 10. После передачи данных на кассу система может решить, что USB-порт больше не активен, и кратковременно снизить на него питание или перевести в режим экономии. Этого достаточно, чтобы статус «Успешно пробито» не вернулся в 1С.
Выясним, как это исправить:
Драйверы ККТ обмениваются данными с 1С через локальные сетевые порты (например, порт 5555). Антивирусы могут блокировать входящий трафик от драйвера к программе, считая его подозрительным. При этом команда на печать (исходящая) проходит, а подтверждение (входящая) блокируется.
Рассмотрим решение:
Добавим процессы 1cv8.exe и исполняемые файлы драйвера ККТ (например, fptr10.exe для Атола) в исключения антивируса и брандмауэра Windows. Также полезно добавить в исключения порты, которые использует ваше торговое оборудование.
Если вы являетесь программистом и хотите программно отследить момент зависания, обратите внимание на процедуры в модуле менеджера документа ЧекККМ или в обработках РМК, отвечающих за фискализацию. Посмотрим на пример того, как система может ожидать результат:
// Пример логики ожидания статуса фискализации
Результат = ПодключаемоеОборудованиеРТ.ПробитьЧек(Объект.Ссылка, ПараметрыКассы);
Если Результат.Результат Тогда
// Если ККТ ответила Истина, меняем статус чека
Объект.СтатусЧека = Перечисления.СтатусыЧековККМ.Пробит;
Иначе
// Если здесь возникла блокировка или таймаут, окно РМК зависнет
ТекстОшибки = Результат.ОписаниеОшибки;
КонецЕсли;
Проанализируем ситуацию: если функция ПробитьЧек внутри себя вызывает внешнюю компоненту драйвера, которая «ушла в себя» из-за ошибки платформы 1208, основной поток 1С будет заблокирован бесконечно. Именно поэтому обновление платформы является приоритетным решением в данной теме.
Подведем итоги. Если ваша 1С:Розница «чудит» и зависает при печати чеков, выполните следующие действия в строгом порядке:
Соблюдение этих рекомендаций позволит стабилизировать работу кассового узла и избежать потерь данных о продажах.