При интеграции онлайн-касс АТОЛ с конфигурациями 1С разработчики нередко сталкиваются с ситуацией: в XML-пакете фискализации чека явно передается нужный номер отдела (секции), однако на печатной ленте ККТ упорно выводится значение по умолчанию — СЕКЦИЯ 01. Разберем причины такого поведения кассового оборудования и рассмотрим способы корректной настройки и печати чеков с разделением по отделам.
Посмотрим на типовой вызов формирования чека через интеграционную компоненту:
Результат = ОбъектДрайвера.СформироватьЧек(ПараметрыПодключения.ИДУстройства, Кассир, Электронно, ДанныеЧека, НомерЧека, НомерСмены, ФискальныйПризнак, АдресСайтаПроверки);
При этом в структуре входного XML-пакета ДанныеЧека для каждой товарной позиции указывается атрибут Department:
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters PaymentType="1" TaxVariant="2" SenderEmail="" CustomerEmail="" CustomerPhone=""/>
<Positions>
<FiscalString Name="Шкаф шт" Quantity="1" Price="6670" Amount="6670" Department="2" Tax="18"/>
</Positions>
<Payments Cash="6670" CashLessType1="0" CashLessType2="0" CashLessType3="0"/>
</CheckPackage>
Несмотря на переданное значение Department="2", кассовый аппарат печатает на чеке первую секцию. Выясним причину этой проблемы.
Проанализируем технические факторы, приводящие к игнорированию номеров секций:
AddIn.ИнтеграционнаяКомпонента.ATOL_KKM_1C82_54FZ и ранних версиях ДТО 8/9) внутренний парсер XML игнорировал атрибут Department в теге FiscalString, передавая в низкоуровневую команду регистрации позиции значение по умолчанию (отдел 1).Если в конфигурации используется драйвер ДТО 8.х и требуется обязательное физическое разделение по отделам на чековой ленте, реализуем прямую печать чека через низкоуровневый объект AddIn.FPrnM8 в обход метода СформироватьЧек.
Рассмотрим пример кода регистрации позиции с явным указанием секции:
Драйвер = Новый COMОбъект("AddIn.FPrnM8");
Драйвер.DeviceEnabled = Истина;
// Открываем чек (1 - продажа)
Драйвер.CheckType = 1;
Драйвер.OpenCheck();
// Задаем параметры регистрируемой позиции
Драйвер.Name = "Шкаф шт";
Драйвер.Price = 6670;
Драйвер.Quantity = 1;
Драйвер.Department = 2; // Явно указываем номер нужного отдела
Драйвер.TaxNumber = 1;
// Регистрируем позицию
Драйвер.Registration();
// Закрываем чек с указанием суммы наличных
Драйвер.Summ = 6670;
Драйвер.TypeClose = 0; // 0 - наличные
Драйвер.Delivery();
Драйвер.CloseCheck();
Драйвер.DeviceEnabled = Ложь;
В актуальных версиях драйвера «АТОЛ: ККТ с передачей данных в ОФД (54-ФЗ) 10.Х» разработчики восстановили корректный парсинг атрибута Department в интеграционном механизме 1С. Разберем необходимые действия:
Если номер отдела кассирам на бумажном чеке не требуется, а вывод постоянной надписи «СЕКЦИЯ 01» только сбивает с толку, отключим данную строку в настройках самого аппарата:
Исторически разделение по отделам применялось для сверки итогов по Z-отчетам в конце смены (например, для разделения наличных и эквайринга, опта и розницы, систем налогообложения). В современных реалиях онлайн-касс Z-отчет формируется фискальным накопителем без разреза по секциям.
Рекомендуется вести всю необходимую аналитику непосредственно в учетной системе 1С с помощью стандартных отчетов по продажам, не перегружая кассовую ленту нефискальными реквизитами.