#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
Результат = Новый Массив;
Результат.Добавить("Код");
Результат.Добавить("Наименование");
Результат.Добавить("ПредопределеннаяПапка");
Возврат Результат;
КонецФункции
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Владелец)
| ИЛИ ЗначениеРазрешено(Владелец.ВладелецУчетнойЗаписи, ПустаяСсылка КАК Ложь)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ОбработчикиОбновления
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ТекстЗапроса ="
|ВЫБРАТЬ
| ПапкиЭлектронныхПисем.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
|ГДЕ
| ПапкиЭлектронныхПисем.ПредопределеннаяПапка
| И ПапкиЭлектронныхПисем.ТипПредопределеннойПапки = ЗНАЧЕНИЕ(Перечисление.ТипыПредопределенныхПапокПисем.ПустаяСсылка)
|";
Запрос = Новый Запрос(ТекстЗапроса);
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПолноеИмяОбъекта = "Справочник.ПапкиЭлектронныхПисем";
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| СсылкиДляОбработки.Ссылка КАК Ссылка,
| ТаблицаСправочника.Наименование КАК Наименование
|ИЗ
| &ВТДокументыДляОбработки КАК СсылкиДляОбработки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПапкиЭлектронныхПисем КАК ТаблицаСправочника
| ПО ТаблицаСправочника.Ссылка = СсылкиДляОбработки.Ссылка";
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Результат = ОбновлениеИнформационнойБазы.СоздатьВременнуюТаблицуСсылокДляОбработки(Параметры.Очередь, ПолноеИмяОбъекта, МенеджерВременныхТаблиц);
Если НЕ Результат.ЕстьДанныеДляОбработки Тогда
Параметры.ОбработкаЗавершена = Истина;
Возврат;
КонецЕсли;
Если НЕ Результат.ЕстьЗаписиВоВременнойТаблице Тогда
Параметры.ОбработкаЗавершена = Ложь;
Возврат;
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ВТДокументыДляОбработки", Результат.ИмяВременнойТаблицы);
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ОбъектыДляОбработки = Запрос.Выполнить().Выбрать();
Пока ОбъектыДляОбработки.Следующий() Цикл
ПредставлениеСсылки = Строка(ОбъектыДляОбработки.Ссылка);
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
ЭлементБлокировки.УстановитьЗначение("Ссылка", ОбъектыДляОбработки.Ссылка);
Блокировка.Заблокировать();
Объект = ОбъектыДляОбработки.Ссылка.ПолучитьОбъект();
Если Объект = Неопределено Тогда
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ОбъектыДляОбработки.Ссылка);
Иначе
Если Объект.ПредопределеннаяПапка
И Не ЗначениеЗаполнено(Объект.ТипПредопределеннойПапки) Тогда
Объект.ТипПредопределеннойПапки = УправлениеЭлектроннойПочтой.ТипПредопределеннойПапкиПоИмени(ОбъектыДляОбработки.Наименование);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(ОбъектыДляОбработки.Ссылка);
КонецЕсли;
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ОбновлениеИнформационнойБазы.ЗаписатьОшибкуВЖурналРегистрации(
ОбъектыДляОбработки.Ссылка,
ПредставлениеСсылки,
ИнформацияОбОшибке());
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли