При обновлении конфигурации 1С:Розница 2.3 до актуальных релизов (начиная с 2.3.15 и выше) пользователи часто сталкиваются с неприятной ситуацией: в момент пробития чека в режиме рабочего места кассира (РМК) возникает критическая ошибка: Поле объекта не обнаружено (ОблачнаяККТ). При этом сам чек может физически распечататься на фискальном регистраторе, но программа прерывает выполнение операции, что мешает нормальной работе кассовой смены. Рассмотрим подробнее, почему это происходит и как устранить проблему разными способами.
Проанализируем ситуацию с технической точки зрения. Данная ошибка локализуется в общем модуле ОборудованиеЧекопечатающиеУстройстваКлиент или РаспределеннаяФискализацияКлиент. Суть проблемы заключается в развитии БПО (Библиотеки подключаемого оборудования). В новых версиях библиотеки разработчики внедрили поддержку распределенной (облачной) фискализации. Для этого в структуру ПараметрыОперации, которая передается между модулями при печати чека, было добавлено новое обязательное поле — ОблачнаяККТ.
Однако в «старом» интерфейсе РМК, который до сих пор активно используется на многих предприятиях из-за его нетребовательности к ресурсам железа, формирование этой структуры происходит по старым алгоритмам. В итоге, когда управление передается в общий модуль фискализации, система ожидает найти флаг ОблачнаяККТ, не находит его и выбрасывает исключение. «Новое РМК» лишено этого недостатка, так как оно изначально проектировалось под новые требования БПО.
Разберем самый простой и рекомендуемый способ, который не требует изменения программного кода вручную. Фирма «1С» оперативно выпускает исправления (патчи) для типовых конфигураций. Для решения нашей проблемы необходимо проверить наличие патча с кодом EF_00_058604.
Для установки выполним следующие шаги:
Важно помнить, что патчи выпускаются под конкретные релизы. Если ваш релиз сильно устарел или, наоборот, является промежуточным, автоматический поиск может не сработать. В этом случае перейдем к более радикальным методам.
Если патч не помог или недоступен, мы можем самостоятельно «научить» систему игнорировать отсутствие поля. Для этого создадим расширение конфигурации. Это позволит нам исправить ошибку, не снимая основную конфигурацию с поддержки.
Рассмотрим по шагам процесс создания расширения:
ИсправлениеОшибкиОблачнаяККТ), снимем галочки «Безопасный режим» и «Защита от опасных действий».РаспределеннаяФискализацияКлиент.Проанализируем пример кода, который необходимо добавить в расширение. Мы будем использовать аннотацию &Перед, чтобы дополнить структуру параметров до того, как к ней обратится основной код системы.
&Перед("НачатьФискализациюЧекаНаФискальномУстройстве")
Процедура Расш1_НачатьФискализациюЧекаНаФискальномУстройстве(ОписаниеОповещения, УникальныйИдентификатор, ИдентификаторУстройстваККТ, ОбщиеПараметры, ДополнительныеПараметры)
// Проверяем, существует ли структура ПараметрыОперации в ДополнительныхПараметрах
// Если поле "ОблачнаяККТ" отсутствует, принудительно добавляем его со значением Ложь
Если ДополнительныеПараметры.Свойство("ПараметрыОперации") Тогда
Если ТипЗнч(ДополнительныеПараметры.ПараметрыОперации) = Тип("Структура")
И Не ДополнительныеПараметры.ПараметрыОперации.Свойство("ОблачнаяККТ") Тогда
ДополнительныеПараметры.ПараметрыОперации.Вставить("ОблачнаяККТ", Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Этот код «обманывает» систему: он проверяет, есть ли в структуре нужное поле, и если его нет — вставляет его со значением Ложь. Таким образом, когда управление перейдет к типовому коду на строке 25 модуля ОборудованиеЧекопечатающиеУстройстваКлиент, проверка ИначеЕсли ПараметрыОперации.ОблачнаяККТ Тогда отработает корректно, так как поле уже будет существовать.
Как мы уже выяснили, в «Новом РМК» (которое появилось в Рознице начиная с версии 2.3.10) данная ошибка отсутствует. Если ваше оборудование позволяет, это самый правильный путь развития системы.
Посмотрим, как включить новый интерфейс:
Важный нюанс: если вы используете старые компьютеры с малым объемом оперативной памяти (менее 4 Гб), «Новое РМК» может работать медленнее из-за использования более тяжелых графических элементов на управляемых формах. В этом случае лучше придерживаться Способа 2.
Иногда ошибка может быть спровоцирована несоответствием версии драйвера кассы и версии БПО внутри 1С. Проанализируем ситуацию с драйверами АТОЛ, так как они наиболее популярны.
Выполним следующие действия:
Мы рассмотрели техническую природу ошибки ОблачнаяККТ. Подведем итоги нашей совместной работы:
ОблачнаяККТ в структуру параметров операции.Используя приведенный выше пример кода в расширении, вы сможете восстановить работоспособность кассы буквально за 5-10 минут, не дожидаясь выхода следующего глобального обновления конфигурации.