Как передать собственный номер чека из 1С в кассовый аппарат АТОЛ 30Ф

Программист 1С v7.7 Торговля и дистрибуция
← На главную

При автоматизации розничной торговли на базе 1С (особенно на классических версиях, таких как 7.7) часто возникает задача синхронизации номеров документов. Разработчики стремятся к тому, чтобы номер чека, напечатанный на ленте, полностью совпадал с номером документа в информационной базе (ИБ). Однако специфика работы современных онлайн-касс и требования 54-ФЗ накладывают определенные ограничения на этот процесс. Разберем подробно, почему нельзя просто заменить номер чека и какими методами можно добиться желаемого результата.

Почему нельзя просто передать свой номер чека

Проанализируем техническую составляющую вопроса. В любой онлайн-кассе, включая АТОЛ 30Ф, за нумерацию отвечает не внешняя программа, а внутреннее ПО кассы (прошивка) и Фискальный Накопитель (ФН). Существует системный реквизит — Тег 1042 (номер чека за смену). Этот реквизит генерируется автоматически: каждый новый фискальный документ получает номер на единицу больше предыдущего.

Важно понимать: разработчики прошивок намеренно закрыли возможность изменения этого поля извне, чтобы исключить махинации с отчетностью. Номер чека должен быть строго последовательным в рамках одной смены. Поэтому, как бы мы ни старались передать значение через обработку обслуживания, касса всё равно «впихнет» своё системное значение в поле Номер чека.

Тем не менее, существует несколько проверенных способов вывести нужный нам номер (например, номер документа из 1С без префиксов) на бумажный чек и даже передать его в ОФД. Рассмотрим их подробнее.

Способ 1. Печать нефискальной текстовой строки

Это самый простой и распространенный метод. Мы не меняем системный номер, а просто дописываем свой текст в тело чека. Этот текст будет виден покупателю на бумаге, но он не является обязательным фискальным реквизитом.

Разберем, как это реализовать программно. Если вы используете драйвер АТОЛ версии 8 (ДТО 8), который часто встречается в связке с 1С 7.7, нам понадобятся свойства Caption и метод PrintString. Посмотрим на пример кода:


// Предположим, что объект драйвера уже инициализирован как 'driver'
// Получаем очищенный номер из 1С (например, "000045" -> "45")
НомерИз1С = СокрЛП(Число(ТекущийДокумент.НомерДок));

driver.Caption = "ДОКУМЕНТ ИБ: " + НомерИз1С;
driver.PrintString(); 

Этот блок кода нужно вставить в обработку обслуживания ККТ в момент формирования тела чека (обычно между открытием чека OpenCheck и его закрытием CloseCheck). В результате на чеке появится дополнительная строка, по которой будет легко найти документ в базе 1С при возврате товара.

Способ 2. Использование Тега 1192 (Дополнительный реквизит чека)

Если вам необходимо, чтобы номер из 1С не просто печатался на бумаге, но и уходил в электронном виде в ОФД (Налоговую), следует использовать специализированные теги. Наиболее подходящим для этих целей является Тег 1192 (Дополнительный реквизит чека).

Рассмотрим преимущества этого метода:

  1. Данные официально фиксируются в фискальном документе.
  2. Номер будет доступен при проверке чека через мобильное приложение ФНС.
  3. Это не нарушает логику сквозной нумерации кассы.

Проанализируем реализацию для драйвера АТОЛ 10-й версии, так как в нем работа с тегами реализована наиболее прозрачно. Для передачи значения используется метод setParam:


// Устанавливаем значение для тега 1192
// Это нужно сделать ДО вызова метода закрытия чека
driver.setParam(1192, "1С-45");
driver.utilFormTlv();
driver.setParam(65562, driver.getParamByteArray(65571)); // Передаем сформированный атрибут

В ДТО 8 это делается через запись атрибута реквизита, что несколько сложнее в реализации на языке 1С 7.7, но также возможно через прямое обращение к методам драйвера согласно документации (Приложение 15 в Drivers8_FprnM_PM.pdf).

Способ 3. Добавление номера к ФИО кассира

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

Это выглядит примерно так: Кассир: Иванова И.И. (Док №45). Хотя этот способ технически рабочий, мы не рекомендуем использовать его как основной, так как он может вызвать вопросы у проверяющих органов из-за некорректного заполнения данных о сотруднике.

Способ 4. Использование Редактора шаблонов АТОЛ

Для ККТ АТОЛ 30Ф существует специальная утилита — «Редактор шаблонов чеков». С её помощью мы можем изменить визуальное представление документа без правки кода в 1С.

Рассмотрим алгоритм действий:

  1. Запускаем редактор шаблонов и считываем текущий шаблон из кассы.
  2. Находим блок, где выводится стандартный номер чека.
  3. Рядом или вместо него (если закон позволяет скрыть визуальное отображение системного номера) добавляем поле для пользовательского текста.
  4. В 1С настраиваем передачу номера документа в это конкретное поле шаблона.

Этот метод хорош тем, что позволяет выделить ваш номер крупным шрифтом или разместить его в «подвале» чека, сделав его максимально заметным для клиента и персонала.

Резюме и рекомендации

Проанализировав ситуацию, мы приходим к следующим выводам:

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

← На главную