Загрузка данных
Функция 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");
КонецПопытки;
Возврат Ответ;
КонецФункции