Загрузка файлов на сервер с использованием 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 1237 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 3206 02.06.22 13:48 Сейчас в теме
полезная штука - спасибо!
7. WKBAPKA 214 22.03.23 17:42 Сейчас в теме
Огромное спасибо!
Сколько я всего перелопатил, сколько примеров пересмотрел
Ничего не работает!
Оставьте свое сообщение
Вакансии
Консультант 1С
Москва
зарплата от 80 000 руб. до 150 000 руб.
Полный день

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

Начальник отдела программирования
Уфа
зарплата от 125 000 руб.
Полный день

Программист/тестировщик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день