При работе с онлайн-кассами (ККТ) в условиях интернет-торговли мы часто сталкиваемся с необходимостью передавать новые фискальные теги, которые обеспечивают корректное отображение информации в чеке и ее передачу в ОФД. В этой статье мы подробно разберем, как настроить систему 1С и ККТ для успешной работы с такими тегами, основываясь на опыте коллег и рекомендациях разработчиков. Мы выясним причины возникновения распространенных ошибок и рассмотрим пошаговые решения.
Прежде чем приступить к корректировке кода, нам необходимо убедиться, что наша программно-аппаратная инфраструктура готова к работе с новыми требованиями. Это критически важный этап, который часто является причиной многих проблем.
Прежде всего, давайте посмотрим на драйверы и прошивки наших контрольно-кассовых машин. Для корректной работы с новыми фискальными тегами, особенно для ККТ производства АТОЛ, требуется обновление драйвера и прошивки. * Для АТОЛ: Рекомендуется использовать драйвер версии 10.10.7.0 или выше (например, 10.10.7.5) и прошивку 5.16.0 или новее. Мы можем столкнуться с ситуацией, когда без этих обновлений теги просто не будут пробиваться или вызывать ошибки. * Для ШТРИХ-М: Из опыта коллег, на ККТ ШТРИХ-М новые теги могут начать работать сразу после обновления интеграционной компоненты 1С, что указывает на меньшую чувствительность к конкретной версии драйвера или прошивки по сравнению с АТОЛ. Мы настоятельно рекомендуем проверить текущие версии драйверов и прошивок вашей ККТ и при необходимости обновить их до актуальных.
Следующим шагом рассмотрим интеграционную компоненту 1С, которая является связующим звеном между вашей конфигурацией 1С и драйвером ККТ. * Обновление компоненты: Нам необходимо убедиться, что используется актуальная версия интеграционной компоненты. Часто новые теги становятся доступны только после ее обновления. * Изменение наименования драйвера: Для ККТ АТОЛ в новых версиях интеграционных компонент может измениться наименование драйвера, которое мы указываем в коде 1С. Ранее использовалось:
Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C_V10");
Теперь, для поддержки новых функций, может потребоваться использовать другое наименование:
Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C_V10X");
Это изменение является частой причиной того, что теги не пробиваются, даже если сама интеграционная компонента обновлена. * Где взять новую компоненту: Новую интеграционную компоненту обычно можно найти в zip-архиве в папке установки драйвера АТОЛ (при установке драйвера нужно установить флажок "Драйвер 1С"). Если возникают проблемы с версией (например, скачанная компонента не соответствует заявленной версии), рекомендуем взять обработку обслуживания с сайта 1С:ИТС. Это гарантирует получение проверенной и актуальной версии. * Обновление обработки обслуживания: Не забудьте импортировать обновленную интеграционную компоненту в макет обработки обслуживания в вашей конфигурации 1С.
Для полноценной поддержки новых фискальных тегов важно, чтобы и сама конфигурация 1С, и входящая в нее Библиотека подключаемого оборудования (БПО) были актуальными. * Актуальные релизы: Разработчики 1С регулярно выпускают обновления, включающие поддержку новых драйверов и фискальных требований. Например, релиз УТ 11.5.22.92 включает последнюю версию БПО, что значительно упрощает внедрение новых тегов. * Старые или сильно переписанные конфигурации: Если мы работаем со старой версией конфигурации (например, УТ 10.3) или конфигурация сильно переписана, то простое обновление может быть невозможным. В таких случаях нам, возможно, придется вручную переносить изменения из актуальных макетов драйверов БПО в нашу обработку обслуживания. Это более трудоемкий процесс, требующий внимательности и понимания структуры кода.
После того как наша инфраструктура обновлена, мы можем перейти к анализу и корректировке кода 1С, который отвечает за формирование и печать чеков.
Давайте рассмотрим основные фискальные теги, которые необходимы для интернет-торговли, и особенности их передачи. *
Этот тег является одним из самых важных для интернет-торговли. Он указывает на то, что расчет производится через интернет.
* Значение тега: Тег 1125 имеет тип булево или числовое значение (0 или 1). Не используйте строковые значения ("1" или "true"), так как это может привести к ошибкам. Например:
Драйвер.setParam(1125, Истина); // или
Драйвер.setParam(1125, 1);
* Критичное расположение для АТОЛ: Для ККТ АТОЛ крайне важно устанавливать тег 1125 непосредственно перед закрытием чека (перед вызовом метода closeReceipt). Если мы попытаемся установить его перед открытием чека (перед openReceipt), то получим ошибку "Код ошибки ККТ - 4458h".
* Необходимость передачи: Хотя некоторые дискуссии указывают, что тег 1125 может быть необязателен при отсутствии маркированных товаров (поскольку он попадает в уведомление, а не в чек), при наличии интернет-торговли его передача настоятельно рекомендуется. Если режим интернет-торговли активирован через перерегистрацию ККТ, тег 1125 будет присутствовать как в чеке, так и в уведомлении.
*
Этот тег является необязательным и обычно содержит информацию о месте совершения онлайн-расчета, например, адрес сайта. Он отражается в чеке.
Драйвер.setParam(1187, МестоРасчетов_АдресСайта);
*
Это уже давно существующий тег, который используется для отправки электронного чека покупателю.
Драйвер.setParam(1008, ПокупательНомерТелефонаИлиEmail);
*
Для ККТ АТОЛ настройка часовой зоны непосредственно в кассе может быть достаточной только для нескольких стандартных зон (например, для Москвы). Для остальных часовых зон может потребоваться передача этого тега из 1С.
Драйвер.setParam(1011, ЧасоваяЗонаККТ); // Например, 3 для МСК
Однако, если вы уверены в настройках ККТ и она корректно работает с вашей часовой зоной, этот тег можно не передавать. *
Этот тег актуален для Фискальных Форматов Данных (ФФД) версии 1.2 и выше. Он объединяет данные о покупателе, которые в более ранних версиях ФФД передавались как отдельные реквизиты (например, 1227 "Покупатель" и 1228 "Покупатель ИНН").
* Порядок установки: Тег 1256 должен устанавливаться после установки всех других тегов, но перед открытием чека (перед вызовом openReceipt). Для его формирования используются методы utilFormTlv, getParamStringHex (или getParamByteArray) и setParamStrHex (или setParam).
* Пример формирования:
// Устанавливаем отдельные данные о покупателе
Драйвер.setParam(1227, СокрЛП(Покупатель));
Драйвер.setParam(1228, СокрЛП(ПокупательИНН));
// Формируем составной тег 1256
Драйвер.utilFormTlv();
clientInfo = Драйвер.getParamStringHex(Драйвер.LIBFPTR_PARAM_TAG_VALUE);
// Устанавливаем составной тег 1256
Драйвер.setParamStrHex(1256, clientInfo);
Обратите внимание, что clientInfo здесь является строкой, содержащей шестнадцатеричное представление данных.
Давайте проанализируем пример кода, который демонстрирует правильный порядок установки тегов для АТОЛ ККТ. Мы сократили код для ясности, убрав проверки и обработку ошибок.
Драйвер = Объект.Драйвер;
// Установка данных кассира
Драйвер.setParam(1021, Кассир);
Драйвер.setParam(1203, КассирИНН);
Драйвер.operatorLogin();
// Установка сведений о покупателе для составного тега 1256
// (актуально для ФФД 1.2+).
// Эти параметры должны быть установлены до utilFormTlv()
Драйвер.setParam(1227, СокрЛП(Покупатель));
Драйвер.setParam(1228, СокрЛП(ПокупательИНН));
// Формируем составной тег 1256.
// Этот шаг должен быть выполнен после установки всех данных покупателя.
Драйвер.utilFormTlv();
clientInfo = Драйвер.getParamStringHex(Драйвер.LIBFPTR_PARAM_TAG_VALUE); // Или getParamByteArray()
// Установка других основных тегов
Драйвер.setParam(1117, ОтправительEmail); // Email отправителя чека
Драйвер.setParam(1187, МестоРасчетов_АдресСайта); // Место расчетов
Драйвер.setParam(1008, ПокупательНомерТелефонаИлиEmail); // Телефон/Email покупателя
// Устанавливаем составной тег 1256.
// Этот тег устанавливается после других тегов и перед открытием чека.
Драйвер.setParamStrHex(1256, clientInfo); // Или setParam()
// Открываем чек
Ответ = Драйвер.openReceipt();
// Вывод информации о товарах/услугах
Для Каждого СтрокаЧека Из СтрокиЧекаЦикл
// Здесь код для установки параметров товара (наименование, количество, цена, НДС и т.д.)
// Например:
// Драйвер.setParam(1030, СтрокаЧека.Наименование);
// Драйвер.setParam(1023, СтрокаЧека.Количество);
// Драйвер.setParam(1079, СтрокаЧека.Цена);
// Драйвер.setParam(1199, СтрокаЧека.СтавкаНДС);
Ответ = Драйвер.registration();
КонецЦикла;
// Регистрация оплат (нал, безнал, кредит, аванс)
// Например:
// Драйвер.setParam(1031, СуммаНаличными);
Ответ = Драйвер.payment();
// Установка тега 1125 "Признак расчета в Интернет".
// Для АТОЛ ККТ этот тег КРИТИЧНО устанавливать перед закрытием чека.
Драйвер.setParam(1125, ?(ПризнакРасчетаЧерезИнтернет, 1, 0));
// Закрываем чек
Ответ = Драйвер.closeReceipt();
Мы также можем использовать Драйвер.setParam(1125, Истина); или Драйвер.setParam(1125, "1");, однако предпочтительнее использовать булево или числовое значение (0/1).
Еще один важный момент, на который мы должны обратить внимание при обновлении драйверов, касается функции СформироватьЧекКоррекции(). В новых версиях драйвера ATOL_KKT_1C_V10X изменились ее параметры. Если мы не адаптируем наш код, это может привести к ошибкам при печати чеков коррекции.
* Было (в ревизиях до ~4004):
ОбъектДрайвера.СформироватьЧекКоррекции(ПараметрыПодключения.ИДУстройства, ПараметрыФискализации.ДанныеЧекаXML, ПараметрыФискализации.РезультатОперацииXML)
* Стало (в ревизиях больше ~4004, например, 10.10.7.5):
ОбъектДрайвера.СформироватьЧекКоррекции(ПараметрыПодключения.ИДУстройства, ПараметрыФискализации.Электронно, ПараметрыФискализации.ДанныеЧекаXML, ПараметрыФискализации.РезультатОперацииXML)
Обратите внимание на добавление параметра ПараметрыФискализации.Электронно. При обновлении драйвера мы должны скорректировать вызов этой функции в нашем коде.
Чтобы успешно внедрить новые теги, мы рекомендуем следующую последовательность действий:
ATOL_KKT_1C_V10 на ATOL_KKT_1C_V10X).СформироватьЧекКоррекции() под новые параметры, если это необходимо.OperationOnline = Истина (или 1) передается в фискальные данные, если это предусмотрено вашим способом формирования XML данных.Если мы столкнулись с проблемами: * Логи ККТ: Внимательно изучайте логи вашей ККТ. Они могут содержать ценную информацию о причинах ошибок, хотя иногда бывают не очень информативными. * "Тест драйвера": Используйте "Тест драйвера" с максимальной детализацией. Попробуйте создать примитивные скрипты, чтобы пошагово проверить передачу каждого тега и их порядок. Например, ошибка "Код ошибки ККТ - 4458h" в логах АТОЛ часто указывает на неправильное расположение тега 1125. * Проверка ОФД: После успешной пробивки чека, проверьте его в личном кабинете ОФД, чтобы убедиться, что все теги переданы корректно. Мы рассмотрели основные аспекты настройки ККТ и 1С для работы с новыми тегами интернет-торговли. Ключевыми моментами являются своевременное обновление всех компонентов (драйверов, прошивок, интеграционных компонент 1С) и тщательная проверка порядка установки тегов в коде 1С, особенно для ККТ АТОЛ. Внимательное следование этим рекомендациям поможет нам успешно решить проблему и обеспечить соответствие требованиям законодательства.
← К списку