Загрузка данных
// [+] Начало фрагмента: Добавлен, Гаврилов Максим Сергеевич, 17.07.2026 {
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПеревестиОбращенияВСостояниеВозвращено(Команда)
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ПеревестиОбращенияВСостояниеВозвращеноНаСервере(Обращение);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервереБезКонтекста
Процедура ПеревестиОбращенияВСостояниеВозвращеноНаСервере(Обращение)
СостояниеОбращенияЗавершено = Справочники.СостоянияИнцидентов.НайтиПоКоду("12");
СостояниеОбращениеВозвращено = Справочники.СостоянияИнцидентов.НайтиПоКоду("13");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент КАК Обращение,
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Номер КАК НомерОбращения,
| МАКСИМУМ(ДействияВходящихПисемПоОбращениям.ВходящееПисьмо.Дата) КАК ВходящееПисьмоДата,
| ДействияВходящихПисемПоОбращениям.ВходящееПисьмо КАК ВходящееПисьмо
|ПОМЕСТИТЬ ВТ_ДанныеВходящихПисем
|ИЗ
| РегистрСведений.ДействияВходящихПисемПоОбращениям КАК ДействияВходящихПисемПоОбращениям
|ГДЕ
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент = &Обращение
| И ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Состояние = &Состояние
| И НЕ ДействияВходящихПисемПоОбращениям.ВходящееПисьмо.ФД_ВозвратОбращения
|
|СГРУППИРОВАТЬ ПО
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент,
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Номер,
| ДействияВходящихПисемПоОбращениям.ВходящееПисьмо
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент КАК Обращение,
| ДействияВходящихПисемПоОбращениям.ВходящееПисьмо.Тема КАК ТемаВходящегоПисьма,
| ВТ_ДанныеВходящихПисем.НомерОбращения КАК НомерОбращения,
| ВТ_ДанныеВходящихПисем.ВходящееПисьмоДата КАК ВходящееПисьмоДата,
| ВТ_ДанныеВходящихПисем.ВходящееПисьмо КАК ВходящееПисьмо
|ПОМЕСТИТЬ ВТ_ТемаИДатаВходящихПисем
|ИЗ
| ВТ_ДанныеВходящихПисем КАК ВТ_ДанныеВходящихПисем
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДействияВходящихПисемПоОбращениям КАК ДействияВходящихПисемПоОбращениям
| ПО ВТ_ДанныеВходящихПисем.Обращение = ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент
| И ВТ_ДанныеВходящихПисем.ВходящееПисьмоДата = ДействияВходящихПисемПоОбращениям.ВходящееПисьмо.Дата
|ГДЕ
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент = &Обращение
| И ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент.Состояние = &Состояние
|
|СГРУППИРОВАТЬ ПО
| ДействияВходящихПисемПоОбращениям.ИспользуемыйДокумент,
| ДействияВходящихПисемПоОбращениям.ВходящееПисьмо.Тема,
| ВТ_ДанныеВходящихПисем.НомерОбращения,
| ВТ_ДанныеВходящихПисем.ВходящееПисьмоДата,
| ВТ_ДанныеВходящихПисем.ВходящееПисьмо
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(СообщенияИУведомления.ДатаРегистрации) КАК ДатаРегистрации,
| ВТ_ТемаИДатаВходящихПисем.Обращение КАК Обращение
|ПОМЕСТИТЬ ВТ_ПредытогДата
|ИЗ
| ВТ_ТемаИДатаВходящихПисем КАК ВТ_ТемаИДатаВходящихПисем
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СообщенияИУведомления КАК СообщенияИУведомления
| ПО ВТ_ТемаИДатаВходящихПисем.Обращение = СообщенияИУведомления.ИспользуемыйДокумент
| И (СообщенияИУведомления.Заголовок ПОДОБНО ""%Работы по вашему обращению%завершены:%"")
|
|СГРУППИРОВАТЬ ПО
| ВТ_ТемаИДатаВходящихПисем.Обращение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СообщенияИУведомления.ИспользуемыйДокумент КАК Обращение,
| ВТ_ТемаИДатаВходящихПисем.ТемаВходящегоПисьма КАК ТемаВходящегоПисьма,
| ВТ_ТемаИДатаВходящихПисем.НомерОбращения КАК НомерОбращения,
| ВТ_ТемаИДатаВходящихПисем.ВходящееПисьмоДата КАК ВходящееПисьмоДата,
| ВТ_ПредытогДата.ДатаРегистрации КАК ДатаРегистрации,
| ВТ_ТемаИДатаВходящихПисем.ВходящееПисьмо КАК ВходящееПисьмо
|ПОМЕСТИТЬ ВТ_Предытог
|ИЗ
| ВТ_ТемаИДатаВходящихПисем КАК ВТ_ТемаИДатаВходящихПисем
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СообщенияИУведомления КАК СообщенияИУведомления
| ПО ВТ_ТемаИДатаВходящихПисем.Обращение = СообщенияИУведомления.ИспользуемыйДокумент
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПредытогДата КАК ВТ_ПредытогДата
| ПО ВТ_ТемаИДатаВходящихПисем.Обращение = ВТ_ПредытогДата.Обращение
|
|СГРУППИРОВАТЬ ПО
| СообщенияИУведомления.ИспользуемыйДокумент,
| ВТ_ТемаИДатаВходящихПисем.ТемаВходящегоПисьма,
| ВТ_ТемаИДатаВходящихПисем.НомерОбращения,
| ВТ_ТемаИДатаВходящихПисем.ВходящееПисьмоДата,
| ВТ_ПредытогДата.ДатаРегистрации,
| ВТ_ТемаИДатаВходящихПисем.ВходящееПисьмо
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Предытог.Обращение КАК Обращение,
| ВТ_Предытог.ТемаВходящегоПисьма КАК ТемаВходящегоПисьма,
| ВТ_Предытог.НомерОбращения КАК НомерОбращения,
| ВТ_Предытог.ВходящееПисьмо КАК ВходящееПисьмо
|ИЗ
| ВТ_Предытог КАК ВТ_Предытог";
Запрос.УстановитьПараметр("Обращение", Обращение);
Запрос.УстановитьПараметр("Состояние", СостояниеОбращенияЗавершено);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru = 'Нет данных для обработки результата:
|Возможные причины:
|1. По данному обращению нет входящих электронных писем
|2. Выбрано обращение, отличное от статуса ""Завершено""
|3. Данное обращение не подходит под условие изменения состояния'");
Сообщение.Сообщить();
Возврат;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Успех = Истина;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТемаВходящегоПисьма = ВыборкаДетальныеЗаписи.ТемаВходящегоПисьма;
НомерОбращения = ВыборкаДетальныеЗаписи.НомерОбращения;
//Пытаемся найти в теме входящего письма строку вида:
//RE: ... №-<номер обращения>
СтрокаПоискаНайдена = СтрНачинаетсяС(ТемаВходящегоПисьма, "RE:")
И СтрЗаканчиваетсяНа(ТемаВходящегоПисьма, НомерОбращения)
И СтрНайти(ТемаВходящегоПисьма, "завершены") > 0;
Если Не СтрокаПоискаНайдена Тогда
Успех = Ложь;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru = 'Данное обращение не подходит под условие изменения состояния'");
Сообщение.Сообщить();
Продолжить;
КонецЕсли;
ОбращениеОбъект = ВыборкаДетальныеЗаписи.Обращение.ПолучитьОбъект();
ОбращениеОбъект.Состояние = СостояниеОбращениеВозвращено;
ОбращениеОбъект.мЗагрузкаДанных = Истина;
ВходящееПисьмоОбъект = ВыборкаДетальныеЗаписи.ВходящееПисьмо.ПолучитьОбъект();
ВходящееПисьмоОбъект.ФД_ВозвратОбращения = Истина;
ВходящееПисьмоОбъект.ОбменДанными.Загрузка = Истина;
Попытка
ОбращениеОбъект.Записать();
ВходящееПисьмоОбъект.Записать();
Исключение
ТекстОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка изменения состояния обращения'"),
УровеньЖурналаРегистрации.Ошибка,
,
ВыборкаДетальныеЗаписи.Обращение,
ТекстОшибки
);
Успех = Ложь;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru = 'Не удалось изменить состояние обращения:
|Подробная информация находится в Журнале регистрации'");
Сообщение.Сообщить();
Прервать;
КонецПопытки;
КонецЦикла;
Если Успех Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = НСтр("ru = 'Успешное изменение состояния обращения'");
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
#КонецОбласти // [-] Окончание фрагмента: Добавлен, Гаврилов Максим Сергеевич, 17.07.2026 }