При работе с торговым оборудованием в среде 1С 7.7 часто используется стандартная обработка fr_comm.ert. Одной из распространенных задач является корректная передача ставок НДС в фискальный регистратор, особенно когда требуется разделить товары по секциям или напечатать чек с признаком «Без НДС». В этой статье мы разберем, как программно управлять секциями и налогами, а также как правильно передавать данные кассира в соответствии с требованиями ФФД 1.05.
В фискальных регистраторах АТОЛ существует два основных подхода к определению ставки НДС в чеке. Рассмотрим их подробнее, чтобы понять, какой метод лучше использовать в вашем случае.
Способ 1: Настройка в таблицах ККТ (через секции)
В памяти кассового аппарата существует таблица «Секции» (или «Отделы»). Каждой секции можно заранее сопоставить определенную ставку налога. Например:
В коде 1С это выглядит как простая передача номера отдела через свойство Department:
Если СписокТоваров.НДС = 20 Тогда
Объект.Department = 1;
ИначеЕсли СписокТоваров.НДС = 0 Тогда
Объект.Department = 4; // Где 4-я секция в ККТ настроена как "Без НДС"
КонецЕсли;
Способ 2: Явное указание налога в драйвере
Если вы хотите, чтобы программа 1С сама определяла налог, независимо от настроек таблиц в кассе, необходимо использовать свойство TaxTypeNumber. Этот способ более гибкий и надежный. Проанализируем значения, которые может принимать этот параметр в драйвере АТОЛ 8.х:
0 — Налог берется из настроек секции в ККТ;1 — НДС 0%;2 — НДС 10%;3 — НДС 18% (в новых прошивках и версиях драйвера — 20%);4 — НДС не облагается (Без НДС);5 — НДС с расчётной ставкой 10%;6 — НДС с расчётной ставкой 18% (в новых прошивках — 20%).Если перед нами стоит задача оставить товар в первой секции (Department = 1), но при этом принудительно напечатать «Без НДС», нам необходимо совместить установку секции и типа налога. Разберем программный код для реализации этой логики:
// Устанавливаем количество товара
Объект.Quantity = СписокТоваров.Количество;
// Указываем цену
Объект.Price = СписокТоваров.Цена;
// Привязываем к первой секции
Объект.Department = 1;
// Принудительно устанавливаем тип налога "Без НДС"
Объект.TaxTypeNumber = 4;
// Регистрируем позицию
Объект.Registration();
Таким образом, драйвер проигнорирует настройки налога для секции 1, хранящиеся в памяти ККТ, и применит значение 4, переданное из 1С.
С введением формата фискальных данных 1.05 стало обязательным (или крайне рекомендуемым) передавать не только фамилию кассира, но и его ИНН. В драйвере АТОЛ 8-й версии это реализуется через работу с атрибутами (тегами).
Рассмотрим, как передать эти данные перед открытием чека. Выясним, какие теги нам понадобятся:
Пример кода для 1С 7.7:
// Передаем ФИО кассира
Объект.AttrNumber = 1021;
Объект.AttrValue = "Иванов И.И.";
Объект.WriteAttribute();
// Передаем ИНН кассира
Объект.AttrNumber = 1203;
Объект.AttrValue = "623450001223"; // ИНН должен быть строкой
Объект.WriteAttribute();
// Только после записи атрибутов открываем чек
Объект.OpenCheck();
Важное замечание по ИНН: Если ИНН кассира указан неверно (например, не хватает цифр или передана пустая строка), касса может выдать ошибку «Неверный формат реквизита» и чек не будет открыт. Проанализируем заполнение данных в справочнике «Сотрудники», прежде чем передавать их в драйвер.
При использовании старых обработок типа fr_comm.ert, программисты часто сталкиваются с жестко прописанными условиями проверки ставок. Посмотрим на типичную ошибку:
Если СписокТоваров.НДС = 18 Тогда ...
Если в вашей базе 1С ставка налога была переименована в «20%», это условие перестанет работать. Рекомендуется проверять ставку либо по числовому значению, либо через обращение к идентификатору перечисления. Кроме того, помните, что в драйвере АТОЛ индекс TaxTypeNumber = 3 универсален: для старых касс это будет 18%, для обновленных под текущее законодательство — 20%.
Для корректной работы с налогами в 1С 7.7 через АТОЛ 8.х мы рекомендуем:
TaxTypeNumber для каждой позиции чека, чтобы не зависеть от внутренних таблиц кассы.4 для товаров и услуг без НДС.OpenCheck.Применяя эти шаги, вы обеспечите соответствие ваших чеков требованиям налогового законодательства и добьетесь стабильной работы торгового оборудования.