В конфигурации 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;
КонецФункции