Почему после обновления УТ 10.3 не закрывается кассовая смена?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

После установки обновления 10.3.72.1 многие пользователи столкнулись с критической ошибкой при попытке закрытия кассовой смены. Система выдает сообщения об ошибках вида Переменная не определена или Процедура или функция с указанным именем не определена, ссылаясь на модули, связанные с ЕГАИС или РозничныеПродажиКлиент. Давайте разберемся, как проанализировать эту ситуацию и устранить неисправность.

Выясняем причину возникновения ошибки

Основная причина кроется в некорректной директиве компиляции кода в модуле объекта документа ЧекККМ. Разработчики при обновлении вынесли некоторые функции, отвечающие за работу с оборудованием (ККТ) и проверку марок, в модули, доступные только на клиенте. Однако, при закрытии смены происходит попытка вызова этих процедур на сервере, где соответствующие клиентские переменные и функции отсутствуют. Это приводит к прерыванию процесса закрытия смены.

Разбираем способ исправления через перенос директивы

Одним из официальных методов исправления, предложенных в сообществе, является изменение директивы компиляции в модуле объекта документа ЧекККМ. Рассмотрим этот процесс по шагам:

  1. Откройте Конфигуратор и найдите документ ЧекККМ.
  2. Откройте его Модуль объекта.
  3. Найдите функцию ДанныеДляПробитияЧека.
  4. Перед этой функцией обычно находится директива компиляции. Вам необходимо переместить директиву #Если Клиент Тогда так, чтобы она охватывала вызываемые клиентские методы.

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

Альтернативный вариант: правка кода и комментирование

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

Если в коде вы видите вызовы, подобные представленным ниже, вы можете временно закомментировать их, если функционал ЕГАИС или проверка КМ (контрольных марок) не используются в вашем торговом процессе:


// РозничныеПродажиКлиент.ЗакрытьСессиюПроверкиКМНаККТ(...) - закомментировано для обхода ошибки
// ИнтеграцияЕГАИСКлиент.ПередатьНемедленно(...) - закомментировано

Данный метод позволяет системе успешно завершить процедуру закрытия смены. Однако, при обновлении на следующие релизы (например, 10.3.72.2 и выше) обязательно проверяйте наличие исправлений от вендора, чтобы заменить «костыли» на штатный код.

Как продолжить работу, если исправление требует времени

Если вы не являетесь программистом или ожидаете помощи специалиста, для продолжения текущей работы можно воспользоваться Тестом драйвера ККТ. Это внешняя утилита от производителя вашего кассового оборудования.

  1. Закройте смену напрямую через интерфейс Теста драйвера (команда «Закрыть смену» или «Снять Z-отчет»).
  2. Убедитесь, что ККТ успешно напечатала отчет и обнулила счетчики.
  3. После этого 1С «поймет», что смена закрыта, что позволит продолжить оформление документов на следующий день.

Заключение и рекомендации

Проанализировав данную ситуацию, мы выяснили, что ошибка носит системный характер в релизе 10.3.72.1. Мы настоятельно рекомендуем:

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

← На главную