Подключение к http сервису через multipart/form-data в 1С

30.10.23

Интеграция - WEB-интеграция

Описан механизм работы с http сервисом через multipart/form-data в 1С.

Было необходимо из 1С отправить файл в специальный API, на вход требовалось подавать pdf файл и код товара через  multipart/form-data.

1) Первым делом воспроизвел данный механизм в POSTMAN, указав необходимые данные в секциях body и headers


   

 

В body указаны обязательные параметры («file» и «product_code» для API, в том числе и сам передаваемый файл

2) Для того чтобы оформить передачу в 1с нужно через POSTMAN обратиться к SNIPPET, выбираем http

 

   

 

4) Далее очень важно соблюдать структуру, она должна быть идентичная нашему snippet,  важен каждый символ, отступ, перенос.

Необходимо создать конвертируемый разделитель строк:

Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");

И теперь построчно также как в snippet записываем данные через объект запись данных

 

 

Теперь поясню построчно:

Разделитель нужно указать именно как в коде выше

Создаем объект Запись данных, в него и будем записывать наши данные построчно

ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");   

ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);  

Начинаем с разделителя Прописываем данные form-data один в один как в Snippet, подставляя ПОЛНОЕ имя файла (полный пуnь к файлу, пример "\\сеть\НашаПапка\НашФайл.pdf")

ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ПолноеИмяФайла + """");   

Обязательно указываем тип передаваемых данных, в нашем случае это pdf файл (тут важно верно указать тип)

ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/pdf");

ЗаписьДанных.ЗаписатьСтроку(""); Пустая строка как в snippet

Записываем наш pdf файл в виде двоичных данных

 

 

 

ЗаписьДанных.Записать(ДвоичныеДанные);   

ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель); Снова Разделитель

Добавляем данные второго параметра как оно написано в snippet

ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + ИмяВторогоПараметра + ";");

ЗаписьДанных.ЗаписатьСтроку("Content-Type: text/html"); тут необходимо указать тип

ЗаписьДанных.ЗаписатьСтроку(""); Не забываем про пустую строку

ЗаписьДанных.ЗаписатьСтроку(Код);   Второй параметр, тут просто передаем строку

ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--"); Снова разделитель

ЗаписьДанных.ЗаписатьСтроку(""); ПустаяСтрока

ЗаписьДанных.Закрыть(); 

И на этом запись закончена, закрываем запись данных.

В помощь была взята статья статьи, которая помогла мне с данной задачей, но кое-что я решил дополнить.

Если делать все аналогично, соблюдая все нюансы то  код для отправки запроса в формате multipart/form-data отработает правильно.

Спасибо за внимание.

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15994    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18007    9    15    

14

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12936    32    8    

11

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    85044    26    51    

50

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89248    163    217    

320
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3039 30.10.23 15:46 Сейчас в теме
2. bayselonarrend 1206 30.10.23 16:11 Сейчас в теме
Мог просто коннектор взять, да и все
Labotamy; wtlz; user603532_fan_club_chelsea; German; Ruschel; +5 Ответить
4. caponid 31.10.23 21:33 Сейчас в теме
(2)
Коннектор нужно доработать напильником - он не формирует Content-length
хотя тут в "ручном" примере его тоже нет.

Некоторые сервера могут не пропустить такой запрос.

ЗЫ: Postman его сформировал ))
it_depDi; +1 Ответить
5. bayselonarrend 1206 31.10.23 21:57 Сейчас в теме
(4)Да мимо прочего, тема много раз уже обсосана. Даже если взять статью, которую автор сам указал в конце - в чем разница? Если я ничего не упустил, то только во втором файле ¯\_(ツ)_/¯ и записи JSON, которая потом не используется ¯\_(ツ)_/¯¯\_(ツ)_/¯¯\_(ツ)_/¯
3. serpent 67 31.10.23 10:07 Сейчас в теме
исправьте " вашем каждый"
6. Red_Devil 179 03.11.23 08:37 Сейчас в теме
Автор молодец, чем больше примеров тем лучше. Про POSTMAN тоже полезно.
Сам сейчас делаю выгрузку электронной транспортной накладной в контур логистику
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");

	Тело = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");               
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""FormFiles""; filename=""ON_TRNACLGROT____0_20231101_dbf80806-1950-45ac-be43-e59dd6c825a3.xml""");
	ЗаписьДанных.ЗаписатьСтроку("Content-Type: multipart/form-data");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.Записать(Результат.ДвоичныеДанные);
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
	ЗаписьДанных.Закрыть();

	ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
	
	ssl = Новый ЗащищенноеСоединениеOpenSSL(
	            Новый СертификатКлиентаWindows(),
	            Новый СертификатыУдостоверяющихЦентровWindows());
				
	АдресСайта = "logist-api.kontur.ru";
	HTTPСоединение = Новый HTTPСоединение(АдресСайта,,,,,,ssl);
	HTTPЗапрос = Новый HTTPЗапрос;
	HTTPЗапрос.АдресРесурса = "/v1/documents/waybill";
	
	HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + разделитель);
	HTTPЗапрос.Заголовки.Вставить("x-kontur-apikey", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
	ОтветHTTP = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
	НашОтвет = ОтветHTTP.ПолучитьТелоКакСтроку();
	Сообщить(НашОтвет);
Показать
Оставьте свое сообщение