1c формирование тэгов МДЛП 1085,1086

1. illiona 01.10.21 13:06 Сейчас в теме
Добрый день. Тэги записываются в xml дополнительный реквизит пользователя, но в кассе Атол их нет
Функция ПараметрыДополнительногоРеквизитаПользователя() Экспорт
	
	Параметры = Новый Структура();
	Параметры.Вставить("Наименование"); // Строка,Необязательно - Наименование дополнительного реквизита пользователя (Тег 1085).
	Параметры.Вставить("Значение");     // Строка,Необязательно - Значение дополнительного реквизита пользователя (Тег 1086).
	Возврат Параметры; 
	
КонецФункции
Показать

ОбщиеПараметры = МенеджерОборудованияКлиентСервер.ПараметрыОперацииФискализацииЧека();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			Параметры.ИдентификаторМестаДеятельностиМДЛП = ВыборкаДетальныеЗаписи.Идентификатор;  
		КонецЦикла;
		ОбщиеПараметры.ДополнительныйРеквизитПользователя= ИнтеграцияМДЛПКлиентСервер.СформироватьПараметрДополнительныйРеквизитПользователяМДЛП(Параметры);

Функция СформироватьПараметрДополнительныйРеквизитПользователяМДЛП(Параметры) Экспорт
	
	ДополнительныйРеквизитПользователя = МенеджерОборудованияКлиентСервер.ПараметрыДополнительногоРеквизитаПользователя();
	
	Префикс                                         = "mdlp";
	ПризнакПолнойЛьготы                             = "3108805"; // Код ОКУД формы льготного рецепта, как признак льготного рецепта со 100% дотированием.
	ИмяРеквизита_НомерСерииЛьготногоРецепта         = "ps";
	ИмяРеквизита_НомерЛьготногоРецепта              = "dn";
	ИмяРеквизита_ДатаРегистрацииЛьготногоРецепта    = "dd";
	ФорматЗначения_ДатаРегистрацииЛьготногоРецепта  = "ДФ=yyMMdd";
	ИмяРеквизита_ИдентификаторМестаДеятельностиМДЛП = "sid";
	ДлинаИдентификатораСубъектаОбращенияМДЛП        = 14;
	Разделитель                                     = "&";
	
	ТекстОшибки = НСтр("ru = 'Ошибка при заполнении параметров пробития чека:'");
	
	// Тег 1085
	ДополнительныйРеквизитПользователя.Наименование = Префикс;
	
	Если Параметры.ПроцентЛьготы = 100 Тогда
		ДополнительныйРеквизитПользователя.Наименование = ДополнительныйРеквизитПользователя.Наименование + ПризнакПолнойЛьготы;
	КонецЕсли;
	
	// Тег 1086
	Значение = Новый Массив;
	Если Параметры.ПроцентЛьготы > 0 Тогда
		Значение.Добавить(СтрШаблон("%1%2", ИмяРеквизита_НомерСерииЛьготногоРецепта, СтрЗаменить(Параметры.НомерСерииЛьготногоРецепта, Разделитель, Разделитель + Разделитель)));
		Значение.Добавить(СтрШаблон("%1%2", ИмяРеквизита_НомерЛьготногоРецепта, СтрЗаменить(Параметры.НомерЛьготногоРецепта, Разделитель, Разделитель + Разделитель)));
		Значение.Добавить(СтрШаблон("%1%2", ИмяРеквизита_ДатаРегистрацииЛьготногоРецепта, Формат(Параметры.ДатаРегистрацииЛьготногоРецепта, ФорматЗначения_ДатаРегистрацииЛьготногоРецепта)));
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Параметры.ИдентификаторМестаДеятельностиМДЛП) Тогда
		ТекстОшибки = ТекстОшибки + Символы.ПС + СтрЗаменить(НСтр("ru = 'Недопустимое значение реквизита ""%Идентификатор%"" <идентификатор места деятельности субъекта обращения в ИС МДЛП> тега 1086'"), "%Идентификатор%", ИмяРеквизита_ИдентификаторМестаДеятельностиМДЛП);
		ТекстОшибки = ТекстОшибки + Символы.ПС + НСтр("ru = 'Идентификатор места деятельности субъекта обращения в ИС МДЛП не заполнен.'");
		ВызватьИсключение ТекстОшибки;
	КонецЕсли;
	
	Если СтрДлина(Параметры.ИдентификаторМестаДеятельностиМДЛП) <> ДлинаИдентификатораСубъектаОбращенияМДЛП Тогда
		ТекстОшибки = ТекстОшибки + Символы.ПС + СтрЗаменить(НСтр("ru = 'Недопустимое значение реквизита ""%Идентификатор%"" <идентификатор места деятельности субъекта обращения в ИС МДЛП> тега 1086'"), "%Идентификатор%", ИмяРеквизита_ИдентификаторМестаДеятельностиМДЛП);
		ТекстОшибки = ТекстОшибки + Символы.ПС + НСтр("ru = 'Недопустимая длина идентификатора места деятельности субъекта обращения в ИС МДЛП.'");
		ТекстОшибки = ТекстОшибки + Символы.ПС + СтрЗаменить(НСтр("ru = 'Идентификатор должен состоять из %ДлинаИдентификатора% символов.'"), "%ДлинаИдентификатора%", ДлинаИдентификатораСубъектаОбращенияМДЛП);
		ВызватьИсключение ТекстОшибки;
	КонецЕсли;
	
	ОписаниеЧислаИдентификатор = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(ДлинаИдентификатораСубъектаОбращенияМДЛП, 0, ДопустимыйЗнак.Неотрицательный));
	Если Не ЗначениеЗаполнено(ОписаниеЧислаИдентификатор.ПривестиЗначение(Параметры.ИдентификаторМестаДеятельностиМДЛП)) Тогда
		ТекстОшибки = ТекстОшибки + Символы.ПС + СтрЗаменить(НСтр("ru = 'Недопустимое значение реквизита ""%Идентификатор%"" <идентификатор места деятельности субъекта обращения в ИС МДЛП> тега 1086'"), "%Идентификатор%", ИмяРеквизита_ИдентификаторМестаДеятельностиМДЛП);
		ТекстОшибки = ТекстОшибки + Символы.ПС + НСтр("ru = 'Идентификатор места деятельности субъекта обращения в ИС МДЛП должен состоять только из цифр.'");
		ВызватьИсключение ТекстОшибки;
	КонецЕсли;
	
	Значение.Добавить(СтрШаблон("%1%2", ИмяРеквизита_ИдентификаторМестаДеятельностиМДЛП, Параметры.ИдентификаторМестаДеятельностиМДЛП));
	
	ДополнительныйРеквизитПользователя.Значение = СтрСоединить(Значение, Разделитель);
	
	// Завершающий символ
	ДополнительныйРеквизитПользователя.Значение = ДополнительныйРеквизитПользователя.Значение + Разделитель;
	
	Возврат ДополнительныйРеквизитПользователя;
	
КонецФункции
Показать

На фото как заполнен в отладчике
Не могу понять почему в кассе не видно
Прикрепленные файлы:
Найденные решения
3. illiona 18.10.21 11:41 Сейчас в теме
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1135816 4 06.10.21 17:48 Сейчас в теме
а почему решили в доп реквизиты писать? и касса прошита под работу с маркировкой?
3. illiona 18.10.21 11:41 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот