Как реализовать пробитие чеков по разным отделам (патентам) на одной ККМ в 1С 7.7

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

При переходе организации на патентную систему налогообложения (ПСН) часто возникает ситуация, когда предприниматель ведет несколько видов деятельности. Например, розничную торговлю и оказание услуг. В рамках законодательства это могут быть два разных патента. Чтобы не покупать отдельный кассовый аппарат для каждого направления, можно использовать одну ККМ, разделяя продажи по разным отделам (секциям). Рассмотрим подробнее, как это реализовать в среде 1С 7.7.

Принцип разделения продаж по отделам

Для того чтобы кассовый аппарат понимал, к какому патенту относится та или иная продажа, в коде обработки обслуживания торгового оборудования необходимо передавать номер секции. В объектной модели драйверов ККМ за это отвечает свойство Department (или Секция). Разберем по шагам, как модифицировать алгоритм пробития чека.

Во-первых, выясним, откуда программа будет брать номер отдела. Чаще всего в 1С 7.7 (например, в конфигурации "Торговля и Склад 9.2") номер отдела можно привязать к категории товара или непосредственно к справочнику номенклатуры. Проанализируем пример кода, который необходимо вставить в функцию регистрации позиции товара:


// Пример установки номера секции перед регистрацией товара
НомерСекции = ?(Товар.ВидДеятельности = "Услуги", 2, 1); 
Объект.Department = НомерСекции;
// Далее следует команда регистрации (например, Sale или Registration)

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

Реализация для драйверов «ШТРИХ-М»

Для аппаратов производства «Штрих-М» разделение по отделам поддерживается на уровне протокола. Однако стандартный отчет с гашением (Z-отчет) не всегда выводит детальную аналитику по секциям в том виде, который удобен бухгалтеру. Проанализируем ситуацию: чтобы получить итоги по каждому патенту в конце смены, рекомендуется перед закрытием смены программно вызывать отчет по отделам.

Рассмотрим пример функции закрытия смены для драйвера Штрих-М:


Функция ЗакрытьСмену(Объект, Пароль, НомерЛенты)
    Рез = 0;
    
    Если ПустоеЗначение(Объект) = 1 Тогда
        ОписаниеРезультата = "устройство не подключено";
    ИначеЕсли ПодключитьсяКФР(Объект, Пароль) = 1 Тогда
        // Сначала печатаем отчет по отделам для аналитики
        Объект.Password = Пароль;
        Объект.PrintDepartmentReport(); // Команда печати отчета по секциям
        
        // Затем выполняем стандартное закрытие смены с гашением
        Объект.Password = Пароль;
        Объект.PrintReportWithCleaning();
        
        Если Объект.ResultCode <> 0 Тогда
            ОписаниеРезультата = ПолучитьОписаниеРезультата(Объект);
            ОтключитьсяОтФР(Объект, Пароль, 0);
            Возврат 0;
        КонецЕсли;
        
        // Получаем номер смены
        Объект.Password = Пароль;
        Объект.GetECRStatus();
        НомерЛенты = Объект.SessionNumber + ?(Объект.ECRAdvancedMode=5, 1, 0);
        
        ОтрезатьЧек(Объект, Пароль);
        Рез = ОтключитьсяОтФР(Объект, Пароль); 
    КонецЕсли;
    
    Возврат Рез;
КонецФункции

В данном коде метод PrintDepartmentReport() позволяет получить на кассовой ленте расшифровку выручки по каждой секции, что крайне полезно для ведения раздельного учета по патентам. После этого выполняется метод PrintReportWithCleaning(), который обнуляет итоги и закрывает смену в фискальном накопителе.

Реализация для драйверов «АТОЛ»

Работа с драйверами АТОЛ (особенно версий 8.х и выше) в 1С 7.7 строится на использовании свойства ReportType. Для получения нужных отчетов необходимо переключать режимы работы кассы. Разберем, как реализовать последовательную печать отчета по отделам и Z-отчета для АТОЛ.

Посмотрим на пример реализации:


// Входим в режим отчетов (Mode = 3)
Объект.Password = ПарольАдминистратора;
Объект.Mode = 3;

Если Объект.SetMode() = 0 тогда
    // Сначала снимаем отчет по отделам (ReportType = 7)
    Объект.ReportType = 7;
    Если Объект.Report() = 0 тогда
        // Отчет по отделам успешно напечатан
    КонецЕсли;

    // Снимаем основной Z-отчет с гашением (ReportType = 1)
    Объект.ReportType = 1;
    Если Объект.Report() = 0 тогда
        Рез = 1; // Смена успешно закрыта
    КонецЕсли;
КонецЕсли;

Обратите внимание, что значение ReportType = 7 соответствует отчету по секциям. Это стандартный метод для большинства ККМ АТОЛ. Перед выполнением этих команд программа должна убедиться, что свойство SessionOpened не равно нулю, то есть смена действительно открыта.

Важные требования 54-ФЗ и работа с СНО

В современных условиях (использование онлайн-касс) простого разделения по отделам через свойство Department может быть недостаточно. Согласно требованиям 54-ФЗ, в чеке должна быть указана конкретная Система Налогообложения (СНО). Даже если у вас два патента, в ККМ должна быть зарегистрирована ПСН.

Рассмотрим важные нюансы, которые следует учесть при доработке 1С 7.7:

  1. Тег 1055: Это признак системы налогообложения. Если на одной кассе используются разные СНО (например, УСН и Патент), вы обязаны передавать этот тег в каждом чеке. Для драйверов АТОЛ 10 это делается через setParam(1055, значение). В старых компонентах для 1С 7.7 может потребоваться обновление внешней библиотеки (например, FPrnM1C82.dll или аналогичных).
  2. Запрет смешанных чеков: Выясним причину частых ошибок — в одном фискальном документе (чеке) нельзя указывать позиции с разными СНО. Если покупатель берет товар по одному патенту и услугу по другому, 1С 7.7 должна автоматически сформировать два отдельных чека. Попытка пробить их одним документом через разные отделы, но с разными СНО, приведет к ошибке драйвера.
  3. Настройка секций в ККМ: Убедитесь, что в таблицах самой кассы (через утилиту тест драйвера) отделы настроены корректно. Каждый номер отдела может быть жестко привязан к определенной ставке налога или СНО. Проверьте Таблицу 1 (для Штрих-М) или Настройки секций (для АТОЛ).

Итоги и рекомендации

Подводя итог, можно подтвердить: использование одной ККМ для двух патентов в 1С 7.7 технически возможно и оправдано. Для этого необходимо:

Помните, что 1С 7.7 — это довольно старая платформа, и работа с современным кассовым оборудованием в ней часто требует "ручного" управления параметрами драйвера через внешние компоненты. Тщательно тестируйте код на учебном (нефискальном) режиме перед запуском в рабочую эксплуатацию.

← На главную