Интеграция 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 506 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 506 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 506 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 506 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 506 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 506 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 506 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 1272 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 1272 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@ ?

Или есть какая-то хитрость ? не могу найти нигде пример создания и заполнения этого файла
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)