После установки обновления 10.3.72.1 многие пользователи столкнулись с критической ошибкой при попытке закрытия кассовой смены. Система выдает сообщения об ошибках вида Переменная не определена или Процедура или функция с указанным именем не определена, ссылаясь на модули, связанные с ЕГАИС или РозничныеПродажиКлиент. Давайте разберемся, как проанализировать эту ситуацию и устранить неисправность.
Основная причина кроется в некорректной директиве компиляции кода в модуле объекта документа ЧекККМ. Разработчики при обновлении вынесли некоторые функции, отвечающие за работу с оборудованием (ККТ) и проверку марок, в модули, доступные только на клиенте. Однако, при закрытии смены происходит попытка вызова этих процедур на сервере, где соответствующие клиентские переменные и функции отсутствуют. Это приводит к прерыванию процесса закрытия смены.
Одним из официальных методов исправления, предложенных в сообществе, является изменение директивы компиляции в модуле объекта документа ЧекККМ. Рассмотрим этот процесс по шагам:
ЧекККМ.Модуль объекта.ДанныеДляПробитияЧека.#Если Клиент Тогда так, чтобы она охватывала вызываемые клиентские методы.Важно помнить, что любые правки кода конфигурации являются вмешательством в логику системы. Перед проведением данных работ обязательно сделайте резервную копию базы данных.
Если перемещение директив не приносит желаемого результата, пользователи применяют метод точечного комментирования проблемных участков кода, вызывающих ошибку. Проанализируем, как это выглядит на практике:
Если в коде вы видите вызовы, подобные представленным ниже, вы можете временно закомментировать их, если функционал ЕГАИС или проверка КМ (контрольных марок) не используются в вашем торговом процессе:
// РозничныеПродажиКлиент.ЗакрытьСессиюПроверкиКМНаККТ(...) - закомментировано для обхода ошибки
// ИнтеграцияЕГАИСКлиент.ПередатьНемедленно(...) - закомментировано
Данный метод позволяет системе успешно завершить процедуру закрытия смены. Однако, при обновлении на следующие релизы (например, 10.3.72.2 и выше) обязательно проверяйте наличие исправлений от вендора, чтобы заменить «костыли» на штатный код.
Если вы не являетесь программистом или ожидаете помощи специалиста, для продолжения текущей работы можно воспользоваться Тестом драйвера ККТ. Это внешняя утилита от производителя вашего кассового оборудования.
Теста драйвера (команда «Закрыть смену» или «Снять Z-отчет»).ККТ успешно напечатала отчет и обнулила счетчики.Проанализировав данную ситуацию, мы выяснили, что ошибка носит системный характер в релизе 10.3.72.1. Мы настоятельно рекомендуем:
Совместная работа с кодом 1С требует осторожности, но понимание контекста выполнения процедур на сервере и клиенте позволяет быстро находить и устранять подобные сбои.