В Документообороте 2.1.12 и 2.1.13 на начальной странице «Текущие дела» в типовом механизме отсутствует виджет «Задачи от меня», который бы показывал информацию аналогичную виджету «Задачи мне».
Создадим свой новый виджет небольшой доработкой конфигурации. Расширением, к сожалению, обойтись не получится, так как в них пока что нельзя добавлять предопределенные элементы.
1. Добавляем в справочник Виджеты предопределенный элемент «ЗадачиОтМеня».
2. В модуле менеджера этого же справочника в функции ДоступныеВиджеты() находим объявление переменной ДоступныеВиджеты и добавляем в этот список значений наш новый виджет:
ДоступныеВиджеты.Добавить(Справочники.Виджеты.ЗадачиОтМеня);
Функция ДоступныеВиджеты() Экспорт
ПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь();
ДоступныеВиджеты = Новый СписокЗначений;
Если ПолучитьФункциональнуюОпцию("ИспользоватьБизнесПроцессыИЗадачи")
И (РольДоступна("РаботаСЗадачамиИБизнесПроцессами")
Или ПолноправныйПользователь) Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.МоиЗадачи);
Если Константы.ДобавлятьРуководителямДоступПодчиненных.Получить()
И (РольДоступна("РаботаСЗадачамиСотрудниковПодразделения")
Или ПолноправныйПользователь) Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.ЗадачиОтдела);
КонецЕсли;
КонецЕсли;
ДоступныеВиджеты.Добавить(Справочники.Виджеты.МоиДокументы);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСВД")
И (РольДоступна("РаботаСЭДО") Или ПолноправныйПользователь) Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.СВД);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьХранилищеФайлов") Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.МоиФайлы);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьВстроеннуюПочту")
И (РольДоступна("РаботаСоВстроеннойЭлектроннойПочтой") Или ПолноправныйПользователь)
И РегистрыСведений.ИспользованиеПочты.ПолучитьИспользованиеВстроеннойПочты() Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.Почта);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеМероприятиями")
И (РольДоступна("РаботаСМероприятиями") Или ПолноправныйПользователь) Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.Мероприятия);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьРабочийКалендарь") Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.Календарь);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьОбсуждения") Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.Форум);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКонтрольОбъектов") Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.Контроль);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьЕжедневныеОтчеты") Тогда
ДоступныеВиджеты.Добавить(Справочники.Виджеты.ЕжедневныеОтчеты);
КонецЕсли;
ДоступныеВиджеты.Добавить(Справочники.Виджеты.МоиДела);
//++Наш новый виджет
ДоступныеВиджеты.Добавить(Справочники.Виджеты.ЗадачиОтМеня);
//--Наш новый виджет
// Сортировка виджетов по наименованию
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Виджеты.Ссылка
|ИЗ
| Справочник.Виджеты КАК Виджеты
|ГДЕ
| Виджеты.Ссылка В(&Виджеты)
|
|УПОРЯДОЧИТЬ ПО
| Виджеты.Наименование";
Запрос.УстановитьПараметр("Виджеты", ДоступныеВиджеты);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
3. В общий модуль ТекущиеДелаДокументооборотСервер добавляем процедуру заполнения нового виджета:
Процедура ЗаполнитьВиджетЗадачиОтМеня(Параметры)
Форма = Параметры.Форма;
ИндексВиджета = Параметры.ИндексВиджета;
ТекущаяДата = Параметры.ТекущаяДатаСеанса;
ТекущийПользователь = Параметры.ТекущийПользователь;
ЦветТекста_Обычный = ЦветТекста_Обычный();
ЦветаВиджета = ЦветаВиджета(ИндексВиджета);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсполнителиРолейИДелегаты.РольПользователь КАК Исполнитель
|ПОМЕСТИТЬ ИсполнителиЗадач
|ИЗ
| РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
|ГДЕ
| ИсполнителиРолейИДелегаты.ИсполнительДелегат = &ТекущийПользователь
| И ИсполнителиРолейИДелегаты.ИмяОбластиДелегирования В ("""", ""ПроцессыИЗадачи"")
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(*) КАК ЗадачиОтМеня,
| ЕСТЬNULL(СУММА(ВЫБОР
| КОГДА ЗадачаИсполнителя.ПринятаКИсполнению = ЛОЖЬ
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ), 0) КАК ЗадачиОтМеня_НеПринятые,
| ЕСТЬNULL(СУММА(ВЫБОР
| КОГДА ЗадачаИсполнителя.Выполнена = ЛОЖЬ
| И ЗадачаИсполнителя.СрокИсполнения <> ДАТАВРЕМЯ(1, 1, 1)
| И ЗадачаИсполнителя.СрокИсполнения < &ТекущаяДата
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ), 0) КАК ЗадачиОтМеня_Просроченные
|ИЗ
| Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИсполнителиЗадач КАК ИсполнителиЗадач
| ПО ЗадачаИсполнителя.Автор = ИсполнителиЗадач.Исполнитель
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗадачиДляВыполнения КАК ЗадачиДляВыполнения
| ПО ЗадачаИсполнителя.Ссылка = ЗадачиДляВыполнения.Задача
|ГДЕ
| ЗадачаИсполнителя.СостояниеБизнесПроцесса = ЗНАЧЕНИЕ(Перечисление.СостоянияБизнесПроцессов.Активен)
| И ЕСТЬNULL(ЗадачиДляВыполнения.СостояниеВыполнения, НЕОПРЕДЕЛЕНО) <> ЗНАЧЕНИЕ(Перечисление.СостоянияЗадачДляВыполнения.ГотоваКВыполнению)
| И ЗадачаИсполнителя.ПометкаУдаления = ЛОЖЬ
| И ЗадачаИсполнителя.ИсключенаИзПроцесса = ЛОЖЬ
| И ЗадачаИсполнителя.Выполнена = ЛОЖЬ";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата);
Запрос.УстановитьПараметр("ТекущийПользователь", ТекущийПользователь);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ЗначенияПоказателей = Новый Массив;
ЗадачиОтМеня = СтруктураПоказателя();
ЗадачиОтМеня.Заголовок = НСтр("ru = 'Задачи от меня'");
ЗадачиОтМеня.ЦветЗаголовка = ЦветТекста_Обычный;
ЗадачиОтМеня.Значение = Выборка.ЗадачиОтМеня;
ЗадачиОтМеня.Ссылка = "ЗадачиОтМеня";
ЗадачиОтМеня.ИмяПоказателя = "ЗадачиОтМеня";
ЗначенияПоказателей.Добавить(ЗадачиОтМеня);
ЗадачиОтМеня_НеПринятые = СтруктураПоказателя();
ЗадачиОтМеня_НеПринятые.Заголовок = НСтр("ru = 'Не принято'");
ЗадачиОтМеня_НеПринятые.ЦветЗаголовка = ЦветаВиджета.ЦветПодписи;
ЗадачиОтМеня_НеПринятые.Значение = Выборка.ЗадачиОтМеня_НеПринятые;
ЗадачиОтМеня_НеПринятые.Ссылка = "ЗадачиОтМеня_НеПринятые";
ЗадачиОтМеня_НеПринятые.ИмяПоказателя = "ЗадачиОтМеня_НеПринятые";
ЗначенияПоказателей.Добавить(ЗадачиОтМеня_НеПринятые);
ЗадачиОтМеня_Просроченные = СтруктураПоказателя();
ЗадачиОтМеня_Просроченные.Заголовок = НСтр("ru = 'Просрочено'");
ЗадачиОтМеня_Просроченные.ЦветЗаголовка = ЦветаВиджета.ЦветПодписи;
ЗадачиОтМеня_Просроченные.Значение = Выборка.ЗадачиОтМеня_Просроченные;
ЗадачиОтМеня_Просроченные.Ссылка = "ЗадачиОтМеня_Просроченные";
ЗадачиОтМеня_Просроченные.ИмяПоказателя = "ЗадачиОтМеня_Просроченные";
ЗначенияПоказателей.Добавить(ЗадачиОтМеня_Просроченные);
УстановитьЦветЗначениямПоказателей(Справочники.Виджеты.ЗадачиОтМеня, ЗначенияПоказателей);
ЗаголовокВиджета = ЗаголовокВиджета(
ЗадачиОтМеня.Заголовок,
ЗадачиОтМеня.Значение,
ЗадачиОтМеня.Ссылка,
ЗадачиОтМеня.ЦветЗаголовка,
ЗадачиОтМеня.ЦветЗначения);
Показатели = Новый Массив;
Показатели.Добавить(ЗадачиОтМеня_НеПринятые);
Показатели.Добавить(ЗадачиОтМеня_Просроченные);
СтрокиHTMLТаблицыПоказателей = ТелоВиджетаОбластями(Показатели);
Форма["HTML" + ИндексВиджета] = HTMLПредставлениеВиджета(
ЗаголовокВиджета,,
СтрокиHTMLТаблицыПоказателей,
ЦветаВиджета.ЦветФона,
ЦветаВиджета.ЦветРамкиТаблицы);
Форма["СсылкиОбластей" + ИндексВиджета] = СтруктураСсылокОбластейВиджета(
ЗадачиОтМеня.Ссылка,
ЗадачиОтМеня_НеПринятые.Ссылка,
ЗадачиОтМеня_Просроченные.Ссылка);
КонецПроцедуры
Фактически это копия процедуры ТекущиеДелаДокументооборотСервер.ЗаполнитьВиджетМоиЗадачи с измененным запросом. В нашем случае необходимо поменять связь таблицы ЗадачаИсполнителя и ИсполнителиЗадач с «ЗадачаИсполнителя.ТекущийИсполнитель = ИсполнителиЗадач.Исполнитель» на «ЗадачаИсполнителя.Автор = ИсполнителиЗадач.Исполнитель».
4. В этом же модуле в процедуре ЗаполнитьВиджетыТекущихДел добавим заполнение нашего виджета:
Процедура ЗаполнитьВиджетыТекущихДел(Форма, Виджеты = Неопределено) Экспорт
Параметры = Новый Структура;
Параметры.Вставить("Форма", Форма);
Параметры.Вставить("ИндексВиджета", "");
Параметры.Вставить("ТекущаяДатаСеанса", ТекущаяДатаСеанса());
Параметры.Вставить("ТекущийПользователь", ПользователиКлиентСервер.ТекущийПользователь());
HTMLПредставлениеПустогоВиджета = HTMLПредставлениеПустогоВиджета();
ДоступныеВиджеты = Справочники.Виджеты.ДоступныеВиджеты();
КоличествоСтрок = 3;
КоличествоСтолбцов = 4;
Для ИндексСтроки = 1 По КоличествоСтрок Цикл
Для ИндексСтолбца = 1 По КоличествоСтолбцов Цикл
ИндексВиджета = "" + ИндексСтроки + "_" + ИндексСтолбца;
ТекущийВиджет = Форма["Виджет" + ИндексВиджета];
Если ЗначениеЗаполнено(Виджеты)
И Виджеты.Найти(ТекущийВиджет) = Неопределено Тогда
Продолжить;
КонецЕсли;
Форма["HTML" + ИндексВиджета] = "";
Форма.Элементы["HTML" + ИндексВиджета].Видимость = Истина;
Форма.Элементы["ГруппаДиаграмма" + ИндексВиджета].Видимость = Ложь;
Параметры.ИндексВиджета = ИндексВиджета;
Если Не ЗначениеЗаполнено(ТекущийВиджет)
Или ДоступныеВиджеты.Найти(ТекущийВиджет) = Неопределено Тогда
Форма["HTML" + ИндексВиджета] = HTMLПредставлениеПустогоВиджета;
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.МоиЗадачи Тогда
ЗаполнитьВиджетМоиЗадачи(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.ЗадачиОтдела Тогда
ЗаполнитьВиджетЗадачиОтдела(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.МоиДокументы Тогда
ЗаполнитьВиджетМоиДокументы(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.СВД Тогда
ЗаполнитьВиджетСВД(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.МоиФайлы Тогда
ЗаполнитьВиджетМоиФайлы(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.Почта Тогда
ЗаполнитьВиджетПочта(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.Мероприятия Тогда
ЗаполнитьВиджетМероприятия(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.Календарь Тогда
ЗаполнитьВиджетКалендарь(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.Форум Тогда
ЗаполнитьВиджетФорум(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.Контроль Тогда
ЗаполнитьВиджетКонтроль(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.ЕжедневныеОтчеты Тогда
ЗаполнитьВиджетЕжедневныеОтчеты(Параметры);
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.МоиДела Тогда
ЗаполнитьВиджетМоиДела(Параметры);
//++Наш новый виджет
ИначеЕсли ТекущийВиджет = Справочники.Виджеты.ЗадачиОтМеня Тогда
ЗаполнитьВиджетЗадачиОтМеня(Параметры);
//--Наш новый виджет
Иначе
Форма["HTML" + ИндексВиджета] = HTMLПредставлениеПустогоВиджета;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
5. В процедуре ТекущиеДелаДокументооборотКлиент.ОбработатьНажатиеНаСсылку добавим описание нажатия на наш виджет:
Процедура ОбработатьНажатиеНаСсылку(Ссылка, Форма, ИндексВиджета)
Если Лев(Ссылка, 6) = "v8doc:" Тогда
НавигационнаяСсылкаПоля = Сред(Ссылка, 7);
ПерейтиПоНавигационнойСсылке(НавигационнаяСсылкаПоля);
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "НастройкаВиджета") Тогда
НастроитьВиджетФормы(Форма, ИндексВиджета);
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиЗадачи") Тогда
ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ЗадачиМне");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиЗадачи_НеПринятые") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "СписокМоихНепринятыхЗадач");
ОткрытьФорму("Отчет.ОтчетПоЗадачам.Форма", ПараметрыФормы, Форма, "ЗадачиНеПринятые");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиЗадачи_Просроченные") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "СписокМоихИстекающихЗадач");
ОткрытьФорму("Отчет.ОтчетПоЗадачам.Форма", ПараметрыФормы, Форма, "СписокМоихИстекающихЗадач");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "ЗадачиОтдела") Тогда
ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ФормаЗадачиОтдела");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "ЗадачиОтдела_НеПринятые") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "СписокНепринятыхЗадачПодчиненными");
ОткрытьФорму("Отчет.ОтчетПоЗадачам.Форма", ПараметрыФормы, Форма, "СписокНепринятыхЗадачПодчиненными");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "ЗадачиОтдела_Просроченные") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "СписокИстекающихЗадачПодчиненных");
ОткрытьФорму("Отчет.ОтчетПоЗадачам.Форма", ПараметрыФормы, Форма, "СписокИстекающихЗадачПодчиненных");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиДокументы") Тогда
ОткрытьФорму("РегистрСведений.МоиДокументы.Форма.ФормаМоиДокументы");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиДокументы_Просроченные") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючНазначенияИспользования", "ОтображениеПросроченныхДокументов");
ОткрытьФорму("РегистрСведений.МоиДокументы.Форма.ФормаМоиДокументы", ПараметрыФормы,, "ОтображатьТолькоПросроченные");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиДокументы_ВходящиеБезОтвета") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "МоиДокументыОжидающиеОтвета");
ОткрытьФорму("Отчет.ИсходящиеДокументы.Форма", ПараметрыФормы, Форма, "МоиДокументы_ВходящиеБезОтвета");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиДокументы_ВнутренниеСИстекающимСрокомДействия_Исполнения") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючНазначенияИспользования", "ОтображениеИстекающихДокументов");
ОткрытьФорму("РегистрСведений.МоиДокументы.Форма.ФормаМоиДокументы", ПараметрыФормы,, "ОтображатьТолькоИстекающие");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "СВД") Тогда
ОткрытьФорму("Справочник.СерверныеСообщенияСВД.Форма.ФормаСписка");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "СВД_ГотовыеКОтправке") Тогда
ОткрытьФорму("Обработка.ОтправкаДокументовПоСВД.Форма");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "СВД_ЗагруженныеНаПроверку") Тогда
ОткрытьФорму("ОбщаяФорма.ПроверкаЗагруженныхДанных");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "СВД_СОшибкой") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("КлючВарианта", "ОшибкиОтправкиДокументовПоСВД");
ОткрытьФорму("Отчет.ИсходящиеДокументы.Форма", ПараметрыФормы, Форма, "СВД_СОшибкой");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "МоиФайлы_РедактируемыеФайлы") Тогда
ОткрытьФорму("Справочник.Файлы.Форма.РедактируемыеФайлы");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Мероприятия") Тогда
ОткрытьФорму("Справочник.Мероприятия.Форма.МоиМероприятия");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Календарь") Тогда
ОткрытьФорму("Справочник.ЗаписиРабочегоКалендаря.Форма.Календарь");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Форум") Тогда
ОткрытьФорму("Справочник.ТемыОбсуждений.ФормаСписка");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Форум_НовыеОтветыНаСообщенияПользователя") Тогда
ОткрытьФорму("Справочник.СообщенияОбсуждений.Форма.ФормаНовыеСообщенияДляРабочегоСтола");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Контроль") Тогда
ОткрытьФорму("Справочник.Контроль.Форма.НаКонтроле");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Контроль_Просрочено") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ОтображатьТолькоПросроченные", Истина);
ОткрытьФорму("Справочник.Контроль.Форма.НаКонтроле", ПараметрыФормы,, "Контроль_Просрочено");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "Почта") Тогда
ОткрытьФорму("ЖурналДокументов.ЭлектроннаяПочта.ФормаСписка");
//++Наш новый виджет
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "ЗадачиОтМеня") Тогда
ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ЗадачиОтМеня",,, "ЗадачиОтМеня");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "ЗадачиОтМеня_НеПринятые") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗадачиОтМеня_НеПринятые", Истина);
ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ЗадачиОтМеня", ПараметрыФормы,, "ЗадачиОтМеня_НеПринятые");
ИначеЕсли СтрЗаканчиваетсяНа(Ссылка, "ЗадачиОтМеня_Просроченные") Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗадачиОтМеня_Просроченные", Истина);
ОткрытьФорму("Задача.ЗадачаИсполнителя.Форма.ЗадачиОтМеня", ПараметрыФормы,, "ЗадачиОтМеня_Просроченные");
//--Наш новый виджет
КонецЕсли;
КонецПроцедуры
Нам удобней открывать форму списка с задачами, нежели отчет. Но можно аналогично виджету «Задачи мне» открывать отчет, взяв его же за основу, немного изменив запрос.
6. Так как на открытой форме нам необходимо будет видеть либо все задачи, либо непринятые, либо просроченные - необходимо описать это в форме задач от меня.
Модуль формы ЗадачиОтМеня объекта ЗадачаИсполнителя, процедура ПриСозданииНаСервере – добавляем в самый конец вызов процедуры ПрименитьОтборПоТипуЗадач(), которая будет накладывать отбор на динамический список в зависимости от переданных при открытии формы параметров.
И описываем ее:
Процедура ПрименитьОтборПоТипуЗадач()
Если Параметры.Свойство("ЗадачиОтМеня_НеПринятые") Тогда
ЭлементОтбора = ЗадачиОтМеня.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПринятаКИсполнению");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Ложь;
ИначеЕсли Параметры.Свойство("ЗадачиОтМеня_Просроченные") Тогда
ЭлементОтбора = ЗадачиОтМеня.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СрокИсполнения");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = ТекущаяДатаСеанса();
КонецЕсли;
КонецПроцедуры