Как правильно настроить ККТ и 1С для передачи новых тегов при расчетах через интернет?

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

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

Обновление инфраструктуры: драйверы, прошивки и компоненты 1С

Прежде чем приступить к корректировке кода, нам необходимо убедиться, что наша программно-аппаратная инфраструктура готова к работе с новыми требованиями. Это критически важный этап, который часто является причиной многих проблем.

Драйверы и прошивки ККТ

Прежде всего, давайте посмотрим на драйверы и прошивки наших контрольно-кассовых машин. Для корректной работы с новыми фискальными тегами, особенно для ККТ производства АТОЛ, требуется обновление драйвера и прошивки. * Для АТОЛ: Рекомендуется использовать драйвер версии 10.10.7.0 или выше (например, 10.10.7.5) и прошивку 5.16.0 или новее. Мы можем столкнуться с ситуацией, когда без этих обновлений теги просто не будут пробиваться или вызывать ошибки. * Для ШТРИХ-М: Из опыта коллег, на ККТ ШТРИХ-М новые теги могут начать работать сразу после обновления интеграционной компоненты 1С, что указывает на меньшую чувствительность к конкретной версии драйвера или прошивки по сравнению с АТОЛ. Мы настоятельно рекомендуем проверить текущие версии драйверов и прошивок вашей ККТ и при необходимости обновить их до актуальных.

Интеграционная компонента 1С и обработка обслуживания

Следующим шагом рассмотрим интеграционную компоненту 1С, которая является связующим звеном между вашей конфигурацией 1С и драйвером ККТ. * Обновление компоненты: Нам необходимо убедиться, что используется актуальная версия интеграционной компоненты. Часто новые теги становятся доступны только после ее обновления. * Изменение наименования драйвера: Для ККТ АТОЛ в новых версиях интеграционных компонент может измениться наименование драйвера, которое мы указываем в коде 1С. Ранее использовалось:


Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C_V10");

Теперь, для поддержки новых функций, может потребоваться использовать другое наименование:


Драйвер = Новый("AddIn.ИнтеграционнаяКомпонента.ATOL_KKT_1C_V10X");

Это изменение является частой причиной того, что теги не пробиваются, даже если сама интеграционная компонента обновлена. * Где взять новую компоненту: Новую интеграционную компоненту обычно можно найти в zip-архиве в папке установки драйвера АТОЛ (при установке драйвера нужно установить флажок "Драйвер 1С"). Если возникают проблемы с версией (например, скачанная компонента не соответствует заявленной версии), рекомендуем взять обработку обслуживания с сайта 1С:ИТС. Это гарантирует получение проверенной и актуальной версии. * Обновление обработки обслуживания: Не забудьте импортировать обновленную интеграционную компоненту в макет обработки обслуживания в вашей конфигурации 1С.

Обновление конфигурации 1С и Библиотеки подключаемого оборудования (БПО)

Для полноценной поддержки новых фискальных тегов важно, чтобы и сама конфигурация 1С, и входящая в нее Библиотека подключаемого оборудования (БПО) были актуальными. * Актуальные релизы: Разработчики 1С регулярно выпускают обновления, включающие поддержку новых драйверов и фискальных требований. Например, релиз УТ 11.5.22.92 включает последнюю версию БПО, что значительно упрощает внедрение новых тегов. * Старые или сильно переписанные конфигурации: Если мы работаем со старой версией конфигурации (например, УТ 10.3) или конфигурация сильно переписана, то простое обновление может быть невозможным. В таких случаях нам, возможно, придется вручную переносить изменения из актуальных макетов драйверов БПО в нашу обработку обслуживания. Это более трудоемкий процесс, требующий внимательности и понимания структуры кода.

Корректировка кода 1С для передачи тегов

После того как наша инфраструктура обновлена, мы можем перейти к анализу и корректировке кода 1С, который отвечает за формирование и печать чеков.

Ключевые теги для интернет-торговли и их применение

Давайте рассмотрим основные фискальные теги, которые необходимы для интернет-торговли, и особенности их передачи. *

Тег 1125 ("Признак расчета в Интернет")

Этот тег является одним из самых важных для интернет-торговли. Он указывает на то, что расчет производится через интернет. * Значение тега: Тег 1125 имеет тип булево или числовое значение (0 или 1). Не используйте строковые значения ("1" или "true"), так как это может привести к ошибкам. Например:


Драйвер.setParam(1125, Истина); // или
Драйвер.setParam(1125, 1);

* Критичное расположение для АТОЛ: Для ККТ АТОЛ крайне важно устанавливать тег 1125 непосредственно перед закрытием чека (перед вызовом метода closeReceipt). Если мы попытаемся установить его перед открытием чека (перед openReceipt), то получим ошибку "Код ошибки ККТ - 4458h". * Необходимость передачи: Хотя некоторые дискуссии указывают, что тег 1125 может быть необязателен при отсутствии маркированных товаров (поскольку он попадает в уведомление, а не в чек), при наличии интернет-торговли его передача настоятельно рекомендуется. Если режим интернет-торговли активирован через перерегистрацию ККТ, тег 1125 будет присутствовать как в чеке, так и в уведомлении. *

Тег 1187 ("Место проведения расчетов")

Этот тег является необязательным и обычно содержит информацию о месте совершения онлайн-расчета, например, адрес сайта. Он отражается в чеке.


Драйвер.setParam(1187, МестоРасчетов_АдресСайта);

*

Тег 1008 ("Телефон или электронный адрес покупателя")

Это уже давно существующий тег, который используется для отправки электронного чека покупателю.


Драйвер.setParam(1008, ПокупательНомерТелефонаИлиEmail);

*

Тег 1011 ("Часовая зона")

Для ККТ АТОЛ настройка часовой зоны непосредственно в кассе может быть достаточной только для нескольких стандартных зон (например, для Москвы). Для остальных часовых зон может потребоваться передача этого тега из 1С.


Драйвер.setParam(1011, ЧасоваяЗонаККТ); // Например, 3 для МСК

Однако, если вы уверены в настройках ККТ и она корректно работает с вашей часовой зоной, этот тег можно не передавать. *

Составной тег 1256 ("Сведения о покупателе (клиенте)")

Этот тег актуален для Фискальных Форматов Данных (ФФД) версии 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)

Обратите внимание на добавление параметра ПараметрыФискализации.Электронно. При обновлении драйвера мы должны скорректировать вызов этой функции в нашем коде.

Последовательность действий и возможные проблемы

Чтобы успешно внедрить новые теги, мы рекомендуем следующую последовательность действий:

  1. Обновите драйвер ККТ: Загрузите и установите актуальную версию драйвера для вашей модели ККТ.
  2. Обновите прошивку ККТ: Убедитесь, что прошивка вашей ККТ соответствует требованиям для работы с новыми тегами.
  3. Обновите интеграционную компоненту 1С и обработку обслуживания: Скачайте актуальную компоненту (лучше с сайта 1С:ИТС) и импортируйте ее в макет обработки обслуживания, а также проверьте и при необходимости измените наименование драйвера (например, с ATOL_KKT_1C_V10 на ATOL_KKT_1C_V10X).
  4. Обновите конфигурацию 1С: По возможности обновите вашу конфигурацию 1С до последних релизов, включающих актуальную БПО. Если это невозможно, внесите изменения в обработку обслуживания вручную.
  5. Проверьте и скорректируйте код 1С:
    • Внимательно просмотрите код, отвечающий за формирование чеков.
    • Убедитесь, что тег 1125 устанавливается перед закрытием чека.
    • Проверьте корректность формирования и установки составного тега 1256 (если используете ФФД 1.2+).
    • Адаптируйте вызовы СформироватьЧекКоррекции() под новые параметры, если это необходимо.
    • Убедитесь, что OperationOnline = Истина (или 1) передается в фискальные данные, если это предусмотрено вашим способом формирования XML данных.
  6. Протестируйте через "Тест драйвера": Перед тестированием из 1С, попробуйте сформировать чек с новыми тегами через утилиту "Тест драйвера" вашей ККТ. Это позволит изолировать проблему и убедиться, что драйвер и прошивка ККТ работают корректно. Используйте скрипты для проверки порядка установки тегов.
  7. Протестируйте из 1С: После успешного тестирования через драйвер, проверьте работу из вашей конфигурации 1С.

Диагностика проблем

Если мы столкнулись с проблемами: * Логи ККТ: Внимательно изучайте логи вашей ККТ. Они могут содержать ценную информацию о причинах ошибок, хотя иногда бывают не очень информативными. * "Тест драйвера": Используйте "Тест драйвера" с максимальной детализацией. Попробуйте создать примитивные скрипты, чтобы пошагово проверить передачу каждого тега и их порядок. Например, ошибка "Код ошибки ККТ - 4458h" в логах АТОЛ часто указывает на неправильное расположение тега 1125. * Проверка ОФД: После успешной пробивки чека, проверьте его в личном кабинете ОФД, чтобы убедиться, что все теги переданы корректно. Мы рассмотрели основные аспекты настройки ККТ и 1С для работы с новыми тегами интернет-торговли. Ключевыми моментами являются своевременное обновление всех компонентов (драйверов, прошивок, интеграционных компонент 1С) и тщательная проверка порядка установки тегов в коде 1С, особенно для ККТ АТОЛ. Внимательное следование этим рекомендациям поможет нам успешно решить проблему и обеспечить соответствие требованиям законодательства.

← К списку