При работе в программе 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.99.х) многие пользователи столкнулись с неприятной ситуацией: после обновления конфигурации при попытке пробить чек на услуги или обычные товары вылетает критическая ошибка: Неверный тип значения: РегистрСведений.РезультатыПроверкиСредствамиККТиСМП.Документ. Несмотря на то, что физически кассовый аппарат может выдать чек, в самой программе документ не получает статус «Пробит», что вносит путаницу в учет.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы взаимодействия программы с торговым оборудованием и рассмотрим пошаговые инструкции по устранению этой ошибки.
Давайте проанализируем ситуацию с технической точки зрения. Появление данной ошибки напрямую связано с масштабным переходом на ФФД 1.2 (формат фискальных данных) и обязательной маркировкой товаров. В новых релизах 1С разработчики значительно переработали подсистему взаимодействия с торговым оборудованием.
Проанализируем работу объекта РегистрСведений.РезультатыПроверкиСредствамиККТиСМП. Этот регистр предназначен для хранения логов проверки кодов маркировки (система «Честный ЗНАК»). Когда касса работает по протоколу ФФД 1.2, она должна проверять каждый код маркировки и возвращать результат этой проверки в программу. Проблема заключается в том, что обновленный программный код пытается инициировать запись в этот регистр даже в тех случаях, когда в чеке нет маркируемого товара (например, при оказании услуг или продаже обычных товаров). При попытке записи система не находит корректную ссылку на «документ-основание» для измерения Документ и выдает ошибку несоответствия типов.
Важно понимать, что это программная недоработка в логике формирования структуры данных перед отправкой команды на фискализацию. Программа пытается передать в регистр Неопределено или пустую ссылку там, где ожидается конкретный тип документа.
Рассмотрим самый быстрый и надежный способ решения проблемы, предложенный разработчиками 1С. Для оперативного исправления подобных массовых ошибок выпускаются специальные расширения — патчи. Для данной проблемы был выпущен патч с идентификатором EF_40057174.
Выполним следующие шаги для его установки:
EF_40057174 (описание обычно звучит как «Исправление ошибки записи в регистр РезультатыПроверкиСредствамиККТиСМП»).Важный момент: установка патча не требует снятия конфигурации с поддержки и является штатным механизмом исправления ошибок между релизами.
Если вы по каким-то причинам не можете установить патч или используете сильно устаревшую версию (например, 3.0.99.19), проанализируем вариант полного обновления. Разработчики включили исправление этой ошибки в состав следующих релизов (начиная с 3.0.100.х и выше).
Рассмотрим алгоритм действий:
После обновления логика записи в регистр РезультатыПроверкиСредствамиККТиСМП будет автоматически исправлена: система начнет игнорировать запись, если в чеке отсутствуют сведения о маркировке (СМП).
Иногда ошибка Неверный тип значения может быть спровоцирована некорректным ответом от драйвера кассового аппарата, если он не поддерживает новые методы, вызываемые платформой 1С 8.3 для работы с ФФД 1.2. Проанализируем состояние драйверов.
Выполним проверку в программе:
Часто связка «актуальный релиз 1С + свежий драйвер» полностью устраняет любые конфликты типов данных при формировании чека.
Для понимания того, что именно исправляет патч, посмотрим на пример структуры записи в регистр. Проблемный код пытался выполнить примерно следующую операцию:
МенеджерЗаписи = РегистрыСведений.РезультатыПроверкиСредствамиККТиСМП.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Период = ТекущаяДата();
// Ошибка возникала здесь, так как ДокументОснование мог быть пустым
// или не соответствовать типам, определенным в метаданных регистра
МенеджерЗаписи.Документ = ДанныеЧека.ДокументОснование;
МенеджерЗаписи.Записать();
Патч EF_40057174 добавляет в этот алгоритм проверку условия. Проанализируем логику исправления:
Если ТребуетсяПроверкаМаркировки(ДанныеЧека) Тогда
// Выполняем запись в регистр только для маркированных товаров
ЗаписатьРезультатыПроверки(ДанныеЧека);
Иначе
// Для услуг и обычных товаров просто пропускаем этот шаг
Возврат;
КонецЕсли;
Такой подход позволяет избежать попытки записи некорректных типов данных в базу, что и устраняет критическую ошибку.
Это частая побочная проблема. Если из-за ошибки документ Чек или Реализация не пометился как пробитый, выполним следующие действия:
НомерЧекККМ и даты пробития, чтобы документ перестал числиться «непробитым». Будьте осторожны: этот метод требует четкого понимания структуры метаданных.Подводя итог, можно сказать, что ситуация является типичной «ошибкой роста» при внедрении новых протоколов ФФД 1.2. Своевременная установка патчей и обновление драйверов — залог стабильной работы кассового узла.