Каталог решений - Использование Универсального транспортного модуля ГИИС ДМДК в розничной торговле ювелирными изделиями

Использование Универсального транспортного модуля ГИИС ДМДК в розничной торговле ювелирными изделиями

Использование Универсального транспортного модуля ГИИС ДМДК в розничной торговле ювелирными изделиями

В наличии

Универсальный транспортный модуль «Государственная интегрированная информационная система «Драгоценные металлы и драгоценные камни». Разбор руководства программиста. Практическое использование регистрации розничных продаж ювелирных изделий.

Категория:

Описание

Предлагаю на разбор появившееся в апреле Руководство программиста "Транспортный модуль" на сайте ГИИС ДМДК.

На сегодняшний день мы используем для регистрации списания в архив Ювелирных изделий методами SendBatchSale / CheckBatchSale. Для них необходимы параметры Номера фискального накопителя ККМ, Номера фискального документа ККМ и Дата фискального документа (без часов, минут и секунд) и собственно УИН Ювелирного изделия.

Если кому интересно, смотрите публикацию № 1522396. Там описаны способы получения параметров ККМ.

УТМ ГИИС ДМДК предполагает использование тех же параметров, плюс еще один — Номер смены ККМ:

/// Получить реквизиты чека ККМ для ГИИС ДМДК ////////////////////////////////////////////////////////////
					  Попытка  
						  
						    // Запрос информации о последнем чеке 
							
						    ECR.setParam(ECR.LIBFPTR_PARAM_FN_DATA_TYPE, ECR.LIBFPTR_FNDT_LAST_DOCUMENT);
							ECR.fnQueryData();

							ФискальныйДокумент  = ECR.getParamInt(ECR.LIBFPTR_PARAM_DOCUMENT_NUMBER);
							Сообщить("Номер Фискального Документа : " + ФискальныйДокумент);

							ФискальныйПризнакДокумента     = ECR.getParamString(ECR.LIBFPTR_PARAM_FISCAL_SIGN);  
							Сообщить("Фискальный признак документа : " + ФискальныйПризнакДокумента);

							ДатаФискальногоДокумента  = ECR.getParamDateTime(ECR.LIBFPTR_PARAM_DATE_TIME); 
						    Сообщить("Дата фискального документа : " + ДатаФискальногоДокумента);
							
							// Запрос информации о номере фискального накопителя
							
						    ECR.setParam(ECR.LIBFPTR_PARAM_FN_DATA_TYPE, ECR.LIBFPTR_FNDT_FN_INFO);
						    ECR.fnQueryData();

						    ФискальныйНакопитель      = ECR.getParamString(ECR.LIBFPTR_PARAM_SERIAL_NUMBER);
							Сообщить("Номер Фискального Накопителя : " + ФискальныйНакопитель);     
							
							// Запрос информации о номере смены
							ECR.setParam(ECR.LIBFPTR_PARAM_FN_DATA_TYPE, ECR.LIBFPTR_FNDT_SHIFT);
						    ECR.fnQueryData();

						    НомерСмены      = ECR.getParamInt(ECR.LIBFPTR_PARAM_SHIFT_NUMBER);
							Сообщить("Номер смены : " + НомерСмены); 
							
							
						Исключение      
							Сообщение = Новый СообщениеПользователю;
			                Сообщение.Текст = "Ошибка сохранения реквизитов ФД : " + ОписаниеОшибки();
			                Сообщение.Сообщить();
					  КонецПопытки;	  
					  /// Получить реквизиты чека ККМ для ГИИС ДМДК ////////////////////////////////////////////////////////////

 

Сформировать XML файл для УТМ значительно проще, чем для сервиса интеграции запрос SendBatchSale. И подписывать файл ЭП не нужно, т.е. для ККМ не потребуется флешка ЭЦП. 

Что понадобится для запуска УТМ:

1. Установка и настройка УТМ, тут вроде все понятно из руководства. Может на практике и будут сложности, пока не знаю, не устанавливал. 

2. Формирование XML файла — приводить текст формирования не буду, товарные программы у всех разные. Я пошел по пути "шаблона", см. скрин, примерно так:

СписокТовара = ЭлементДокумент.Список;
СтрокаТовары = "";
	Для КАЖДОГО ТекСтрокаСписок ИЗ СписокТовара Цикл  
		Если СтрДлина(ТекСтрокаСписок.УИН) = 16 Тогда   
			 ЦенаТовара = Формат(ТекСтрокаСписок.Наличными + ТекСтрокаСписок.Безналичными + ТекСтрокаСписок.Кредитом,"ЧГ=; ЧДЦ=2");
			 СтрокаТовары = СтрокаТовары
			 + "<Bottle barcode=" 
			 + """ + ТекСтрокаСписок.УИН + """ 
			 + " price=" 
			 + """ + ЦенаТовара + """ 
			 + "/>"
			 + Символы.ПС;  
		КонецЕсли;	   
	КонецЦикла;	  
Сообщение = СтрЗаменить(Сообщение, "%<Bottleprice=barcode=/>%", СтрокаТовары);

3. Выполнить командой curl отправку сформированного файла чека (http запрос). Вот тут я долго вникал в руководство, и не сразу понял, что главный недостаток в описании — это получение ответа от УТМ в командную строку,  т.е. по сути мы не получаем ничего. Предлагаю следующее:

// создаем папку ответов от УТМ, номера файлов ответов можно нумеровать, скажем otvet1.xml, otvet2.xml ...
// параметр -o команды curl позволяет записать ответ запроса -F в файл 

ПутьКФайлуОтвета = "C:\УТМответ\otvet.xml"

СтрокаКоманды = ""curl -F "xml_file=@cheque.xml" http://localhost:8383/xml"";
СтрокаКоманды = СтрокаКоманды + " -o " +  ПутьКФайлуОтвета;

ЗапуститьПриложение(СтрокаКоманды);

  

4. Разбор полученного ответа. Если ответ "положительный" — имеем ввиду, что УИН ушел в архив и чек ККМ пробивается уже без изменений.

Критикуйте. Может, кто предложит свой вариант, например HTTPЗапрос средствами 1С, чем сейчас и занимаюсь.   

has been added to your cart:
Оформление заказа