При работе с торговым оборудованием в среде 1С:Предприятие одной из самых неприятных ситуаций является сбой на финальном этапе — печати фискального чека, особенно когда оплата по банковскому терминалу уже успешно прошла. Рассмотрим ситуацию, когда при попытке пробить чек по безналичному расчету система выдает диагностическое сообщение: «При печати чека произошла ошибка... Поле "items[1].name" отсутствует». При этом оплата наличными может проходить без нареканий.
В данной статье мы проанализируем причины возникновения этой ошибки, разберем техническую составляющую взаимодействия драйвера с кассовым аппаратом и найдем способы решения проблемы.
Ошибка возвращается не самой платформой 1С, а драйвером ККТ (в данном случае АТОЛ 10.х). Современные драйверы ККТ используют JSON-задания для передачи данных в кассу. Поле items в этом задании представляет собой массив товарных позиций. Индекс [1] в сообщении об ошибке прямо указывает на то, что проблема возникла во второй строке чека (так как индексация в массивах JSON начинается с нуля).
Проанализируем ситуацию: если в чеке всего одна услуга или товар, почему драйвер ищет вторую позицию? Выясним основные причины:
name (Наименование), драйвер выдает ошибку.JSON в соответствии с форматами фискальных данных (ФФД 1.05 и 1.2). Если прошивка ККТ устарела, она может некорректно обрабатывать новые поля или требовать старый формат структуры, который драйвер уже не формирует корректно «по умолчанию».Рассмотрим последовательность действий для локализации ошибки. Начнем с анализа кода и структуры данных.
Для того чтобы понять, что именно отправляет 1С в драйвер, необходимо установить точку останова в общем модуле, отвечающем за работу с торговым оборудованием. Обычно это функции СформироватьЧек или ПробитьЧек. Нас интересует переменная, содержащая JSON объект задания. Рассмотрим пример того, как выглядит проблемная структура в упрощенном виде:
// Пример структуры JSON, которая вызовет ошибку
{
"type": "sell",
"items": [
{
"name": "Консультация терапевта",
"price": 1000.00,
"quantity": 1,
"amount": 1000.00,
"tax": { "type": "none" }
},
{
"price": 0.00,
"quantity": 1,
"amount": 0.00,
"tax": { "type": "none" }
// ПОЛЕ "name" ЗДЕСЬ ОТСУТСТВУЕТ - это причина ошибки items[1].name
}
]
}
Если мы обнаружили в массиве items пустой элемент или элемент без ключа name, значит, проблема в логике формирования чека внутри конфигурации 1С. Однако, как показывает практика обсуждений, часто код 1С корректен, а ошибка кроется глубже.
Как было отмечено в ходе обсуждения на форуме, корень проблемы часто заключается в том, что прошивка кассы не поддерживает текущую версию драйвера. Разберем, что нужно сделать:
items.Если в конфигурации «1С:Бухгалтерия» чек печатается нормально, а в отраслевом решении (БИТ:Стоматология) возникает ошибка, значит, проблема в механизме интеграции конкретной программы. Разберем алгоритм исправления:
Посмотрим на объект МенеджерОборудования. В отраслевых решениях часто используются устаревшие обработки обслуживания. Попробуем обновить компоненту из актуальной версии БП 3.0 или Розницы. Для этого:
Если это не помогло, проанализируем справочник Способы оплаты. Убедимся, что для вида оплаты «Платежная карта» в настройках ККТ указан правильный индекс типа оплаты (обычно «1» для безналичных платежей в ФФД 1.05).
Выясним еще одну неочевидную причину. В некоторых медицинских конфигурациях при расчете чека система может пытаться добавить в него услуги, которые физически присутствуют в документе оплаты, но были помечены на удаление в справочнике Номенклатура. Программный код может игнорировать название удаленного объекта, оставляя поле пустым, но при этом продолжать включать его в массив items.
Рекомендация: Проверьте все позиции в документе «Оказание услуг» или «Оплата», на основании которого пробивается чек. Если в списке есть пустые строки или «битые» ссылки, их необходимо устранить до момента вызова команды печати.
Подводя итог, можно сказать, что ошибка items[1].name отсутствует является следствием строгого контроля целостности данных со стороны драйверов АТОЛ 10-го поколения. Для решения проблемы в большинстве случаев достаточно привести в соответствие версию драйвера и прошивку ККТ. Если вы используете современный драйвер (10.7+), ваша касса обязательно должна быть переведена на Платформу 5.0 с актуальным внутренним ПО. В противном случае наиболее быстрым и рабочим «костылем» будет откат драйвера в 1С до версии 10.5.
Помните, что работа с торговым оборудованием требует комплексного подхода: проверки кода 1С, настроек драйвера и состояния «железа» кассового аппарата.