Имя: Пароль:
1C
 
Работа с документами по API "Честный знак"
0 Alexan1979
 
11.05.25
11:53
Добрый день.
Конфигурация УТ 11.5
Аналогичная проблема как в теме Работа с документами по API "Честный знак"
Пытаюсь вывести документ через ЧЗ

Соединение = Новый HTTPСоединение("water.sandbox.crptech.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Content-Type", "application/json");
	Заголовки.Вставить("Accept", "application/json");
	Заголовки.Вставить("Accept-Charset", "utf-8");
	Заголовки.Вставить("Authorization", "Bearer " + Токен);

	//**//Отдельно для Воды и Напитков
	HTTPЗапрос = Новый HTTPЗапрос("/lk/documents/create?pg=water",Заголовки);
	
	ЗаписьДокумента = Новый ЗаписьJSON; //Отдельно документ
	ПараметрыЗаписиДокумента = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,"");
	ЗаписьДокумента.УстановитьСтроку(ПараметрыЗаписиДокумента);
	
	
	ДокументВывода = Новый Структура;
	ОткрепленнаяПодпись = "";
	ДанныеДляЗаполнения = ПолучитьДанныеДляЗаполнения();
	ДокументВывода.Вставить("inn",данныеДляЗаполнения.ИННПродавца);
	ДокументВывода.Вставить("buyer_inn",ДанныеДляЗаполнения.ИННПокупателя);
	ДокументВывода.Вставить("action","OWN_USE");
	ДатаВывода = Формат(ДанныеДляЗаполнения.ДатаВывода,"ДФ=""гггг-ММ-дд""");
	ДокументВывода.Вставить("action_date",ДатаВывода);
	ДокументВывода.Вставить("document_type","OTHER");
	ДокументВывода.Вставить("document_number",ДанныеДляЗаполнения.НомерДокумента);
	ДокументВывода.Вставить("document_date",ДатаВывода);
	ДокументВывода.Вставить("primary_document_custom_name","Реализация Товаров");
	
	МассивМарок = Новый Массив;
	Для Каждого Марка из ДанныеДляЗаполнения.ШтрихкодыУпаковок цикл
		СтруктураМарки = Новый Структура;
		СтруктураМарки.Вставить("cis",Марка.ЗначениеШтрихкода);
		СтруктураМарки.Вставить("product_cost",Марка.ЦенаВыбытия);
		МассивМарок.Добавить(СтруктураМарки);
	КонецЦикла;
	
	ДокументВывода.Вставить("products",МассивМарок);

	ЗаписатьJSON(ЗаписьДокумента,ДокументВывода);
	ВыбытиеДокументJSON = ЗаписьДокумента.Закрыть();
	
	ВременныйФайл = ПолучитьИмяВременногоФайла();
	ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл,"CESU-8");
	ЗаписьТекста.Записать(ВыбытиеДокументJSON);
	ЗаписьТекста.Закрыть();
	
	ДД_Файла = Новый ДвоичныеДанные(ВременныйФайл);
	ВыбытиеДокументJSON_Base64 = Base64Строка(ДД_Файла);
	
	Попытка
		УдалитьФайлы(ВременныйФайл);
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	ОткрепленнаяПодпись = ПодписатьТекст(ВыбытиеДокументJSON_Base64,Отпечаток,Истина);
	
	ЗаписьЗапросаВыбытие = Новый ЗаписьJSON;

	ЗаписьЗапросаВыбытие.УстановитьСтроку();
	
	ВесьДокумент = Новый Структура;
	ВесьДокумент.Вставить("document_format","MANUAL");
	ВесьДокумент.Вставить("product_document",ВыбытиеДокументJSON_Base64);
	ВесьДокумент.Вставить("type","LK_RECEIPT"); //Вывод из оборота 
	ВесьДокумент.Вставить("signature",ОткрепленнаяПодпись);
	
	ЗаписатьJSON(ЗаписьЗапросаВыбытие,ВесьДокумент);
	ВыбытиеЗапросJSON = ЗаписьЗапросаВыбытие.Закрыть();
	НоваяСтрокаТекст = """document_format"":""MANUAL"",""product_document"":"""+ВыбытиеДокументJSON_Base64+
						""",""type"":""LK_RECEIPT"",""signature"":"""+ОткрепленнаяПодпись+"""";
	Текст = Новый текстовыйДокумент;
	Текст.ДобавитьСтроку(ВыбытиеЗапросJSON);
	ИмяФайла = "Z:\тест кодов.json";
	Текст.Записать(ИмяФайла,,);
	HTTPЗапрос.УстановитьТелоИзСтроки(ВыбытиеЗапросJSON,КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	
	Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос); 
	ОтветСтр = Ответ.ПолучитьТелоКакСтроку();


В ответе:
<html>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
1 ptiz
 
12.05.25
09:45
(0)
1) из Base64 надо удалять переносы строк
    Base64 = Base64Строка(ДвоичныеДанные);
    Base64 = СтрЗаменить(Base64, Символы.ПС, "");
    Base64 = СтрЗаменить(Base64, Символы.ВК, "");
2) Проверить, допустим ли вообще этот такой документ для этой товарной группы.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший