Загрузка данных


Функция GetComment(ЗапросПарам) Экспорт
	
	Попытка
		
		Ответ = Новый HTTPСервисОтвет(200);
		
		ID = ЗапросПарам.ПараметрыЗапроса.Получить("id");	
		
		Если ID = Неопределено Тогда		
			Ошибка404(Ответ, "Параметр ID не заполнен");
			ЗаписатьЛоги(404, "Параметр ID не заполнен", "getComment"); 
			Возврат Ответ;  		
		КонецЕсли;    	
		
		Запрос = Новый Запрос;
		Запрос.Текст =  
		"ВЫБРАТЬ
		|	ИТ_ОбщениеПоДокументам.Обращение.Номер КАК incidentId,
		|	ИТ_ОбщениеПоДокументам.Комментарий КАК text,
		|	ИТ_ОбщениеПоДокументам.Дата КАК date,
		|	ИТ_ОбщениеПоДокументам.ВходящееПисьмо.СтруктураКартинок КАК attachments,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ИТ_ОбщениеПоДокументам.Установил) КАК author
		|ИЗ
		|	РегистрСведений.ИТ_ОбщениеПоДокументам КАК ИТ_ОбщениеПоДокументам
		|ГДЕ
		|	ИТ_ОбщениеПоДокументам.Обращение.Номер = &Номер
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ДокументЭлектронноеПисьмо.ИспользуемыйДокументНомер,
		|	ДокументЭлектронноеПисьмо.ВходящееПисьмо.Текст,
		|	ДокументЭлектронноеПисьмо.ВходящееПисьмо.Дата,
		|	ДокументЭлектронноеПисьмо.ВходящееПисьмо.СтруктураКартинок,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДокументЭлектронноеПисьмо.ВходящееПисьмо.ОтправительКонтакт)
		|ИЗ
		|	(ВЫБРАТЬ ПЕРВЫЕ 1
		|		ДействияВходящихПисемПоОбращениям.ВходящееПисьмо КАК ВходящееПисьмо,
		|		ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Номер КАК ИспользуемыйДокументНомер
		|	ИЗ
		|		РегистрСведений.ДействияВходящихПисемПоОбращениям КАК ДействияВходящихПисемПоОбращениям
		|	ГДЕ
		|		ДействияВходящихПисемПоОбращениям.Регистрация
		|		И ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Номер = &Номер) КАК ДокументЭлектронноеПисьмо
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТ_СтруктурыДанныхПисемВходящейПочты КАК ИТ_СтруктурыДанныхПисемВходящейПочты
		|		ПО (ИТ_СтруктурыДанныхПисемВходящейПочты.ВходящееПисьмо = ДокументЭлектронноеПисьмо.ВходящееПисьмо)";
		
		Запрос.УстановитьПараметр("Номер",  ID);	
		
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Количество() <> 0 Тогда
			СтруктураОбщения = Новый Структура;  
	
			СтруктураОбщения.Вставить("incidentId", ID);
			СтруктураОбщения.Вставить("messages", Новый Массив);
			Пока Выборка.Следующий() Цикл 
				Обращение = ПолучитьОбщенияОбращения();
				ЗаполнитьЗначенияСвойств(Обращение, Выборка,, "attachments");
				ВложениеВыборки = Выборка.attachments; 
				Если ТипЗнч(ВложениеВыборки) = Тип("ХранилищеЗначения") Тогда
					Вложения = ВложениеВыборки.Получить();
				ИначеЕсли ТипЗнч(ВложениеВыборки) = Тип("Массив") Тогда
					Вложения = ВложениеВыборки;
				Иначе
					Вложения = Неопределено;
				КонецЕсли;
				
				Если Вложения <> Неопределено Тогда
					Для Каждого ВложениеКартинка Из Вложения Цикл
						КартинкаСтрока = ПодготовитьТекстПисьмаИСтруктуруКартинок(ВложениеКартинка.Значение);        
						Обращение.attachments.Добавить(КартинкаСтрока);
					КонецЦикла;
				КонецЕсли;
				СтруктураОбщения.messages.Добавить(Обращение);
			КонецЦикла;
			
			Запись = Новый ЗаписьJSON;
			Запись.УстановитьСтроку();
			ЗаписатьJSON(Запись, СтруктураОбщения);
			СтрокаОтвета = Запись.Закрыть();
			Ответ.УстановитьТелоИзСтроки(СтрокаОтвета);
			ЗаписатьЛоги(200, "Успешный запрос", "getComment");
			
		Иначе
			
			Ошибка404(Ответ, СтрШаблон("Обращение с номером %1 не найдено или не найдены сообщения в обращении", ID));
			ЗаписатьЛоги(404, СтрШаблон("Обращение с номером %1", ID), "getComment"); 
			
		КонецЕсли;
		
	Исключение
		
		Ответ = Новый HTTPСервисОтвет(200);
		Ответ.УстановитьТелоИзСтроки(ПолучитьJSONОшибка(ОписаниеОшибки()));
		ЗаписатьЛоги(200, ОписаниеОшибки(), "getComment");
		
	КонецПопытки;

	Возврат Ответ;      
	
КонецФункции