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