При переходе с конфигурации Комплексная автоматизация 1.1 (или старых версий УТ 10.3 / УПП 1.3) на Комплексная автоматизация 2.4 (ERP 2.4 / УТ 11.4) разработчики часто сталкиваются с изменением архитектуры хранения фискальных данных. В старых конфигурациях номера чеков и реквизиты ККМ хранились непосредственно в реквизитах документов, таких как ПриходныйКассовыйОрдер или ЧекНаОплату. В современных конфигурациях эти данные вынесены в отдельный регистр сведений — ЖурналФискальныхОпераций (а также ФискальныеОперации).
Рассмотрим, как правильно настроить конвертацию данных в КД2 (Конвертация данных 2.0) для формирования записей регистра сведений фискальных операций при переносе кассовых документов.
Проанализируем структуру данных в источниках и приемнике:
НомерЧекаККМ, ККМ и т.д.) расположены в шапке кассового документа (ПКО, Чек на оплату).ПриходныйКассовыйОрдер больше не содержит этих реквизитов. Данные о пробитых чеках хранятся в независимом регистре сведений ЖурналФискальныхОпераций, где ключевым измерением является ДокументОснование.Для выполнения переноса существует два основных подхода: выгрузка через отдельное правило конвертации объектов (ПКО) с вызовом функции ВыгрузитьПоПравилу() или запись данных напрямую в обработчике После загрузки документа-приемника.
Разберем по шагам создание правил переноса в «Конвертации данных 2.0» с помощью явного вызова ПКО для независимого регистра сведений.
Создадим Правило Конвертации Объекта (ПКО), в котором:
ДокументСсылка.ПриходныйКассовыйОрдерРегистрСведенийЗапись.ЖурналФискальныхОперацийНазовем данное правило, например, ФискальнаяОперацияПКО.
В созданном ПКО настроим сопоставление полей:
ДокументОснование <-- Источник (самому документу);НомерЧекаККМ, КассаККМ и др.) <-- соответствующие реквизиты источника.В ПКО документа ПриходныйКассовыйОрдер в событии После выгрузки добавим проверку на наличие пробитого чека и выполним выгрузку записи регистра:
Если Источник.НомерЧекаККМ > 0 Тогда
ВыгрузитьПоПравилу(Источник, , , , "ФискальнаяОперацияПКО");
КонецЕсли;
Если нет необходимости создавать отдельное ПКО в КД2, сформировать фискальную операцию можно программно в базе-приемнике. Для этого передадим фискальные реквизиты через параметры или входящие данные, а запись сформируем в обработчике После загрузки ПКО документа.
Рассмотрим пример кода в событии После загрузки документа ПриходныйКассовыйОрдер:
Если ПараметрыОбъекта <> Неопределено И ПараметрыОбъекта.Свойство("НомерЧекаККМ") И ЗначениеЗаполнено(ПараметрыОбъекта.НомерЧекаККМ) Тогда
НаборЗаписей = РегистрыСведений.ЖурналФискальныхОпераций.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ДокументОснование.Установить(Объект.Ссылка);
Запись = НаборЗаписей.Добавить();
Запись.ДокументОснование = Объект.Ссылка;
Запись.Дата = Объект.Дата;
Запись.НомерЧека = ПараметрыОбъекта.НомерЧекаККМ;
// Заполнение остальных реквизитов (Касса, Организация и т.д.)
НаборЗаписей.Записать();
КонецЕсли;
Преимущество данного метода заключается в том, что перезапись набора по отбору ДокументОснование полностью исключает дублирование записей при повторных обменах.
В регистре ЖурналФискальныхОпераций конфигураций КА 2.4 / ERP помимо измерения ДокументОснование присутствует реквизит или измерение ИдентификаторЗаписи (тип Строка или УникальныйИдентификатор). У разработчиков возникает опасение: не будут ли плодиться дубли при каждом повторном обмене?
Выясним, как избежать дублирования:
ДокументОснование как единственное поле поиска. При перезагрузке платформа будет находить запись по документу-основанию. Если в ПКО задано формирование ИдентификаторЗаписи, лучше привязать его к GUID документа-источника: Строка(Источник.УникальныйИдентификатор()).ДокументОснование перед записью нового набора, что полностью предотвращает появление дублей.В конфигурациях КА 1.1 и КА 2.4 фискальные реквизиты также встречаются в документах реализации. Это обусловлено требованиями законодательства (54-ФЗ), регламентирующими порядок применения ККТ при расчетах с физическими лицами:
РеализацияТоваровУслуг с признаком способа расчета «Передача в кредит» (без приема денег в этот момент).Если в вашей учетной схеме (например, в автосервисе без работы по предварительным авансам) чеки отбиваются строго по кассовым ордерам (ПКО/РКО), то в правилах конвертации достаточно настроить перенос фискальных данных только для этих документов.