Как исправить ошибку «Поле объекта не обнаружено (ОблачнаяККТ)» в 1С:Розница 2.3 при печати чеков

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

При обновлении конфигурации 1С:Розница 2.3 до актуальных релизов (начиная с 2.3.15 и выше) пользователи часто сталкиваются с неприятной ситуацией: в момент пробития чека в режиме рабочего места кассира (РМК) возникает критическая ошибка: Поле объекта не обнаружено (ОблачнаяККТ). При этом сам чек может физически распечататься на фискальном регистраторе, но программа прерывает выполнение операции, что мешает нормальной работе кассовой смены. Рассмотрим подробнее, почему это происходит и как устранить проблему разными способами.

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

Проанализируем ситуацию с технической точки зрения. Данная ошибка локализуется в общем модуле ОборудованиеЧекопечатающиеУстройстваКлиент или РаспределеннаяФискализацияКлиент. Суть проблемы заключается в развитии БПО (Библиотеки подключаемого оборудования). В новых версиях библиотеки разработчики внедрили поддержку распределенной (облачной) фискализации. Для этого в структуру ПараметрыОперации, которая передается между модулями при печати чека, было добавлено новое обязательное поле — ОблачнаяККТ.

Однако в «старом» интерфейсе РМК, который до сих пор активно используется на многих предприятиях из-за его нетребовательности к ресурсам железа, формирование этой структуры происходит по старым алгоритмам. В итоге, когда управление передается в общий модуль фискализации, система ожидает найти флаг ОблачнаяККТ, не находит его и выбрасывает исключение. «Новое РМК» лишено этого недостатка, так как оно изначально проектировалось под новые требования БПО.

Способ 1. Установка исправлений (патчей) от 1С

Разберем самый простой и рекомендуемый способ, который не требует изменения программного кода вручную. Фирма «1С» оперативно выпускает исправления (патчи) для типовых конфигураций. Для решения нашей проблемы необходимо проверить наличие патча с кодом EF_00_058604.

Для установки выполним следующие шаги:

  1. Перейдем в раздел АдминистрированиеОбслуживание.
  2. Развернем подраздел Обновление программы и выберем пункт Установка обновлений и исправлений (патчей).
  3. Если база подключена к интернет-поддержке, система сама найдет нужные исправления. Если нет — скачаем патч вручную с портала ИТС и укажем путь к файлу.
  4. После установки патча необходимо перезапустить сеанс 1С.

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

Способ 2. Создание расширения для исправления кода

Если патч не помог или недоступен, мы можем самостоятельно «научить» систему игнорировать отсутствие поля. Для этого создадим расширение конфигурации. Это позволит нам исправить ошибку, не снимая основную конфигурацию с поддержки.

Рассмотрим по шагам процесс создания расширения:

  1. Откроем конфигуратор, перейдем в меню КонфигурацияРасширения конфигурации.
  2. Создадим новое расширение (например, с именем ИсправлениеОшибкиОблачнаяККТ), снимем галочки «Безопасный режим» и «Защита от опасных действий».
  3. Найдем общий модуль РаспределеннаяФискализацияКлиент.
  4. Нам нужно перехватить процедуру, в которой происходит вызов фискализации. Обычно это метод, связанный с началом фискализации чека.

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


&Перед("НачатьФискализациюЧекаНаФискальномУстройстве")
Процедура Расш1_НачатьФискализациюЧекаНаФискальномУстройстве(ОписаниеОповещения, УникальныйИдентификатор, ИдентификаторУстройстваККТ, ОбщиеПараметры, ДополнительныеПараметры)
    
    // Проверяем, существует ли структура ПараметрыОперации в ДополнительныхПараметрах
    // Если поле "ОблачнаяККТ" отсутствует, принудительно добавляем его со значением Ложь
    
    Если ДополнительныеПараметры.Свойство("ПараметрыОперации") Тогда
        Если ТипЗнч(ДополнительныеПараметры.ПараметрыОперации) = Тип("Структура") 
            И Не ДополнительныеПараметры.ПараметрыОперации.Свойство("ОблачнаяККТ") Тогда
            
            ДополнительныеПараметры.ПараметрыОперации.Вставить("ОблачнаяККТ", Ложь);
            
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры

Этот код «обманывает» систему: он проверяет, есть ли в структуре нужное поле, и если его нет — вставляет его со значением Ложь. Таким образом, когда управление перейдет к типовому коду на строке 25 модуля ОборудованиеЧекопечатающиеУстройстваКлиент, проверка ИначеЕсли ПараметрыОперации.ОблачнаяККТ Тогда отработает корректно, так как поле уже будет существовать.

Способ 3. Переход на «Новое РМК»

Как мы уже выяснили, в «Новом РМК» (которое появилось в Рознице начиная с версии 2.3.10) данная ошибка отсутствует. Если ваше оборудование позволяет, это самый правильный путь развития системы.

Посмотрим, как включить новый интерфейс:

  1. Перейдем в раздел ПродажиСервисНастройки РМК.
  2. Выберем текущую настройку или создадим новую.
  3. Установим флаг Использовать новое РМК.
  4. Настроим горячие клавиши и внешний вид под свои нужды.

Важный нюанс: если вы используете старые компьютеры с малым объемом оперативной памяти (менее 4 Гб), «Новое РМК» может работать медленнее из-за использования более тяжелых графических элементов на управляемых формах. В этом случае лучше придерживаться Способа 2.

Способ 4. Проверка драйверов и настроек оборудования

Иногда ошибка может быть спровоцирована несоответствием версии драйвера кассы и версии БПО внутри 1С. Проанализируем ситуацию с драйверами АТОЛ, так как они наиболее популярны.

Выполним следующие действия:

  1. Зайдем в НСИ и администрированиеРМК и оборудованиеПодключаемое оборудование.
  2. Откроем карточку вашей ККТ и нажмем Настроить.
  3. Посмотрим на версию установленного драйвера. Для стабильной работы с БПО версии 3.1+ рекомендуется использовать драйверы АТОЛ версии 10.10.x.
  4. Попробуйте нажать кнопку ФункцииТест устройства. Если тест проходит успешно, но ошибка в РМК сохраняется — значит, дело точно в программном коде 1С, описанном выше, а не в самом железе.

Резюме и рекомендации

Мы рассмотрели техническую природу ошибки ОблачнаяККТ. Подведем итоги нашей совместной работы:

Используя приведенный выше пример кода в расширении, вы сможете восстановить работоспособность кассы буквально за 5-10 минут, не дожидаясь выхода следующего глобального обновления конфигурации.

← На главную