Имя: Пароль:
1C
1С v8
Как поставить задачу нескольким исполнителям
0 Никофлекс
 
02.10.12
17:46
Доброе время, суток.
Подскажите, как можно установить задачу нескольким пользователям, применив минимум переделок. Использую стандартную задачу - ЗАДАЧА ИСПОЛНИТЕЛЯ в УПП. Там существует - 3 адресата - РОЛИ, ОРГАНИЗАЦИЯ и ИСПОЛНИТЕЛЬ.
Организация - не подходит, т.к. одна.
Исполнитель - не подходит, т.к. это на одного пользователя.
РОЛИ - вроде подходит, НО там нужное кучу сделать дописей в различных местах кода, возможно, НО слишком не удобно.

Может есть другие варианты?
1 Жан Пердежон
 
02.10.12
17:51
*овнокодить не надо было
2 Никофлекс
 
02.10.12
17:52
(1) и в чем полезность Вашего ответа?
3 and2
 
02.10.12
18:03
что значит нескольким.
одному из нескольких, или каждому?
4 Никофлекс
 
02.10.12
21:48
Есть  одна задача, которую видят несколько пользователей (каждый из них), но при выполнении задачи, она исчезнет у всех.
5 MadHead
 
02.10.12
21:53
Кроме ролей нечего не придумаешь. Непонятно почему кучу доработок надо?
6 Никофлекс
 
03.10.12
09:52
(5) нужно по коду выловить везде, где встречаются РОЛИ и подправить.
7 sanja26
 
11.10.12
01:49
столкнулся с такой же целью.
Сделал тип исполнителя составной: пользоватеи группы пользователей. Сначала хотел создавать задачи в ПроверитьНапоминанияПользователя, но там че-то писанины много получается в общем модуле

в Итоге доработал сам объект задачу при записи

Процедура ПередЗаписью(Отказ)
   
   Если ОбменДанными.Загрузка  Тогда
       Возврат;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(СрокОповещения)
       Или  Выполнена Тогда
       Оповещение = ЛОЖЬ;
   КонецЕсли;  
   
   Если ТипЗнч(Исполнитель) = Тип("СправочникСсылка.ГруппыПользователей") тогда
       Выполнена = Истина;  // чтобы не маячила
   КонецЕсли;
   
КонецПроцедуры // ПередЗаписью()


Процедура ПриЗаписи(Отказ)
   
   Если ТипЗнч(Исполнитель) = Тип("СправочникСсылка.ГруппыПользователей") тогда
       //ЗапросПореквизитам = Новый Запрос;
       //ЗапросПореквизитам.Текст =
       //"ВЫБРАТЬ
       //|    *,

       //|ИЗ
       //|    Задача.ЗадачиПользователя КАК ЗадачиПользователя
       //|ГДЕ
       //|    ЗадачиПользователя.Ссылка = &ТекЗадача";          

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