Чтение параметров http-запроса в формате x-www-form-urlencoded в структуру

Smaylukk 49 1 2
Функция ПолучитьПараметры(Тело)Экспорт
	
	Результат = Новый Структура;
	Тело = РаскодироватьСтроку(Тело, СпособКодированияСтроки.КодировкаURL, "UTF-8");
	Тело = СтрЗаменить(Тело, "+", " ");
	ПарметрыЗначения = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Тело, "&");
	Для Каждого Пар Из ПарметрыЗначения Цикл
		
		мПар = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Пар, "=");
		Если мПар.Количество() > 1 Тогда
			СущЗначениеПараметра = "";
			
			Попытка
				Результат.Свойство(мПар[0], СущЗначениеПараметра);
			Исключение
				Продолжить;
			КонецПопытки;
			
			//Если в структуре нет такого параметра, просто его добавляем.
			Если ПустаяСтрока(СущЗначениеПараметра) Тогда 
				Результат.Вставить(мПар[0], мПар[1]);
			Иначе
				
				//Если такой параметр есть и значени его находится в массиве, то добавляем
				//текущий параметр в массив.
				Если ТипЗнч(СущЗначениеПараметра) = Тип("Массив") Тогда 
					СущЗначениеПараметра.Добавить(мПар[1]);
					Результат.Вставить(мПар[0], СущЗначениеПараметра);
					
					//Если это второе значение параметра, то добавляем уже существующее и текущее
					//значение в массив.	
				Иначе 
					МассивЗначЭтогоПараметра = Новый Массив();
					МассивЗначЭтогоПараметра.Добавить(СущЗначениеПараметра);
					МассивЗначЭтогоПараметра.Добавить(мПар[1]);
					Результат.Вставить(мПар[0], МассивЗначЭтогоПараметра);
				КонецЕсли;
			КонецЕсли;
		ИначеЕсли мПар.Количество() = 1 Тогда
			Если Не Результат.Свойство(мПар[0]) Тогда
				Результат.Вставить(мПар[0], "");
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции
0
Орфографическая ошибка в urlencoded: urlencoded
Орфографическая ошибка в РаскодироватьСтроку: Раскодировать
Орфографическая ошибка в ПарметрыЗначения (найдено 2): Парметры
Орфографическая ошибка в значени: значени

См. также

Чтение параметров http-запроса в формате x-www-form-urlencoded в соответствие

Заполнение информации о Контрагенте по ИНН через сервис api-fns.ru

СоздатьПустыеПараметрыВыгрузки (БСП)

Заполнить параметры запроса из структуры

ОбщиеПараметрыЗапросов (БСП)

СообщениеОбработанЗапросРазрешенийИнформационнойБазы (БСП)

СообщениеОбработанЗапросРазрешенийОбластиДанных (БСП)

ЗапроситьЛицензииУникальныхУслугУМенеджераСервиса (БСП)

Модератору