При переходе на новые релизы конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 пользователи часто сталкиваются с неприятной ситуацией: при печати чека из документа Платежное поручение входящее для физических лиц на чеке вместо ожидаемого типа оплаты «Электронно» (безналичными) печатается «Последующая оплата "Кредит"» (или «Постоплата»). Более того, такие чеки в личном кабинете ОФД отображаются некорректно и не попадают в итоги по электронным (безналичным) расчетам, хотя сам фискальный документ регистрируется.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем взаимодействие драйверов ККТ с платформой 1С, изучим методологию работы с чеками по 54-ФЗ и рассмотрим пути устранения этой ошибки. Также мы разберем сопутствующую техническую проблему — ошибку обращения к свойству ИмяПредопределенныхДанных при обновлении ставок НДС до 20% в старых базах.
---
Для начала выясним первопричину сбоя. В старых форматах фискальных данных (ФФД 1.0) и устаревших версиях драйверов торгового оборудования (например, АТОЛ ДТО 8.х) типы оплат кодировались по упрощенной схеме. При переходе на формат ФФД 1.05 и обновлении прошивок ККТ под требования законодательства, внутренний протокол обмена ККТ претерпел значительные изменения.
В современных прошивках ККТ АТОЛ сетка типов оплат выглядит следующим образом:
Когда мы используем устаревший драйвер ККТ (например, АТОЛ 8-й версии) совместно с обновленным кодом конфигурации УПП 1.3, возникает рассинхронизация. Интеграционная компонента 1С передает драйверу один код типа оплаты, а драйвер транслирует его в кассу некорректно. В результате ККТ считает, что реальной оплаты безналичными средствами не произошло, трактует операцию как отгрузку в долг и закрывает чек типом оплаты «Последующая оплата (Кредит)».
---
Самым надежным и методически верным решением является полный отказ от использования 8-й и 9-й линеек драйверов АТОЛ и переход на актуальный 10-й драйвер. Выполним следующие шаги:
Современные интеграционные компоненты 1С корректно передают структуры XML-пакетов для фискализации на ДТО 10, распределяя безналичные платежи в нужный тип оплаты.
---
Если по каким-то организационным или техническим причинам немедленный переход на 10-й драйвер невозможен, нам придется временно скорректировать программный код УПП. Нам необходимо принудительно сопоставить типы оплат ККТ с передаваемыми структурами.
Для этого проанализируем функцию формирования XML-пакета для фискализации чека. Обычно она находится в общем модуле МенеджерОборудованияВызовСервера или в модуле обработки обслуживания ККТ. Найдем фрагмент кода, отвечающий за заполнение таблицы оплат, и сопоставим его со следующим алгоритмом:
Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой")
Или ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") Тогда
// Для электронных безналичных оплат передаем соответствующий тип ККТ
СтрокаОплаты.Вставить("ТипОплаты", ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Электронно"));
СтрокаОплаты.Вставить("Наименование", "Безналичные");
Иначе
// Для наличных расчетов
СтрокаОплаты.Вставить("ТипОплаты", PresettedValue("Перечисление.ТипыОплатыККТ.Наличные"));
СтрокаОплаты.Вставить("Наименование", "Наличные");
КонецЕсли;
Также рекомендуется зайти в настройки самого драйвера АТОЛ через утилиту «Тест драйвера ККТ», перейти в раздел «Свойства — Параметры ККТ», найти вкладку «Оплаты» и проверить наименования типов оплат под индексами от 0 до 4. Названия должны соответствовать требованиям ФФД 1.05.
---
Разберем методологию формирования чеков, так как путаница с «Кредитом» и «Авансом» часто возникает из-за нарушения цепочки документов. При получении оплаты от физического лица по безналичному расчету (через клиент-банк) и последующей отгрузке мы обязаны сформировать два чека:
Платежное поручение входящее в момент подтверждения банком поступления денег.
Реализация товаров и услуг в момент передачи товара или оказания услуги.
Если мы нарушим эту цепочку и пробьем чек из реализации без указания документа предоплаты в табличной части Документы расчетов с контрагентом, система 1С посчитает, что отгрузка происходит в долг, и автоматически присвоит чеку признак способа расчета «Передача в кредит», а тип оплаты установит в «Постоплата (Кредит)».
Для корректного зачета аванса выполним следующие действия:
Реализация товаров и услуг на вкладке «Предоплата» (или в таблице взаиморасчетов) укажем соответствующее входящее платежное поручение.---
В процессе обновления кассовых механизмов для работы с новыми ставками НДС (например, при переходе на 20% в конфигурациях уровня УПП 1.3 или Альфа-Авто 4.1) разработчики часто сталкиваются с ошибкой при запуске процедур обновления ставок:
Поле объекта не обнаружено (ИмяПредопределенныхДанных)
Проанализируем причину этой ошибки. Возможность программно изменять имя предопределенных данных (свойство ИмяПредопределенныхДанных у объектов справочников) появилась только в платформе 1С:Предприятие 8.3. Однако многие старые конфигурации запускаются на платформе 8.3, но имеют установленный режим совместимости с версией 8.2. В этом режиме данное свойство недоступно, что и вызывает критический сбой системы при выполнении программного кода переноса предопределенности со ставки 18% на 20%.
Посмотрим на ошибочный участок кода:
СтавкаНДС20.ИмяПредопределенныхДанных = СтавкаНДС.ИмяПредопределенныхДанных;
СтавкаНДС.ИмяПредопределенныхДанных = "НеИспользоватьОсновнаяСтавкаНДС";
Для обхода этого ограничения платформы в режиме совместимости мы не можем использовать программное изменение метаданных. Применим ручной способ изменения предопределенных элементов в конфигураторе:
СтавкиНДС и откроем список его предопределенных данных.ОсновнаяСтавкаНДС (который ссылался на 18%) и вручную переименуем его имя (идентификатор метаданных) в НеИспользоватьОсновнаяСтавкаНДС. При этом сама ссылка в базе данных (УИД) сохранится, старые документы не пострадают.ОсновнаяСтавкаНДС.Этот простой шаг позволит обойти ограничение платформы 8.2 без изменения режима совместимости всей конфигурации, сохранив работоспособность всех связанных механизмов по умолчанию.