Рассчитать рассмотрено по папкам. Рассчитывает состояния предметов взаимодействий.
// Рассчитывает состояния предметов взаимодействий.
//
// Параметры:
// ТаблицаПапок - ТаблицаЗначений, Неопределено - таблица папок, которые необходимо рассчитать.
// Если Неопределено, то рассчитываются состояния всех папок.
//
Процедура РассчитатьРассмотреноПоПапкам(ТаблицаПапок) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Если ТаблицаПапок = Неопределено Тогда
РегистрыСведений.СостоянияПапокПисем.УдалитьЗаписьИзРегистра(Неопределено);
Запрос.Текст = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма КАК ПапкаЭлектронногоПисьма,
| СУММА(ВЫБОР
| КОГДА ПредметыПапкиВзаимодействий.Рассмотрено
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ) КАК КоличествоНеРассмотрено
|ПОМЕСТИТЬ ИспользуемыеПапки
|ИЗ
| РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
|ГДЕ
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма <> ЗНАЧЕНИЕ(Справочник.ПапкиЭлектронныхПисем.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма
|
|ИНДЕКСИРОВАТЬ ПО
| ПапкаЭлектронногоПисьма
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПапкиЭлектронныхПисем.Ссылка КАК Папка,
| ЕСТЬNULL(ИспользуемыеПапки.КоличествоНеРассмотрено, 0) КАК НеРассмотрено
|ИЗ
| Справочник.ПапкиЭлектронныхПисем КАК ПапкиЭлектронныхПисем
| ЛЕВОЕ СОЕДИНЕНИЕ ИспользуемыеПапки КАК ИспользуемыеПапки
| ПО (ИспользуемыеПапки.ПапкаЭлектронногоПисьма = ПапкиЭлектронныхПисем.Ссылка)";
Иначе
Если ТаблицаПапок.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Запрос.Текст = "
|ВЫБРАТЬ
| ПапкиДляРасчета.ПоЧемуРассчитывать КАК Папка
|ПОМЕСТИТЬ ПапкиДляРасчета
|ИЗ
| &ПапкиДляРасчета КАК ПапкиДляРасчета
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ПредметыПапкиВзаимодействий.Рассмотрено
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ) КАК КоличествоНеРассмотрено,
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма КАК Папка
|ПОМЕСТИТЬ РассчитанныеПапки
|ИЗ
| РегистрСведений.ПредметыПапкиВзаимодействий КАК ПредметыПапкиВзаимодействий
|ГДЕ
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма В
| (ВЫБРАТЬ
| ПапкиДляРасчета.Папка
| ИЗ
| ПапкиДляРасчета КАК ПапкиДляРасчета)
|
|СГРУППИРОВАТЬ ПО
| ПредметыПапкиВзаимодействий.ПапкаЭлектронногоПисьма
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПапкиДляРасчета.Папка,
| ЕСТЬNULL(РассчитанныеПапки.КоличествоНеРассмотрено, 0) КАК НеРассмотрено
|ИЗ
| ПапкиДляРасчета КАК ПапкиДляРасчета
| ЛЕВОЕ СОЕДИНЕНИЕ РассчитанныеПапки КАК РассчитанныеПапки
| ПО ПапкиДляРасчета.Папка = РассчитанныеПапки.Папка";
Запрос.УстановитьПараметр("ПапкиДляРасчета", ТаблицаПапок);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.СостоянияПапокПисем.ВыполнитьЗаписьВРегистр(Выборка.Папка, Выборка.НеРассмотрено);
КонецЦикла;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
РассчитатьРассмотреноПоКонтактам (БСП)
РассчитатьРассмотреноПоПредметам (БСП)
РассчитанныеДатыЗапретаИзменения (БСП)
УстановитьПризнакРассмотрено (БСП)
УстановитьРодителяУПапки (БСП)
ОпределитьПапкуДляПисьма (БСП)