Как устранить ошибку «Порт занят» и настроить ставку НДС для Атол 30Ф в 1С:Управление торговлей 10.3?

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

При интеграции современных онлайн-касс, таких как Атол 30Ф, с устаревшими конфигурациями на базе обычных форм (например, УТ 10.3), специалисты часто сталкиваются с двумя критическими проблемами: невозможностью установить связь с устройством из-за «занятого порта» и некорректным отображением налоговых ставок в чеке (печать «НДС 0%» вместо «Без НДС»). Разберем подробно, как решить эти задачи, проанализируем технические нюансы работы драйверов и приведем примеры необходимых правок в коде 1С.

Причина возникновения ошибки «Порт занят» или «Нет связи»

Современные кассы Атол при подключении через USB используют технологию EthernetOverUsb (EoU). Это позволяет кассе одновременно обмениваться данными с учётной системой и передавать пробитые чеки оператору фискальных данных (ОФД). Для реализации этого механизма драйвер создает в операционной системе не один, а два виртуальных COM-порта.

Рассмотрим типовую ситуацию: в диспетчере устройств Windows появляются, например, COM3 и COM4. Проблема заключается в том, что один из этих портов жестко зарезервирован службой EthOverUsb для передачи данных в интернет. Если 1С пытается достучаться до кассы именно через этот «занятый» порт, возникает ошибка. Если же выбрана неверная скорость или порт, который не активен, мы получаем сообщение «Нет связи».

Для решения проблемы выполним следующие шаги:

  1. Проанализируем состояние служб: Откроем список служб Windows (services.msc) и найдем службу EthOverUsb. На время настройки в 1С её можно остановить, чтобы убедиться, что она не блокирует нужный нам канал связи.
  2. Проверим настройки драйвера: Запустим «Тест драйвера ККТ». В параметрах связи поочередно проверим оба порта. Тот порт, на котором касса ответит (появится модель и серийный номер), и является рабочим.
  3. Определим роль портов: Как правило, если рабочий порт — COM3, то для обмена с ОФД в настройках службы EoU должен быть указан COM4. Они не должны совпадать.
  4. Выполним «чистую» инициализацию: Часто порт остается заблокированным из-за «зависшего» процесса предыдущей программы (например, если до этого была открыта «Розница» или сам Тест драйвера). Проанализируем ситуацию: закроем все приложения, использующие ККТ, и выполним полную перезагрузку компьютера и самой кассы (выключить и включить питание).

Как показывает практика, после полной перезагрузки в 1С:УТ 10.3 следует выбрать тот порт, который в Тесте драйвера определялся как рабочий, и связь будет установлена. Если ошибка «Порт занят» сохраняется в 1С, но в драйвере всё работает — значит, в самой 1С открыто несколько сеансов или форма настройки торгового оборудования блокирует сама себя.

Настройка корректного отображения НДС (Без НДС vs 0%)

Вторая распространенная проблема — когда при использовании системы налогообложения ЕНВД или Патент в чеке печатается «НДС 0%» вместо положенного «Без НДС». С точки зрения налогового законодательства это разные понятия, и ошибка может привести к штрафам.

Выясним причину: 1С:УТ 10.3 передает ставку налога в драйвер в виде числа или индекса. В старых обработках обслуживания часто зашита логика, где значение 0 интерпретируется кассой как ставка 0%. Для передачи признака «Без НДС» в протоколе Атол (особенно для ФФД 1.05) требуется передавать специфический тег или индекс налога, установленный в таблицах ККТ.

Для исправления ситуации нам потребуется внести изменения в код обработки обслуживания или в общий модуль конфигурации. Разберем, как подготовить данные для фискализации.

Правка кода для фискализации чека

Найдем в конфигураторе модуль, отвечающий за формирование XML-пакета для кассы. Обычно это функция ПодготовитьДанныеДляФискализацииЧека в обработке ATOL_KKT_10 или аналогичной. Нам нужно проанализировать, какая ставка НДС уходит в структуру СтрокаЧека.

Посмотрим на пример логики, которую необходимо внедрить для корректной передачи ставки «Без НДС»:


// В цикле обхода строк чека проверяем ставку
СтавкаНДС = ТекущаяСтрока.СтавкаНДС;

Если СтавкаНДС = Перечисления.СтавкиНДС.НДС0 Тогда
    // Это именно ставка 0%
    ДанныеСтроки.Вставить("TaxRate", "v0"); 
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
    // Для Атола признак "Без НДС" часто передается как "none" 
    // или соответствующий индекс из таблиц (например, 6)
    ДанныеСтроки.Вставить("TaxRate", "none"); 
КонецЕсли;

Если ваша конфигурация использует старый механизм (через передачу номера налоговой секции), необходимо проверить настройки в самом драйвере Атол. Проанализируем таблицы налога в кассе: зайдем в Тест драйвера — Свойства — Параметры ККТ — Налоги. Посмотрим, под каким номером значится «Без НДС». Обычно это индекс 4 или 6. Убедимся, что в коде 1С передается именно этот номер.

Проанализируем функцию получения ставки в модуле ОбщегоНазначения или МенеджерОборудования. Часто там используется метод ПолучитьСтавкуНДСЧислом. Если товар продается без НДС, метод возвращает 0. Нам нужно перехватить это значение и преобразовать его в текстовую константу, которую ожидает драйвер.


Функция ПолучитьСтавкуНДСДляАтол(СтавкаПеречисление) Экспорт
    Если СтавкаПеречисление = Перечисления.СтавкиНДС.БезНДС Тогда
        Возврат "none"; // Специальное значение для драйвера Атол 10.х
    ИначеЕсли СтавкаПеречисление = Перечисления.СтавкиНДС.НДС0 Тогда
        Возврат "0";
    ИначеЕсли СтавкаПеречисление = Перечисления.СтавкиНДС.НДС10 Тогда
        Возврат "10";
    Иначе
        Возврат "20";
    КонецЕсли;
КонецФункции

Дополнительные настройки Windows 10

Иногда связь с кассой пропадает не сразу, а через некоторое время. Это связано с агрессивным энергосбережением Windows 10. Разберем, как это предотвратить:

  1. Перейдем в Диспетчер устройств.
  2. Найдем раздел Контроллеры USB.
  3. Для каждого «Корневого USB-концентратора» откроем Свойства.
  4. На вкладке Управление электропитанием снимем галочку «Разрешить отключение этого устройства для экономии энергии».

Это гарантирует, что виртуальные COM-порты не «уснут» в процессе работы, и 1С не потеряет связь с Атол 30Ф в самый ответственный момент при пробитии чека.

Подведем итог: для стабильной работы Атол 30Ф в УТ 10.3 необходимо четко разделить порты между службой EoU и самой 1С, использовать актуальные обработки обслуживания и при необходимости точечно подправить логику формирования XML в коде, чтобы ставка налога соответствовала требованиям ФНС. Совместная работа программных настроек 1С и параметров драйвера позволит эксплуатировать старую конфигурацию с новым торговым оборудованием без сбоев.

← На главную