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


	Попытка

		Ответ = Новый HTTPСервисОтвет(200);

		ID = ЗапросПарам.ПараметрыЗапроса.Получить("id");

		Если ID = Неопределено Тогда
			Ошибка404(Ответ, "Параметр ID не заполнен");
			ЗаписатьЛоги(404, "Параметр ID не заполнен", "getComment");
			Возврат Ответ;
		КонецЕсли;

		Запрос = Новый Запрос;
		Запрос.Текст =
		"ВЫБРАТЬ
		|	ИТ_ОбщениеПоДокументам.Обращение.Номер КАК incidentId,
		|	ИТ_ОбщениеПоДокументам.Комментарий КАК text,
		|	ИТ_ОбщениеПоДокументам.Дата КАК date,
		|	ИТ_ОбщениеПоДокументам.ВходящееПисьмо.СтруктураКартинок КАК attachments,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ИТ_ОбщениеПоДокументам.Установил) КАК author,
		|	ИТ_ОбщениеПоДокументам.ФорматированныйКомментарий КАК ФорматированныйКомментарий
		|ИЗ
		|	РегистрСведений.ИТ_ОбщениеПоДокументам КАК ИТ_ОбщениеПоДокументам
		|ГДЕ
		|	ИТ_ОбщениеПоДокументам.Обращение.Номер = &Номер
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ДокументЭлектронноеПисьмо.ИспользуемыйДокументНомер,
		|	ДокументЭлектронноеПисьмо.ВходящееПисьмо.Текст,
		|	ДокументЭлектронноеПисьмо.ВходящееПисьмо.Дата,
		|	ДокументЭлектронноеПисьмо.ВходящееПисьмо.СтруктураКартинок,
		|	ПРЕДСТАВЛЕНИЕССЫЛКИ(ДокументЭлектронноеПисьмо.ВходящееПисьмо.ОтправительКонтакт),
		|	NULL
		|ИЗ
		|	(ВЫБРАТЬ ПЕРВЫЕ 1
		|		ДействияВходящихПисемПоОбращениям.ВходящееПисьмо КАК ВходящееПисьмо,
		|		ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Номер КАК ИспользуемыйДокументНомер
		|	ИЗ
		|		РегистрСведений.ДействияВходящихПисемПоОбращениям КАК ДействияВходящихПисемПоОбращениям
		|	ГДЕ
		|		ДействияВходящихПисемПоОбращениям.Регистрация
		|		И ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Номер = &Номер) КАК ДокументЭлектронноеПисьмо
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИТ_СтруктурыДанныхПисемВходящейПочты КАК ИТ_СтруктурыДанныхПисемВходящейПочты
		|		ПО (ИТ_СтруктурыДанныхПисемВходящейПочты.ВходящееПисьмо = ДокументЭлектронноеПисьмо.ВходящееПисьмо)";

		Запрос.УстановитьПараметр("Номер", ID);

		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		Если Выборка.Количество() <> 0 Тогда
			СтруктураОбщения = Новый Структура;

			СтруктураОбщения.Вставить("incidentId", ID);
			СтруктураОбщения.Вставить("messages", Новый Массив);
			Пока Выборка.Следующий() Цикл
				Обращение = ПолучитьОбщенияОбращения();
				ЗаполнитьЗначенияСвойств(Обращение, Выборка,, "attachments");
				ДобавитьКартинкиФорматированногоКомментария(Выборка.ФорматированныйКомментарий, Обращение.attachments);

				// Почтовое хранилище остается резервным источником для сообщений без встроенных картинок.
				Если Обращение.attachments.Количество() = 0 Тогда
					ВложениеВыборки = Выборка.attachments;
					Если ТипЗнч(ВложениеВыборки) = Тип("ХранилищеЗначения") Тогда
						Вложения = ВложениеВыборки.Получить();
					ИначеЕсли ТипЗнч(ВложениеВыборки) = Тип("Массив") Тогда
						Вложения = ВложениеВыборки;
					Иначе
						Вложения = Неопределено;
					КонецЕсли;

					Если Вложения <> Неопределено Тогда
						Для Каждого ВложениеКартинка Из Вложения Цикл
							КартинкаСтрока = ПодготовитьТекстПисьмаИСтруктуруКартинок(ВложениеКартинка.Значение);
							Если КартинкаСтрока <> "" Тогда
								Обращение.attachments.Добавить(КартинкаСтрока);
							КонецЕсли;
						КонецЦикла;
					КонецЕсли;
				КонецЕсли;

				СтруктураОбщения.messages.Добавить(Обращение);
			КонецЦикла;

			Запись = Новый ЗаписьJSON;
			Запись.УстановитьСтроку();
			ЗаписатьJSON(Запись, СтруктураОбщения);
			СтрокаОтвета = Запись.Закрыть();
			Ответ.УстановитьТелоИзСтроки(СтрокаОтвета);
			ЗаписатьЛоги(200, "Успешный запрос", "getComment");

		Иначе

			Ошибка404(Ответ, СтрШаблон("Обращение с номером %1 не найдено или не найдены сообщения в обращении", ID));
			ЗаписатьЛоги(404, СтрШаблон("Обращение с номером %1", ID), "getComment");

		КонецЕсли;

	Исключение

		Ответ = Новый HTTPСервисОтвет(200);
		Ответ.УстановитьТелоИзСтроки(ПолучитьJSONОшибка(ОписаниеОшибки()));
		ЗаписатьЛоги(200, ОписаниеОшибки(), "getComment");

	КонецПопытки;

	Возврат Ответ;