В розничной торговле при совмещении нескольких систем налогообложения (например, УСН и ЕНВД или патентной системы) владельцы магазинов часто сталкиваются с крайне неприятной проблемой. На ККМ периодически пробиваются чеки не с той системой налогообложения (СНО), которая должна быть по умолчанию. Особенно критично это выглядит, когда в программе 1С настроен ЕНВД, но в личном кабинете ОФД вдруг начинают «всплывать» чеки с УСН.
Самое коварное в этой ситуации — бессистемность ошибки. Чек с неверной СНО может пробиться один раз за день или несколько раз в периоды пиковой нагрузки (наплыва клиентов), а при попытке протестировать этот же товар отдельно — СНО определяется корректно. Давайте вместе разберем причины этого технического сбоя, проанализируем архитектуру конфигурации 1С:Розница 2.2 и выработаем пошаговый план решения проблемы.
Выясним, как именно программные механизмы 1С определяют, какую систему налогообложения отправить на фискальный регистратор. В конфигурациях линейки «1С:Розница» данные о налогах хранятся в нескольких связанных регистрах сведений:
СистемыНалогообложенияОрганизаций — здесь задается базовая (основная) налоговая система для юридического лица или ИП в целом. По логике разработчиков, в качестве основной СНО может выступать только общая (ОСН) или упрощенная (УСН) система.ВидыОсобыхНалоговОрганизаций — именно этот регистр отвечает за назначение специальных налоговых режимов (таких как ЕНВД или Патент). При этом привязка особого налога осуществляется не к организации напрямую, а к конкретному складу (торговой точке) организации.Если для какого-либо проданного товара в карточке не заполнена «Товарная группа», или для этой группы не настроено корректное распределение продаж по складам, алгоритм 1С не может сопоставить позицию со складом ЕНВД. В таком случае система применяет поведение по умолчанию — обращается к регистру СистемыНалогообложенияОрганизаций и забирает оттуда основную СНО предприятия (в нашем случае — УСН).
Рассмотрим ситуацию, когда при обычном подборе товаров в РМК чек пробивается корректно (ЕНВД), но при копировании документа или создании нового на основании старого СНО сбивается на УСН. Это происходит из-за механизма заполнения реквизитов по умолчанию.
При стандартном оформлении продажи через интерфейс кассира склад подтягивается жестко из настроек текущего рабочего места ККМ. Однако при копировании документа или оформлении возврата платформа может обратиться к «Персональным настройкам пользователя»:
Проанализируем крайне важный симптом: почему при переносе базы данных локально на рабочее место кассира (РМК) проблема полностью исчезла, а при работе по сети в файловом режиме она периодически возвращалась? Дело в механизме обработки транзакций и блокировок в файловых СУБД (формат *.1cd).
В моменты пиковой нагрузки, когда несколько пользователей одновременно проводят документы, формируют отчеты или происходит фоновая синхронизация РИБ (распределенной информационной базы), таблицы регистров сведений могут временно блокироваться. При фискализации чека код программы обращается к регистру ВидыОсобыхНалоговОрганизаций. Ниже приведен пример того, как это работает на уровне встроенного языка:
Попытка
// Запрос к регистру особых налогов для определения ЕНВД/Патента
ПараметрыСНО = ПолучитьОсобыйНалогСклада(ВыбранныйСклад, ТекущаяДата);
Если ПараметрыСНО = Неопределено Тогда
// Особый налог не настроен, используем СНО по умолчанию
СистемаНалогообложения = ПолучитьОсновнуюСНО(Организация);
Иначе
СистемаНалогообложения = ПараметрыСНО.ВидНалога;
КонецЕсли;
Исключение
// В случае сетевой блокировки или таймаута программа перехватывает ошибку,
// чтобы не прерывать обслуживание покупателя на кассе сбоем программы
СистемаНалогообложения = ПолучитьОсновнуюСНО(Организация);
ЗаписатьВЖурналРегистрации("Сбой определения СНО из-за блокировки базы. Использован дефолт.");
КонецПопытки;
Если в момент обращения к регистру таблица заблокирована другим процессом по сети, платформа 1С по таймауту может вернуть пустое значение. Конструкция Попытка...Исключение перехватывает это событие, предотвращая аварийное завершение работы кассира, но при этом подставляет базовую СНО из регистра СистемыНалогообложенияОрганизаций — то есть УСН.
Для решения этой проблемы мы рекомендуем отказаться от работы нескольких пользователей с одной сетевой файловой базой. Оптимальный вариант — использовать полноценный режим РИБ, где на каждом РМК развернута своя локальная база данных, а обмены происходят в фоновом режиме по расписанию. Также стоит рассмотреть перенос базы на клиент-серверный вариант (SQL) или ее публикацию на веб-сервере (IIS/Apache).
Еще одна неочевидная техническая деталь кроется во взаимодействии интеграционной компоненты 1С и драйвера торгового оборудования (особенно часто это проявляется на устаревших интеграционных библиотеках и 9-й версии драйверов АТОЛ):
Null), драйвер не останавливает печать, а применяет СНО по умолчанию.Чтобы исключить этот фактор, необходимо запустить «Утилиту регистрации ККТ АТОЛ» (без закрытия архива ФН и замены накопителя) и перерегистрировать кассу, установив ЕНВД (или патент) в качестве приоритетной СНО по умолчанию. Также настоятельно рекомендуется обновить драйверы торгового оборудования АТОЛ до стабильной 10-й версии и обновить обработку обслуживания ККТ в самой 1С.
Для гарантированного устранения проблемы выполним следующие действия:
ВидыОсобыхНалоговОрганизаций задан ЕНВД.