Как добавить ставку НДС 22% в 1С:Розница 2.3 при обмене с АТОЛ Frontol 6?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Налоговый учет Торговля и дистрибуция
← На главную

В процессе эксплуатации конфигурации 1С:Розница 2.3 пользователи нередко сталкиваются с необходимостью применения нестандартных налоговых ставок. Одной из таких ситуаций является потребность в использовании НДС 22%. Это актуально для определенных внешних рынков или специфических групп товаров (схожие нюансы имеет, например, Разливное пиво: выгрузка во Фронтол 6 из Розницы 2.3). Проблема заключается в том, что в типовом перечислении СтавкиНДС данной позиции нет, и механизмы обмена с оборудованием АТОЛ ККМ Офлайн (Frontol 6), детально описанные в статье Загрузка - выгрузка Фронтол 6 (Frontol) - 1С: Розница 2.3, «из коробки» не обучены передавать такой идентификатор. Рассмотрим подробно, как диагностировать и устранить эту проблему программными и административными методами.

Анализ причины возникновения проблемы

Проанализируем ситуацию: при обмене данными в формате АТОЛ Офлайн (даже если настроен Обмен Розницы 2.3 с Frontol 6 через FTP) система формирует текстовый файл, в котором каждой позиции номенклатуры присваивается индекс налоговой ставки. Эти индексы жестко прописаны в программном коде модулей обмена. Если в метаданных конфигурации отсутствует ставка 22%, то функция формирования файла обмена просто не находит соответствия. Это напоминает ситуации, когда требуется Исправление ошибки выгрузки никотиносодержащей продукции или выполняется Выгрузка номенклатуры из Розницы 2.3 во Frontol 6 для маркированных товаров — стандартный алгоритм либо пропускает поле, либо выдает ошибку. Для версий ПРОФ мы можем внести изменения в код, а для Базовых версий нам придется прибегнуть к хитрости на стороне кассового ПО.

Решение №1: Программная доработка модулей обмена (для версии ПРОФ)

Разберем по шагам, какие изменения необходимо внести в конфигурацию или расширение (если вы не планируете использовать внешние инструменты, такие как Легкая выгрузка во Frontol 6 из 1С: Розница). Основная логика сосредоточена в общих модулях, отвечающих за работу с офлайн-оборудованием. Нам потребуется модифицировать функции, которые определяют номера налогов и формируют структуры для выгрузки.

В первую очередь обратим внимание на модуль ОфлайнОборудованиеАтолККМВызовСервера. Здесь необходимо расширить структуру налогов. Рассмотрим пример реализации функции НомераНалоговНаККМПоУмолчанию:


Функция НомераНалоговНаККМПоУмолчанию() Экспорт
    Налоги = Новый Структура;
    Налоги.Вставить("НомерНалога0", 1);
    Налоги.Вставить("НомерНалога10", 2);
    Налоги.Вставить("НомерНалога20", 11); // Стандарт для 20%
    Налоги.Вставить("НомерНалогаБезНДС", 4);
    Налоги.Вставить("НомерНалога5", 7);
    Налоги.Вставить("НомерНалога7", 8);
    Налоги.Вставить("НомерНалога18", 5);
    // Добавляем поддержку нашей новой ставки
    Налоги.Вставить("НомерНалога22", 11); 
    Возврат Налоги;
КонецФункции

Обратите внимание, что в примере выше для ставки 22% используется индекс 11. Выясним причину выбора этого номера: в Frontol 6 индексы с 1 по 10 обычно зарезервированы под стандартные ставки (18, 20, 10, 0, Без НДС). Использование индекса 11 позволяет избежать конфликтов с предопределенными настройками драйвера.

Далее нам необходимо научить систему сопоставлять строковое значение ставки с кодом. Модифицируем функцию КодНалогаПоСтавкеНДС:


Функция КодНалогаПоСтавкеНДС(СтавкаНДС)
    КодНалога = Неопределено;
    Если СтавкаНДС = "0" Тогда
        КодНалога = 4;
    ИначеЕсли СтавкаНДС = "10" Тогда
        КодНалога = 2;
    ИначеЕсли СтавкаНДС = "20" Тогда
        КодНалога = 1;
    ИначеЕсли СтавкаНДС = "22" Тогда
        КодНалога = 11; // Наш новый код для Frontol
    КонецЕсли;
    Возврат КодНалога;
КонецФункции

Важно не забыть про описание самой ставки в функции СпискиНалоговИКомбинацийНалогов, чтобы визуально в интерфейсе настройки оборудования мы могли видеть эту ставку:


// Добавление в список налогов
СтавкаНалога22 = Новый Структура;
СтавкаНалога22.Вставить("Код", 11);
СтавкаНалога22.Вставить("Текст", НСтр("ru = 'НДС 22%'"));
СтавкаНалога22.Вставить("Значение", 22);
СтавкаНалога22.Вставить("НомерНалогаККМ", НалогиНаККМ.НомерНалога22);
НалогНДС.Ставки.Добавить(СтавкаНалога22);

Устранение ошибки «Поле объекта не обнаружено (НомерНалога22)»

Часто при внедрении этого «костыля» разработчики сталкиваются с ошибкой в модуле ОфлайнОборудованиеАтолККМКлиент. Выясним причину: это происходит из-за того, что структура Налоги передается между сервером и клиентом, и если вы добавили поле на сервере, но не инициализировали его в клиентском модуле, возникнет исключение. Проверьте, чтобы во всех процедурах, где фигурирует объект Параметры или Налоги, новое поле было объявлено. Обязательно проверьте наличие свойства в модуле ОфлайнОборудованиеАтолККМКлиент.Модуль на строке, где происходит присвоение: Налоги.НомерНалога22 = Параметры.НомерНалога22;.

Решение №2: Использование официальных патчей

Если вы не хотите менять конфигурацию вручную, следует проверить наличие официальных исправлений от фирмы 1С. Для Розницы 2.3 (начиная с релизов 2.3.23.х и выше) выпускаются расширения (патчи) на партнерских конференциях или в сервисе «1С:Обновление программ». Посмотрите в разделе исправлений патч с префиксом EF_, касающийся поддержки новых налоговых ставок. Однако стоит учитывать, что патчи могут некорректно устанавливаться на сильно измененные конфигурации или Базовые версии.

Решение №3: Обходной путь для Базовой версии (Метод «Подмены»)

Рассмотрим ситуацию, когда у вас Базовая версия «1С:Розница», в которой редактирование кода запрещено. В этом случае мы воспользуемся методом трансляции ставок на стороне кассового ПО Frontol 6.

  1. В 1С выберите для товаров, которые должны продаваться с НДС 22%, любую другую неиспользуемую ставку, например, НДС 20% или НДС 0%.
  2. Выгрузите товары в ККМ Офлайн. В файле обмена (обычно это goods.txt) этим товарам будет присвоен индекс, соответствующий выбранной ставке (например, индекс 1 для НДС 20%).
  3. Перейдите в настройки Frontol 6: раздел «Справочники» -> «Налоги» -> «Налоговые ставки».
  4. Найдите ставку с индексом 1. Измените ее параметры: установите Значение = 22 и Наименование = НДС 22%.
  5. Теперь при получении данных от 1С, Frontol будет видеть индекс 1, но применять к нему ставку 22%.

Важное замечание: При таком подходе в отчетах 1С сумма НДС будет считаться по старой ставке (20%), а в чеках ККТ и отчетах Frontol — по новой (22%). Это допустимо как временная мера, но требует ручной корректировки бухгалтерской отчетности в конце периода.

Настройка оборудования и прошивка ККТ

Проанализируем техническую сторону взаимодействия Frontol и кассового аппарата. Даже если Frontol успешно принял ставку 22% из 1С, сама онлайн-касса должна уметь печатать такие данные. Для работы с произвольными ставками:

Таким образом, мы рассмотрели три способа решения проблемы: от прямого изменения программного кода модулей обмена ОфлайнОборудование до административной подмены настроек в самом Frontol 6. Выбор метода зависит от версии вашей программы и возможности вносить изменения в конфигурацию.

← На главную