Переход на применение контрольно-кассовой техники по правилам Федерального закона № 54-ФЗ полностью изменил принципы взаимодействия учетных программ 1С с фискальными регистраторами. Вместо накопителя ЭКЛЗ в кассах используется фискальный накопитель (ФН), а фискальные документы передаются оператору фискальных данных (ОФД). Разберем типовые технические сложности, возникающие при внедрении онлайн-касс в 1С, и способы их решения.
Проанализируем базовый принцип работы оборудования. В современных кассовых аппаратах (например, линейки АТОЛ или ШТРИХ-М) связь с компьютером и ОФД разделена логически или физически:
Классическая проблема возникает при многопользовательской работе в распределенных терминальных сессиях. В типовых конфигурациях (Управление торговлей, Комплексная автоматизация, ERP, УПП) обращение к торговому оборудованию часто инициируется при открытии списков документов (например, журнала ПКО или РКО). Если кассир уже захватил виртуальный COM-порт, все остальные терминальные пользователи при открытии форм зависают и получают ошибку блокировки порта.
Разберем по шагам, как локализовать и устранить эту проблему:
Если глЗначениеПеременной("глТекущийПользователь").Кассир Тогда
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
КонецЕсли;
ОповещениеПриОтключении = Новый ОписаниеОповещения("ОтключитьОборудованиеЗавершениеПоУмолчанию", МенеджерОборудованияКлиент);
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПоТипу(ОповещениеПриОтключении,
ЭтаФорма.УникальныйИдентификатор, МенеджерОборудованияКлиент.ПреобразоватьСписокСтрокойВМассив("ККТ"));
При переходе на работу через библиотеку подключаемого оборудования (БПО) данные чека передаются в драйвер в виде XML-пакета CheckPackage. Ошибка No XML attribute TaxVariant означает, что в заголовке чека не передан обязательный реквизит применяемой системы налогообложения (СНО).
В XML-структуре атрибут TaxVariant должен соответствовать одной из разрешенных систем:
OSN — общая система налогообложения;USN_Income — упрощенная СНО (доходы);USN_Income_Outcome — упрощенная СНО (доходы минус расходы);ENVD — единый налог на вмененный доход;ESN — единый сельскохозяйственный налог;Patent — патентная система.Если в организации настроено совмещение режимов (например, УСН и ЕНВД), нельзя пробивать товары разных систем в одном чеке. В документе обязательно должен формироваться отдельный пакет фискализации с указанием конкретного кода СНО в атрибуте TaxVariant.
Согласно требованиям 1С к разработке драйверов ККТ версии 2.1 и выше, параметры налогообложения позиций чека являются строковыми, а не числовыми. Распространенная ошибка — подменять ставку «Без НДС» нулевой ставкой «0%».
В XML-описании позиций Positions необходимо строго разграничивать:
none. В таблице ставок драйвера кассы это соответствует признаку «Без налога / Без НДС».0 (или строка "0") передается исключительно для операций, облагаемых по реальной ставке НДС 0% (например, при экспорте). Использование ставки 0% вместо «Без НДС» приводит к ошибкам в отчетах налоговой службы.По правилам применения ККТ смена на кассе не может длиться более 24 часов. Если смена превышена, фискальный регистратор блокирует печать новых чеков до снятия Z-отчета (закрытия смены). В самописных модулях или интеграциях для 1С:Предприятия 7.7 и 8.x можно заблаговременно проверить этот признак через свойства драйвера:
ККМ = СоздатьОбъект("AddIn.FPrnM45");
ККМ.CurrentDeviceIndex = 0;
ККМ.DeviceEnabled = 1;
ККМ.Mode = 1;
ККМ.SetMode();
ККМ.RegisterNumber = 18;
СменаОткрыта = ККМ.SessionOpened;
Если СменаОткрыта = -1 Тогда
ЕстьОграничение24 = ККМ.SessionExceedLimit;
Если ЕстьОграничение24 = -1 Тогда
Сообщить("Время смены превышено! Необходимо выполнить закрытие смены.");
КонецЕсли;
КонецЕсли;
Свойства регистров Year, Month, Day, Hour, Minute, Second позволяют получить точное время наступления лимита продолжительности смены и уведомить пользователя до начала пробития длинного чека.
По закону чек должен содержать построчную расшифровку номенклатуры, количество, цену и итоговую сумму с учетом скидок. Рассмотрим, как это реализовано в учетных решениях:
Positions разрешено передавать тег TextString с произвольным текстом. Этот текст выводится на кассовую ленту между строками товаров, не нарушая фискальную целостность пакета данных.Перед проведением процедуры фискализации или перерегистрации фискального накопителя через утилиту производителя обязательно синхронизируйте системное время компьютера с точным интернет-временем. Фискальный накопитель содержит жесткую аппаратную защиту от расхождения дат. Если дата на компьютере окажется установлена вперед (даже на один день), и в накопитель запишется фискальный документ будущим числом, касса заблокируется с ошибкой неверной даты. Восстановить работу накопителя можно будет только после фактического наступления этой даты либо путем дорогостоящей замены испорченного ФН.