При доработке типовых конфигураций на платформе 1С 7.7 для работы с современными онлайн-кассами (ККТ) программисты часто сталкиваются с необходимостью корректной передачи атрибутов фискальных документов. Одним из наиболее важных аспектов является правильное указание Системы Налогообложения (СНО) и Признака способа расчета. В этой статье мы подробно разберем, какие коды использовать для драйверов Атол, как передавать теги согласно форматам фискальных данных (ФФД) и какие нюансы следует учитывать при написании кода в 7.7.
Система налогообложения в чеке передается через атрибут с номером 1055. Важно понимать, что в драйверах ККТ Атол эти значения часто передаются в виде битовой маски. Рассмотрим актуальные коды, которые необходимо использовать при разработке. Проанализируем список:
Важное замечание: Код 8, который ранее соответствовал ЕНВД, более не актуален, так как данная система налогообложения была отменена в РФ с 1 января 2021 года. Использование этого кода в современных реалиях может привести к ошибке регистрации чека.
Посмотрим на пример кода для передачи СНО через драйвер Атол в 1С 7.7:
// Пример установки ОСН (код 1)
Драйвер.AttrNumber = 1055;
Драйвер.AttrValue = 1; // Код системы налогообложения
Драйвер.WriteAttribute();
Признак способа расчета характеризует, каким образом производится оплата: является ли она авансом, предоплатой или полным расчетом в момент передачи товара. Разберем основные значения тега 1214, которые определены в ФФД:
Выясним важную техническую деталь: Тег 1214 является реквизитом предмета расчета. Это означает, что он должен передаваться отдельно для каждой товарной позиции внутри чека, а не один раз для всего документа. Если вы видите, что в печатной форме чека надпись «ПОЛНЫЙ РАСЧЕТ» дублируется под каждым товаром — это признак корректной работы кассы.
Рассмотрим, как правильно организовать цикл по товарам в 1С 7.7 для передачи этого признака. Выясним, что использование прямого обращения к AttrNumber эффективно в рамках старых версий драйверов (например, Атол 8 или 9), но логика остается схожей и для современных решений.
// В цикле перебора строк документа
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
// Регистрация позиции товара
Драйвер.Name = СокрЛП(Товар.Наименование);
Драйвер.Price = Цена;
Драйвер.Quantity = Количество;
Драйвер.Department = 1; // Секция
Драйвер.TaxType = 3; // Код НДС (например, 20%)
// Передаем признак способа расчета (Тег 1214) для каждой строки
Драйвер.AttrNumber = 1214;
Драйвер.AttrValue = 4; // Полный расчет
Драйвер.WriteAttribute();
// Передаем признак предмета расчета (Тег 1212) - Обязательно!
Драйвер.AttrNumber = 1212;
Драйвер.AttrValue = 1; // Товар
Драйвер.WriteAttribute();
Драйвер.Registration();
КонецЦикла;
Проанализируем ситуацию: многие разработчики забывают о теге 1212, однако он является обязательным. Он определяет тип позиции в чеке. Основные коды для этого тега:
Если ваша компания занимается услугами, необходимо передавать значение 4, иначе отчетность в налоговую будет уходить с некорректными данными о типе реализованного оборота.
Часто возникает путаница между двумя похожими терминами. Давайте разберем их различия раз и навсегда:
Признак расчета (Тег 1054) — определяет само направление движения денег по кассе. Он передается при открытии чека и может принимать значения:
Признак способа расчета (Тег 1214) — это то, о чем мы говорили выше (Предоплата, Аванс, Полный расчет). Он уточняет структуру оплаты внутри конкретного чека.
Если в вашей конфигурации 7.7 используется современный драйвер Атол 10 (через COM-объект AddIn.AtolDevice10), методы работы с атрибутами изменились. Теперь вместо WriteAttribute рекомендуется использовать связку методов setParam и registration. Рассмотрим пример:
// Пример для Атол 10 в стиле 1С 7.7
Драйвер.setParam(1212, 1); // Признак предмета расчета: Товар
Драйвер.setParam(1214, 4); // Признак способа расчета: Полный расчет
Драйвер.setParam(1055, 2); // СНО: УСН доход
Драйвер.registration();
Выясним причину одной из самых частых ошибок — "Ошибка программирования чека" или "Сумма всех типов оплаты меньше суммы чека". В 1С 7.7 точность вычислений иногда приводит к тому, что при расчете скидок возникают лишние знаки после запятой. ККТ Атол крайне чувствителен к итоговой сумме.
Рекомендация: Всегда самостоятельно вычисляйте итоговую сумму строки (Цена * Количество - Скидка) и передавайте её в драйвер в явном виде, чтобы ККТ не пересчитывала её и не возникло расхождения в 1 копейку.
Проанализировав все вышеперечисленное, мы видим, что успешная интеграция 1С 7.7 с ККТ требует строгого соблюдения актуальных требований ФФД. Передача правильных кодов СНО (тег 1055), признаков способа расчета (тег 1214) и типа предмета (тег 1212) гарантирует отсутствие штрафов и корректную работу кассового узла.