Загрузка файлов на сервер с использованием HTTP-сервиса 1С (multipart/form-data).

0. ltfriend 904 12.08.20 11:52 Сейчас в теме
Вариант загрузки файлов в составных данных методом POST (multipart/form-data) на примере демонстрационной базы.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 12.08.20 12:10
3. ltfriend 904 12.08.20 20:47 Сейчас в теме
2. malikov_pro 1236 12.08.20 12:52 Сейчас в теме
В чем новизна относительно https://infostart.ru/public/20017/?
Если реализовано в виде расширения которое можно относительно просто переиспользовать, то хорошо. В качестве основы можно использовать демо БСП.
4. SizovE 243 17.08.20 12:05 Сейчас в теме
Я так понимаю, там была отправка, а тут загрука. 1С не умеет работать с formdata.
Полезная штука.
5. Konstantine26 20.01.21 09:51 Сейчас в теме
Пользовался данным кодом, но столкнулся с загрузкой нескольких файлов в одном решил проблему следующим образом, может кому то будет полезно:
// Выполняет чтение тела запроса HTTP-сервиса, имеющее составное содержимое (multipart/form-data) и возвращает поля
// этого содержимого в виде соответствия. В качестве ключа используется имя поля.
//
// Параметры:
//  Запрос - HTTPСервисЗапрос - запрос, полученный HTTP-сервисом.
// 
// Возвращаемое значение:
//  Соответствие - соответствие, содержащее описание полей составного содержимого. В качестве ключа используется имя
//                 поля. Значение содержит структуру с описанием поля. Подробнее см. ПолеСоставногоСодержимогоЗапроса.
//
Функция ПрочитатьСоставноеСодержимоеЗапроса(Запрос) Экспорт
	
	ПоляЗапроса = Новый Соответствие;
	
	РазделительПолей = ПолучитьРазделитьПолейСоставногоСодержимого(Запрос);	
	ОкончаниеПолей = "--";
	
	ТелоЗапроса = Запрос.ПолучитьТелоКакПоток();
	ЧтениеДанных = Новый ЧтениеДанных(ТелоЗапроса);
	
	ЕстьДанные = Истина;
	Пока ЕстьДанные Цикл
		
		РезультатЧтения = ЧтениеДанных.ПрочитатьДо(РазделительПолей);
		ЕстьДанные = РезультатЧтения.МаркерНайден;
		
		Если ЕстьДанные Тогда
			Строка = ЧтениеДанных.ПрочитатьСтроку();
			ЕстьДанные = (Строка <> ОкончаниеПолей);
		КонецЕсли; 
		
		Если РезультатЧтения.Размер = 0 Тогда
			Продолжить;
		КонецЕсли; 
		
		Поток = РезультатЧтения.ОткрытьПотокДляЧтения();
		
		Поле = ПрочитатьПолеСоставногоСодержимогоИзПотока(Поток);
		//Дописание
		НайденоеПоле = ПоляЗапроса.Получить(Поле.Имя); 
		
		Если НайденоеПоле = Неопределено Тогда
			ПоляЗапроса.Вставить(Поле.Имя, Поле);
		Иначе
			Если ТипЗнч(НайденоеПоле) = Тип("Структура") Тогда 
				МассивСтруктур = Новый Массив;
				МассивСтруктур.Добавить(НайденоеПоле);
				МассивСтруктур.Добавить(Поле);
				ПоляЗапроса.Удалить(Поле.Имя);
				ПоляЗапроса.Вставить(Поле.Имя,МассивСтруктур);
			ИначеЕсли  ТипЗнч(НайденоеПоле) = Тип("Массив") Тогда
				ПоляЗапроса.Получить(Поле.Имя).Добавить(Поле);
			КонецЕсли;
		КонецЕсли;
		//Дописание
		Поток.Закрыть();
		
	КонецЦикла; 
	
	ЧтениеДанных.Закрыть();
	ТелоЗапроса.Закрыть();
	
	Возврат ПоляЗапроса;
	
КонецФункции 
Показать
6. quazare 3133 02.06.22 13:48 Сейчас в теме
полезная штука - спасибо!
7. WKBAPKA 214 22.03.23 17:42 Сейчас в теме
Огромное спасибо!
Сколько я всего перелопатил, сколько примеров пересмотрел
Ничего не работает!
Оставьте свое сообщение
Вакансии
Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день

Программист 1С (ERP, УХ, КА 2, УТ 11), удаленно
Москва
зарплата от 160 000 руб.
Полный день

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

Консультант 1С / Специалист поддержки 1C
Екатеринбург
зарплата от 70 000 руб.
Полный день

Технический архитектор 1С
Екатеринбург
зарплата от 200 000 руб.
Полный день