При попытке подключения современного фискального регистратора (онлайн-кассы) к конфигурации «Бухгалтерия предприятия» редакции 2.0 (БП 2.0) разработчики часто сталкиваются с тем, что стандартные механизмы печати чека выглядят крайне упрощенными. Проанализируем ситуацию: в документе Приходный кассовый ордер (ПКО) код формирования данных для чека в процедуре ОсновныеДействияФормыЧек() сводится к созданию одной текстовой строки. Разберем подробнее, почему это происходит и как привести учет в соответствие с современным законодательством.
Рассмотрим фрагмент кода, который вызывает закономерные вопросы у специалистов, привыкших к требованиям 54-ФЗ. В типовой реализации БП 2.0 формирование таблицы платежей выглядит следующим образом:
СтрокаТаблицы = ТаблицаПлатежей.Добавить();
СтрокаТаблицы.Заголовок = "Принято от " + ПринятоОт + "|Основание: " + Основание;
СтрокаТаблицы.Сумма = Позиция.СуммаПлатежа;
Выясним причину такого лаконизма. Данный код был написан в эпоху «старого» порядка применения ККТ (до 2017 года). В то время фискальные регистраторы работали с ЭКЛЗ (электронная контрольная лента защищенная) и не требовали передачи в налоговую инспекцию детального состава чека. Достаточно было указать общую сумму операции и произвольный текст в заголовке чека. Понятия «номенклатура», «признак способа расчета» и «ставка НДС по каждой позиции» в электронном формате фискальных данных тогда отсутствовали в обязательном виде.
Проанализируем текущие требования. Согласно 54-ФЗ, в чеке должны быть обязательно указаны:
Очевидно, что стандартный код БП 2.0, формирующий только одну строку с заголовком, не позволяет выполнить эти требования. Программа просто «не знает» о необходимости разбивки суммы на товары, так как в документе ПКО на обычных формах эти данные зачастую даже не заполнены в явном виде (оплата часто идет по договору в целом).
Разберем, какие пути решения предлагает вендор. Фирма 1С официально заявила, что поддержка работы с онлайн-ККТ (передача данных в ОФД) реализована только в актуальных редакциях программ. Для конфигурации «Бухгалтерия предприятия» это редакция 3.0.
Рассмотрим основные причины, по которым поддержка не была добавлена в версию 2.0:
Следовательно, самым правильным и безопасным с точки зрения закона решением является переход на редакцию 3.0. В ней реализована полная поддержка форматов фискальных данных, интеграция с популярными моделями ККТ через драйверы версии 10.х и выше, а также автоматическое выделение НДС в чеках.
Если по каким-то критическим причинам переход на редакцию 3.0 невозможен в ближайшее время, рассмотрим, как можно доработать БП 2.0. Это потребует серьезного программирования и понимания работы драйверов ККТ (например, АТОЛ или Штрих-М).
Для реализации печати по 54-ФЗ в БП 2.0 необходимо выполнить следующие шаги:
1. Модернизация ПКО. Проанализируем, откуда брать данные. Если ПКО создается на основании документа РеализацияТоваровУслуг, нам необходимо в процедуре печати чека обращаться к табличной части документа-основания. Если же оплаты принимаются без основания, придется добавлять в ПКО новую табличную часть для расшифровки состава чека.
2. Прямое обращение к драйверу. Вместо использования устаревших функций БПО, встроенных в конфигурацию, программисты часто пишут код прямого взаимодействия с COM-объектом драйвера. Посмотрим на пример логики (на примере драйвера АТОЛ 10):
// Пример инициализации драйвера (упрощенно)
Драйвер = Новый COMОбъект("AddIn.FPrnM45");
Драйвер.УстановитьПараметр(Драйвер.LIBFPTR_PARAM_ITEM_NAME, "Наименование товара");
Драйвер.УстановитьПараметр(Драйвер.LIBFPTR_PARAM_PRICE, СуммаТовара);
Драйвер.УстановитьПараметр(Драйвер.LIBFPTR_PARAM_QUANTITY, 1);
Драйвер.УстановитьПараметр(Драйвер.LIBFPTR_PARAM_TAX_TYPE, Драйвер.LIBFPTR_TAX_VAT20);
Драйвер.РегистрацияПозиции();
3. Обработка ставок НДС. Важно правильно сопоставить ставки НДС из 1С с кодами налоговых групп в кассовом аппарате. Проанализируем ситуацию: в 1С ставка может называться "20%", а в драйвере кассы ей может соответствовать индекс "1". Ошибка в этом сопоставлении приведет к неверным данным в ОФД и потенциальным штрафам.
Выясним, чем рискует бизнес, оставаясь на старой редакции. Основная проблема — это постоянные изменения в законодательстве. Например, внедрение маркировки товаров (система «Честный ЗНАК») требует передачи кода маркировки (тег 1162) в момент пробития чека. Реализовать поддержку маркировки в БП 2.0 крайне сложно, так как для этого требуются обновленные библиотеки криптографии и специфические форматы обмена с ККТ, которые просто не тестируются вендором на старых конфигурациях.
Резюмируем: стандартный код в БП 2.0.66.55, который выводит в чек только «Принято от...», является легальным только для нефискальных документов или для внутреннего учета, не имеющего отношения к налоговой отчетности по 54-ФЗ. Для работы в рамках закона необходимо либо использовать внешние специализированные обработки, которые перехватывают управление печатью, либо (что настоятельно рекомендуется) выполнить переход на 1С:Бухгалтерию 3.0.