Исправление ошибки 1С УТ 11 (версия 11.3.2.157) с транспортным модулем УТМ ЕГАИС

В конфигурации 1C «Управление торговлей» (по крайней мере, в версии 11.3.2.157) после настройки соединения с фискальным регистратором и транспортным модулем «УТМ» ЕГАИС при попытке пробить чек на продажу единицы алкогольной продукции выдается ошибка (скрин приложен).

    Название модуля, содержащего ошибку — «ИнтеграцияЕГАИС». В этом модуле формируется форматное сообщение о продаваемой единице продукции. Функция, формирующая сообщение — «ТекстXMLВыгрузкиЧека». В формируемом сообщении ошибка: в поле «смена» («shift») передается значение «0» что не позволяется форматом (номер смены должен быть хотя бы «1»). 
Новый текст функции:

// Функция возвращает текст XML, который нужно выгрузить в ЕГАИС.
//
Функция ТекстXMLВыгрузкиЧека(ВидДокумента, ШапкаЧека, СтрокиЧека, ТекстОшибки) Экспорт

ПространствоИмен = Перечисления.ВидыДокументовЕГАИС.ПространствоИмен(ВидДокумента, Неопределено, ТекстОшибки);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");

ЧекXDTO = ОбъектXDTOПоИмениСвойства(ПространствоИмен, "Cheque");

УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "inn", ШапкаЧека.ИНН, ТекстОшибки);

Если ЗначениеЗаполнено(ШапкаЧека.КПП) Тогда
УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "kpp", ШапкаЧека.КПП, ТекстОшибки);
КонецЕсли;

УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "address" , ШапкаЧека.АдресМагазина                         , ТекстОшибки);
УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "name"    , ШапкаЧека.НаименованиеМагазина                  , ТекстОшибки);
УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "kassa"   , ШапкаЧека.ЗаводскойНомерККМ                     , ТекстОшибки);
УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "shift"   , ШапкаЧека.НомерСменыККМ                         , ТекстОшибки);
УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "number"  , ШапкаЧека.НомерЧекаККМ                          , ТекстОшибки);
УстановитьЗначениеСвойстваXDTO(ЧекXDTO, "datetime", Формат(ШапкаЧека.ДатаВремяЧека, "ДФ=ddMMyyHHmm"), ТекстОшибки);

Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
Возврат "";
КонецЕсли;

Для Каждого СтрокаЧека Из СтрокиЧека Цикл

Цена = Формат(?(ШапкаЧека.Свойство("Возврат") И ШапкаЧека.Возврат, -1, 1) * СтрокаЧека.Цена, "ЧДЦ=2; ЧРД=.; ЧГ=0");
Объем = Формат(СтрокаЧека.Объем, "ЧДЦ=4; ЧРД=.; ЧГ=0");

СтрокаЧекаXDTO = ОбъектXDTOПоИмениСвойства(ПространствоИмен, "Bottle");
УстановитьЗначениеСвойстваXDTO(СтрокаЧекаXDTO, "price"  , Цена, ТекстОшибки);
УстановитьЗначениеСвойстваXDTO(СтрокаЧекаXDTO, "barcode", СтрокаЧека.КодАкцизнойМарки, ТекстОшибки);

Если ЗначениеЗаполнено(СтрокаЧека.Штрихкод) Тогда
УстановитьЗначениеСвойстваXDTO(СтрокаЧекаXDTO, "ean", СтрокаЧека.Штрихкод, ТекстОшибки);
КонецЕсли;

Если ЗначениеЗаполнено(Объем) Тогда
УстановитьЗначениеСвойстваXDTO(СтрокаЧекаXDTO, "volume" , Объем, ТекстОшибки);
КонецЕсли;

ЧекXDTO.Bottle.Добавить(СтрокаЧекаXDTO);

КонецЦикла;

Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
Возврат "";
КонецЕсли;

ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ЧекXDTO, "Cheque");

ТекстXML = ЗаписьXML.Закрыть();
ТекстXML = СтрЗаменить(ТекстXML, "xmlns=""" + ПространствоИмен + """ ", "");
ТекстXML = СтрЗаменить(ТекстXML, "shift=""0""" , "shift=""1""");

Возврат ТекстXML;

КонецФункции

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *