В каком формате передается телефон покупателя в XML при фискализации чека в 1С

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При пробитии электронного чека в конфигурациях 1С (например, 1С:Бухгалтерия 8.3 на базе Библиотеки подключаемого оборудования) программа формирует XML-пакет CheckPackage и передает его драйверу кассового аппарата (ККТ). Далее драйвер передает эти данные в фискальный накопитель и Оператору фискальных данных (ОФД). Распространенная проблема — СМС покупателю с чеком не приходит, либо ОФД отклоняет отправку, ссылаясь на неверный формат номера. Разберем подробнее, как передается атрибут CustomerPhone и как устранить эту техническую неполадку.

Требования стандарта ФФД к номеру телефона (тег 1008)

Согласно формату фискальных документов (ФФД) и техническим требованиям 1С к разработке драйверов подключаемого оборудования, реквизит телефона покупателя (тег 1008) передается в XML-пакете как текстовый атрибут CustomerPhone.

По общему стандарту ФНС для РФ номер должен иметь международный формат:

+7XXXXXXXXXX (знак "+" и ровно 11 цифр, без пробелов, тире и скобок).

Однако платформенный механизм 1С передает в XML зафиксированное текстовое значение «как есть». Если кассир вводит номер без кода страны или с разделителями, передаваемая строка может не соответствовать стандарту.

Почему разные ОФД реагируют на формат по-разному

Проанализируем ситуацию, когда две одинаковые базы 1С с аналогичной кассовой техникой работают с разными ОФД, и в одном случае СМС уходит, а в другом — нет. Разница заключается во внутренней валидации на стороне оператора:

  1. Лояльный ОФД: принимает строку вида 9XXXXXXXXX или 89XXXXXXXXX, автоматически очищает ее от лишних знаков и подставляет международный код +7 перед отправкой через SMS-шлюз.
  2. Строгий ОФД: проверяет строгое соответствие формату +7XXXXXXXXXX. Если номер передан без знака плюса или кода страны, сервис считает формат невалидным и отменяет отправку СМС.

Как проверить формат номера в XML-пакете без конфигуратора

Чтобы точно узнать, в каком виде 1С отправляет данные драйверу кассы, не обязательно заходить в режим конфигуратора. Выполним диагностику через функционал подключаемого оборудования:

  1. Перейдем в раздел Администрирование – Подключаемое оборудование.
  2. Откроем карточку настройки используемого экземпляра ККТ или драйвера.
  3. Включим опцию Логирование (или Режим отладки).
  4. Пробьем тестовый чек с заполнением контактных данных покупателя.
  5. Найдем текстовые логи драйвера, которые сохраняются на локальном диске в папках %AppData% или %ProgramData%. В лог-файле будет зафиксирован итоговый пакет CheckPackage со значением атрибута CustomerPhone.

Способы решения и исправления формата

Рассмотрим варианты решения проблемы в зависимости от источника ошибки:

  1. Программная обработка строки перед фискализацией: Если перед вызовом процедур БПО строка номера очищается от посторонних символов, важно убедиться, что код явно приводит результат к виду +7XXXXXXXXXX.
  2. Обновление драйвера ККТ и БПО: В ранних версиях драйверов и внешних компонент встречались ошибки, когда компонента при обработке строки принудительно обрезала символ + или подставляла пустой атрибут CustomerPhone="+" при неполном вводе. Обновление интеграционной компоненты ККТ до актуального релиза решает эту проблему.
  3. Переход на e-mail отправку: При нестабильной работе SMS-сервиса ОФД в структуре XML вместо CustomerPhone можно заполнять реквизит CustomerEmail для бесплатной и надежной доставки электронного чека на почту клиента.
← На главную