Интеграция 1С 8.3 и Честный Знак через API

1. Victor89 02.05.22 01:10 Сейчас в теме
Коллеги, всем добрый день! Работаю над интеграцией с системой ЭДО Лайт (Честный знак). Задача стоит в получении входящих документов и подписи их. Наработки взял отсюда https://infostart.ru/public/1276725/.

С получением токена, подключением, получением списка входящих документов проблем нет. Проблема как раз с подписью документов. На скриншоте указан алгоритм, но я получаю ошибку Header length exceeded maximum header size of 4096, код возврата - 413. Кто сталкивался? В чем может быть проблема? Спасибо за ответы.

Ниже алгоритм подписи:

1. Получить список документов, там будет id входящего документа /api/v1/incoming-documents.
2. Получить XML содержимое документа /api/v1/incoming-documents/{doc_id}/content
3. Создать и отправить титул покупателя, где <ЭП>signature</ЭП> это подписанное открепленной подписью полученное XML содержимое документа.(для УПД api/v1/incoming-documents/xml/upd/title). Метод вернет event_id или теперь его можно получить через список квитанций(/api/v1/incoming-documents/unsigned-events).
4. И теперь уже подписываете /api/v1/incoming-documents/{doc_id}/events/{event_id}/signature

Вот на 3 пункте я и остановился.

Где ФайлXML - текстовое содержимое файла XML внутреннего документа
doc_id - id внутреннего документа в ЭДО Лайт
Токен - собственно токен ЭДО Лайт

Скрин из описания API тоже приложил
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. sivin-alexey 507 02.05.22 19:15 Сейчас в теме
(1) В multipart/form-data данные от заголовков должны отделяться двойным переносом строк:

	Р = "---------------------------"+Новый УникальныйИдентификатор();
	ПС = Символы.ВК+Символы.ПС;

	Заголовки.Вставить("Content-Type","multipart/form-data; boundary="+Р);

	Тело = "";
	Тело = Тело + "--"+Р+ПС;
	Тело = Тело + "Content-Disposition: form-data; name=""content""; filename="""+УПД.ИДФайл+".xml"""+ПС;
	Тело = Тело + "Content-Type: application/xml"+ПС+ПС;
	Тело = Тело + ПолучитьСтрокуИзДвоичныхДанных(УПД.ДвоичныеДанные,КодировкаТекста.ANSI)+ПС;
	
	Тело = Тело + "--"+Р+ПС;
	Тело = Тело + "Content-Disposition: form-data; name=""signature"""+ПС;
	Тело = Тело + "Content-Type: text/plain"+ПС+ПС;
	Тело = Тело + Base64_Строка(Подпись) + ПС;

	Тело = Тело + "--"+Р+"--"+ПС;
	
	Соединение  = Новый HTTPСоединение(ИмяСервера,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос = Новый HTTPЗапрос("/api/v1/outgoing-documents",Заголовки);
	Запрос.УстановитьТелоИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзСтроки(Тело,КодировкаТекста.ANSI));
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать
Victor89; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sivin-alexey 507 02.05.22 19:15 Сейчас в теме
(1) В multipart/form-data данные от заголовков должны отделяться двойным переносом строк:

	Р = "---------------------------"+Новый УникальныйИдентификатор();
	ПС = Символы.ВК+Символы.ПС;

	Заголовки.Вставить("Content-Type","multipart/form-data; boundary="+Р);

	Тело = "";
	Тело = Тело + "--"+Р+ПС;
	Тело = Тело + "Content-Disposition: form-data; name=""content""; filename="""+УПД.ИДФайл+".xml"""+ПС;
	Тело = Тело + "Content-Type: application/xml"+ПС+ПС;
	Тело = Тело + ПолучитьСтрокуИзДвоичныхДанных(УПД.ДвоичныеДанные,КодировкаТекста.ANSI)+ПС;
	
	Тело = Тело + "--"+Р+ПС;
	Тело = Тело + "Content-Disposition: form-data; name=""signature"""+ПС;
	Тело = Тело + "Content-Type: text/plain"+ПС+ПС;
	Тело = Тело + Base64_Строка(Подпись) + ПС;

	Тело = Тело + "--"+Р+"--"+ПС;
	
	Соединение  = Новый HTTPСоединение(ИмяСервера,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос = Новый HTTPЗапрос("/api/v1/outgoing-documents",Заголовки);
	Запрос.УстановитьТелоИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзСтроки(Тело,КодировкаТекста.ANSI));
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать
Victor89; +1 Ответить
3. Victor89 03.05.22 01:56 Сейчас в теме
(2)
Disposition
, Добрый день!

Скорректировал код, но получаю ошибку уже другую:

DOC-0016: "Неверный тип загружаемого файла: Content-Type: "

Это какой Content-Type нужно поставить? Спасибо
Прикрепленные файлы:
4. Victor89 03.05.22 12:14 Сейчас в теме
(2) тут я думаю проблема в передаче doc_id. Хотя могу ошибаться.
5. Victor89 03.05.22 20:31 Сейчас в теме
(2) У нас по сути похожие задачи. Только Вы не передаете doc_id. такой вопрос:
1. УПД.ИДФайл \то у Вас путь к файлу?
2. ПолучитьСтрокуИзДвоичныхДанных(УПД.ДвоичныеДанные,КодировкаТекста.ANSI) - это строковое представление XML файла?
6. sivin-alexey 507 04.05.22 04:40 Сейчас в теме
(5)
1. УПД.ИДФайл - это идентификатор файла (см. Приказ ФНС России от 19.12.2018 N ММВ-7-15/820)

2. ПолучитьСтрокуИзДвоичныхДанных() - сам файл в виде строки (см. справку 1С)

3. В HTTP символы перевода строки отделяют одни данные от других (например, заголовки от содержимого). С этим нужно быть очень внимательным. Поэтому:

4. Не используйте ТекстовойДокумент, т.к. метод ПолучитьТекст() заменит символ ПС на свойство РазделительСтрок, а символ ВК не тронет. В результате получите ВК ПС ПС (или что-то подобное). Вот сервер и не распознаёт ваш multipart/form-data.

5. Не используйте кодировку UTF8. В том же приказе ФНС России указана кодировка "windows-1251". Используйте ANSI.

6. Не используйте УстановитьТелоИзСтроки() - опять же дополнительная перекодировка. Зачем? Есть готовая строка, которую нужно установить в качестве тела: Запрос.УстановитьТелоИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзСтроки(Тело,КодировкаТекста.ANSI)) - без перекодировки, без добавления лишних символов.
7. Victor89 04.05.22 09:01 Сейчас в теме
(6) Доброе утро!

УПД.ИДФайл - это идентификатор файла - я понял про какой идентификатор идет речь. Прям обязательно он нужен или любое имя подойдет?

Ну по остальным пунктам стало понятно) Я как раз и ТекстовыйДокумент использую и УстановитьТелоИзСтроки.

Отпишусь по результату, что и как) Спасибо за советы.
8. Victor89 05.05.22 00:59 Сейчас в теме
(6) Добрый день!

Учел Ваши рекомендации но все равно ошибка DOC-0017: "Неверный тип документа загружаемого xml файла" (но уже другая, без Content-Type).

Такой вопрос: Я получаю содержимое XML файла, используя запрос "/api/v1/incoming-documents/{doc_id}/content".Потом это содержимое сохраняю в файл уже с расширением XML (используя ЗаписьТекста). Имя файла, например, получается такое:
C:\Users\Tobaco\AppData\Local\Temp\14\\ON_NSCHFDOPPRMARK_2LT-11000066004_2BE01b912a4ec954c309ef08dc3df19cacd_20220504_ca7­2975e-a5c0-410c-9963-8b0e66e612db.xml

ПутьКФайлу = СтрШаблон("%1\%2.xml",КаталогВременныхФайлов(),ИдФайл);		
Текст = Новый ЗаписьТекста(ПутьКФайлу);
Текст.ЗаписатьСтроку(ОтветСтрока);
Текст.Закрыть();


И уже сам путь файла и его содержимое добавляю в тело запроса. Везде кодировка ANSI, символы ПС везде учел.
Такое ощущение, что Честный Знак думает, что я ему xml не УПД подсовываю, а что - то другое

В чем может быть загвоздка? Буду благодарен за помощь. Спасибо.

Скрины во вложении.
Прикрепленные файлы:
9. sivin-alexey 507 05.05.22 04:39 Сейчас в теме
(8)

1. Ушла ошибка про Content-Type - это хорошо, значит вы передаёте корректный HTTP запрос.

2.
Честный Знак думает, что я ему xml не УПД подсовываю, а что - то другое

Так с самого начала речь шла не о "УПД", а о "УПД титул покупателя", это совсем другой документ. Префикс: ON_NSCHFDOPPOK_.

В ответ на УПД ("титул продавца") вы должны сформировать свой документ "УПД титул покупателя", подписать и отправить его (а не исходный УПД).

3. Имя файла нужно передавать без указания пути. Зачем им на сервере ваш локальный путь? :)
10. Victor89 06.05.22 01:24 Сейчас в теме
(9) Добрый день!

Спасибо за советы, они очень помогли

Сейчас формирую титул покупателя и возникла пара вопросов:

1. ИдФайл="ON_NSCHFDOPPOKMARK_1LT-10000000137_1LT-10000000138_20201119_2afedde7-f948-4a26-a2ed-d3dbcbf5e2fe" (взято из API). Мы формируем из данных XML файла УПД : "ON_NSCHFDOPPOKMARK_" + ИдПол_ + Что то не понятное с датой+ какой то гуид? Если есть информация
2. Во вложенном скрине не понятно, откуда, брать данные.

Если есть какая - то информация, можете сообщить? Или может где почитать.... Просто в описании API просто приведен пример и все, больше ничего.

3. Имя файла нужно передавать без указания пути. Зачем им на сервере ваш локальный путь? :)


Ну кто их знает. Тут понял

Спасибо за помощь.
Прикрепленные файлы:
11. sivin-alexey 507 06.05.22 04:21 Сейчас в теме
(10)
http://www.consultant.ru/document/cons_doc_LAW_316356/
см п. III "Описание файла обмена информации покупателя"
12. Victor89 13.05.22 01:06 Сейчас в теме
(11)
filename="""+УПД.ИДФайл+".xml"""+ПС


Доброе утро! Спасибо. Файл сформировал, при отправке получил ошибку - "Ид в xml файле и auth токене не совпадают". Это что за ИД имеется ввиду? Спасибо.
13. Victor89 13.05.22 01:06 Сейчас в теме
(11)

Доброе утро! Спасибо. Файл сформировал, при отправке получил ошибку - "Ид в xml файле и auth токене не совпадают". Это что за ИД имеется ввиду? Спасибо.
14. Victor89 13.05.22 08:56 Сейчас в теме
31. user1886337 19.12.22 12:28 Сейчас в теме
(14) Можете пожалуйста описать ваше решение?
15. Victor89 13.05.22 14:12 Сейчас в теме
(9) Добрый день!

От ошибок заполнения файла избавился, но ругается на подпись:

"Подпись не прошла проверку в crypto". Он ругается на подпись в титуле покупателя или на подпись файла от продавца? Не сталкивались? Спасибо
16. sivin-alexey 507 13.05.22 14:17 Сейчас в теме
(15) Мы используем присоединенная ЭП, см здесь: https://infostart.ru/public/1493281/
17. Victor89 13.05.22 22:27 Сейчас в теме
(16)

Это то все понятно. "Подпись не прошла проверку в crypto" какая именно? В титуле покупателя или на файла от продавца?

Мы же содержимое XML файлов подписываем, верно?

Алгоритм подписи корректный, так как я его использую для получения токена, а там тоже подпись используется.

Для подписи документов - последний параметр Истина (см. скрин)
Прикрепленные файлы:
18. Victor89 14.05.22 18:26 Сейчас в теме
(16)

Добрый день!

Ниже пример, как я это делаю.
1. Ключ сессии (/api/v1/session) получаю вполне корректно, Честный знак принимает подпись
2. Входящие документы получаю корректно, но при попытке подписи документов (api/v1/incoming-documents/xml/upd/title) ошибка "Подпись не прошла проверку в crypto" (хотя при получении ключа сессии все нормально)

ПодписатьТекст(ЗашифроватьBase64(ФайлXML, "windows-1251"),Отпечаток,Истина);

// sThumbprint - отпечаток сертификата, используемого для подписи; строка,
// представляющая отпечаток в шестнадцатеричном виде
// пример 195934d72dcdf69149901d6632aca4562d8806d8
// ТекстДляПодписи должен быть в Base64
// bDetached - Истина/Ложь - откреплённая(для подписания документов)/прикреплённая(для получения токена авторизации) подпись
Функция ПодписатьТекст(ТекстДляПодписи, sThumbprint, bDetached)
    
    CADESCOM_BASE64_TO_BINARY = 1; // Входные данные пришли в Base64
    CADESCOM_CADES_TYPE = 1; // Тип усовершенствованной подписи
    CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0; // Атрибут штампа времени подписи
    
    oSigner = Новый COMОбъект("CAdESCOM.CPSigner");
    // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи.
    oSigner.Certificate = ПолучитьСертификатПоОтпечатку(sThumbprint);
    oSigningTimeAttr = Новый COMОбъект("CAdESCOM.CPAttribute");
    oSigningTimeAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
    oSigningTimeAttr.Value = ТекущаяДата();
    oSigner.AuthenticatedAttributes2.Add(oSigningTimeAttr);
    
    ТекстДляПодписи = СокрЛП(ТекстДляПодписи);
    
    oSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
    // Объект CadesSignedData предоставляет свойства и методы для работы с усовершенствованной подписью.
    oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
    //oSignedData.propset_ContentEncoding = CADESCOM_BASE64_TO_BINARY;
    oSignedData.Content = СокрЛП(ТекстДляПодписи);
    EncodingType = 0;
    sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_TYPE,
    bDetached, EncodingType);
    // Метод добавляет к сообщению усовершенствованную подпись.
    sSignedMessage = СтрЗаменить(sSignedMessage,Символы.ПС,"");
    sSignedMessage = СтрЗаменить(sSignedMessage,Символы.ВК,"");
    
    Возврат sSignedMessage; // Подпись в формате Base64
    
КонецФункции

//Отпечаток - строка HEX
Функция ПолучитьСертификатПоОтпечатку(ОтпечатокСтр)
    
    Рез = Неопределено; // Найденный сертификат (Com-объект)
    CAPICOM_CURRENT_USER_STORE = 2;
    //2 - Искать сертификат в ветке "Личное" хранилища.
    CAPICOM_MY_STORE = "My";
    // Указываем, что ветку "Личное" берем из хранилища текущего пользователя
    CAPICOM_STORE_OPEN_READ_ONLY = 0; // Открыть хранилище только на чтение
    oStore = Новый COMОбъект("CAdESCOM.Store"); // Объект описывает хранилище сертификатов
    
    oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
    CAPICOM_STORE_OPEN_READ_ONLY); // Открыть хранилище сертификатов
    // 1 вариант: поиск сертификата по отпечатку
    //CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
    //Certificates = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, ОтпечатокСтр);
    //Рез = Certificates.Item(1);
    
    //2 вариант: обходом по коллекции и сравнение с отпечатком
    Для Каждого ТекСертификат Из oStore.Certificates Цикл
        ТекОтпечаток = ТекСертификат.Thumbprint; // возвращается отпечаток в шестнадцатеричном виде
        Если ВРЕГ(ТекОтпечаток) = ВРЕГ(ОтпечатокСтр) Тогда Рез = ТекСертификат;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    oStore.Close(); // Закрыть хранилище сертификатов и освободить объект 61
    Возврат Рез;
    
КонецФункции
Показать


У клиента менялся сертификат, может быть в этом причина? Хотя при "ручном" подписании ошибок нет.
19. Victor89 16.05.22 00:57 Сейчас в теме
(16)

Добрый день!

Тут вопрос по реализации открепленной подписи, так как она мне нужна:
Функция ПодписатьТекстОтсоединеннаяПодпись(ТекстДляПодписи,Отпечаток)
    
    ФайлСПодписями = ПолучитьИмяВременногоФайла("txt");
    
    МенеджерКриптографии = Новый МенеджерКриптографии("Microsoft Enhanced Cryptographic Provider v1.0","",1);
    Хранилище  = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
    Сертификат = Хранилище.НайтиПоОтпечатку(ПолучитьДвоичныеДанныеИзHexСтроки(Отпечаток));
        
    ДД_Подпись =  МенеджерКриптографии.Подписать(ТекстДляПодписи,ФайлСПодписями,Сертификат); 
    
    Возврат ПолучитьСтрокуИзДвоичныхДанных(ДД_Подпись,"windows-1251");

КонецФункции// ПодписатьТекстОтсоединеннаяПодпись()


Но получаю ошибку:

ОбщийМодуль.vvoИнтеграция.Модуль(986)}: Ошибка при вызове метода контекста (Подписать)
    ДД_Подпись =  МенеджерКриптографии.Подписать(ТекстДляПодписи,ФайлСПодписями,Сертификат); 
по причине:
Ошибка операции с файлом.
по причине:
Каталог не обнаружен 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUxIiA­\Pg0KPNTg6esgwuXw8c\w7uM9ItHB6NEzIiDC5fDx1O7w7D0iNS4wMSIgyOT­U4OnrPSJPTl9OU.... Там очень длинный текст.
Показать


Есть какой - то рабочий код? Параметры для Новый МенеджерКриптографии взял из интернета, где их посмотреть вообще?
20. sivin-alexey 507 16.05.22 08:21 Сейчас в теме
Криптопровайдер "Microsoft Enhanced" не подойдет. Должен быть установлен КриптоПро.

Функция Подписать(ДвоичныеДанные,Отпечаток,Отказ,ОписаниеОшибки) Экспорт

	Попытка
		МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider","",80);
	Исключение
		Отказ = Истина;
		ОписаниеОшибки = ОписаниеОшибки();
		Возврат Неопределено;
	КонецПопытки;
	
	Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
	Сертификат = Хранилище.НайтиПоОтпечатку(Отпечаток);
	Если Сертификат=Неопределено Тогда
		Отказ = Истина;
		ОписаниеОшибки = "Не найден сертификат в хранилище";
		Возврат Неопределено;
	КонецЕсли;
	
	МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = "";
	Попытка
		Подпись = МенеджерКриптографии.Подписать(ДвоичныеДанные,Сертификат);
	Исключение
		Отказ = Истина;
		ОписаниеОшибки = ОписаниеОшибки();
		Возврат Неопределено;
	КонецПопытки;
	
	Возврат Подпись;
КонецФункции
Показать
21. Victor89 16.05.22 14:06 Сейчас в теме
(20)

Все равно ошибка:

{ОбщийМодуль.vvoИнтеграция.Модуль(986)}: Ошибка при вызове метода контекста (Подписать)
ДД_Подпись = МенеджерКриптографии.Подписать(ТекстДляПодписи,Сертификат);

по причине:
Ошибка операции с файлом.
по причине:
Каталог не обнаружен 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUxIiA­\Pg0KPNTg6esgwuXw8c\w7uM9ItHB6NEzIiDC5fDx1O7w7D0iNS4wMSIgyOT­U4OnrPSJPTl9OU0NIRkRPUFBSTUFSS18yTFQtMTEwMDAwNjYwMDRfMkJFMDF­iOTEyYTRlYzk1NGMzMDllZjA4ZGMzZGYxO.... далее очень длинный текст

	ФайлСПодписями = ПолучитьИмяВременногоФайла("txt");
	
	МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider","",80);
	Хранилище  = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
	Сертификат = Хранилище.НайтиПоОтпечатку(ПолучитьДвоичныеДанныеИзHexСтроки(Отпечаток));
		
	ДД_Подпись =  МенеджерКриптографии.Подписать(ТекстДляПодписи,Сертификат); 
	
	Возврат ПолучитьСтрокуИзДвоичныхДанных(ДД_Подпись,"windows-1251");

Показать


Что за странная ошибка при подписи?
22. Victor89 16.05.22 22:40 Сейчас в теме
(20)

Добрый день! Ваши советы помогли, но все равно получаю ошибку "Подпись не прошла проверку в crypto". Вот код:

ПодписатьТекстОтсоединеннаяПодпись(ФайлXML_ДД,Отпечаток)

Функция ПодписатьТекстОтсоединеннаяПодпись(Файл_ДД,Отпечаток)
	
	МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider","",80);
	Хранилище            = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
	Сертификат           = Хранилище.НайтиПоОтпечатку(ПолучитьДвоичныеДанныеИзHexСтроки(Отпечаток));
		
	ДД_Подпись = МенеджерКриптографии.Подписать(Файл_ДД,Сертификат);
		
    Результат = Base64Строка(ДД_Подпись);
	
	Если Лев(Результат, 4) = "77u/" Тогда
		Результат = Сред(Результат, 5);
	КонецЕсли; 
	
	Результат = СтрЗаменить(Результат, Символы.ПС, "");
	Результат = СтрЗаменить(Результат, Символы.ВК, "");

	Возврат Результат;

КонецФункции // ПодписатьТекстОтсоединеннаяПодпись()

Показать


Причем ФайлXML_ДД - двоичные данные XML файла. Если отправлять содержимое XML файла - то будет ошибка, описанная выше.

На что еще обратить внимание? Подписываю файл продавца и титул покупателя одинаково..
23. Victor89 16.05.22 22:43 Сейчас в теме
(20)

Причем вначале я подпись получаю XML файлов, а потом уже конвертирую в Base64
24. Uncore 1273 11.09.22 11:25 Сейчас в теме
(23) Получилось у Вас в итоге разобраться с этой ошибкой? "Подпись не прошла проверку в crypto"
25. Victor89 14.09.22 07:30 Сейчас в теме
(24) Добрый день! Нашел еще несколько ошибок в титуле покупателя, но ошибка пока не ушла(
26. Victor89 14.09.22 07:58 Сейчас в теме
(24) Если у Вас будет возможность оказать содействие в этом - буду благодарен. Так как я уже все все перепроверил.
27. Victor89 15.09.22 08:30 Сейчас в теме
(24) Доброе утро!

У меня получилось согласовать через Postman. Были ошибки в файле титула покупателя. Сейчас через Postman все корректно.

А через 1с получаю ошибку

"Имя загружаемого титула содержит MARK, имя документа - не содержит". Не сталкивались?
Прикрепленные файлы:
28. Uncore 1273 15.09.22 10:17 Сейчас в теме
(27) Тут ругается что в имени титула есть МАРК а в имени файла продавца внутри титула нет, либо наоборот. Я получаю перед подписью содержимое документа /content и из него беру все данные для титула. Все завелось после того как использовал объявление XML
ФайлТитула = ПолучитьИмяВременногоФайла("xml");

// выгрузка файла
ТекстЗапроса = Новый ЗаписьXML();
ТекстЗапроса.ОткрытьФайл(ФайлТитула, "windows-1251");
ТекстЗапроса.ЗаписатьОбъявлениеXML();
.............и дальше по схеме
30. Victor89 15.09.22 16:28 Сейчас в теме
(28) Ага, делал также, напутал немного в некоторых местах. Пока разберешься тут.
29. Victor89 15.09.22 16:18 Сейчас в теме
Коллеги, всем спасибо! Все получилось! Проблема была в том, что сервер ЧЗ возвращал мне одну ошибку, а Postman совсем другую (правильную). Основные проблемы были с заполнением файла покупателя.
32. user976872 24.03.23 09:35 Сейчас в теме
(29)

Файл покупателя. Это что надо вручную прописывать все все теги из Приказ ФНС России от 19.12.2018 N ММВ-7-15/820@ ?

Или есть какая-то хитрость ? не могу найти нигде пример создания и заполнения этого файла
Оставьте свое сообщение

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