Имя: Пароль:
1C
1С v8
Поведение бизнес-процесса
0 svchernova
 
12.09.13
18:11
Здравствуйте,

Проблема такая. Есть групповая точка маршрута бизнес-процесса, и соответственно всем сотрудникам (в моём случае первый руководитель и фин. директор) назначаются задачи. Эти люди взаимозаменяемы, и нужно сделать так, чтобы при выполнении задачи одним человеком выполнялась параллельная задача. Пытаюсь найти задачу и выполнить её в процедуре "ПриВыполнении" на точке маршрута. Не взлетает. как это можно сделать?

Процедура УтверждениеПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗадачаСогласованиеЗаявок.Ссылка,
                   |    ЗадачаСогласованиеЗаявок.Сотрудник
                   |ИЗ
                   |    Задача.ЗадачаСогласованиеЗаявок КАК ЗадачаСогласованиеЗаявок
                   |ГДЕ
                   |    ЗадачаСогласованиеЗаявок.БизнесПроцесс = &БизнесПроцесс
                   |    И ЗадачаСогласованиеЗаявок.ТочкаМаршрута = &ТочкаМаршрута ";
    Запрос.УстановитьПараметр("БизнесПроцесс",ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("ТочкаМаршрута",ТочкаМаршрутаБизнесПроцесса);
    ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
    Пока ВыборкаЗапроса.Следующий() Цикл
        Если ВыборкаЗапроса.Ссылка <> Задача Тогда
            ЗадачаОбъект = ВыборкаЗапроса.Ссылка.ПолучитьОбъект();
            Если Задача.Отклонить Тогда
                ЗадачаОбъект.Отклонить = Истина;
            КонецЕсли;    
            ЗадачаОбъект.ВыполнитьЗадачу();
        КонецЕсли;    
    КонецЦикла;
1 Asmody
 
12.09.13
18:16
там обязательно две задачи или можно адресацией обойтись?
2 Armando
 
12.09.13
18:16
Групповые точки не для этого предназначены.
Тут с адресацией мутить надо. Группы делать. Например, будет группа, куда входят рук. и финдир. Задача уходит на группу, а члены группы видят эту задачу. И любой может ее выполнить.
3 svchernova
 
12.09.13
18:17
там как раз и не нужно две задачи. а как сделать группу в адресации?
4 svchernova
 
12.09.13
18:18
там нужна только одна задача
5 Asmody
 
12.09.13
18:19
(3) долго объяснять. посмотри пример БП на ИТС, там хорошо показано.
6 svchernova
 
12.09.13
18:20
(5) смотрела видео Чистова, читала статьи, но групп там не увидела.
7 svchernova
 
12.09.13
18:21
блин у нас уже полдевятого скоро, а задачу до завтра надо сделать
8 Asmody
 
12.09.13
18:23
надо делать справочник для групп (или приспособить готовый), мутить регистр сведений для связи групп и пользователей, потом все это прописывать в соотв.свойствах БП.
9 svchernova
 
12.09.13
18:25
(8) мдя.. до завтра не получится.. Спасибо всем.
буду "мутить" завтра
10 ВикторП
 
12.09.13
18:31
Задачу адресуете Роли, а в регистре адресации вводите нужных вам пользователей для этой роли -это все решение
11 svchernova
 
12.09.13
18:35
(10) Я ИМЕННО ТАК и делаю.
12 svchernova
 
12.09.13
18:37
(10) на Роли "Руководитель" у меня два человека - первый руководитель и финдир. назначаются две задачи. мне нужно, чтобы при выполнении одной задачи выполнилась параллельная тоже.
13 Вуглускр1991
 
12.09.13
18:52
(12) Назначение двух задач ошибочно.
Задача адресуется для роли Руководитель и возникает в блокнотах у обоих. Далее надо лишь следить за тем, чтобы кто-то из них её взял, то есть у задачи появляется статус.
Если в блокнотах она не появляется - копать регистры адресации, связи, метаданные задачи. Появиться обязана.
14 Михаил Козлов
 
12.09.13
18:54
(12) Странно. У нас аналогично адресация роли (исполнителей несколько). При выполнении задачи БП сдвигается дальше по карте. Правда, в обработчике интерактивной активации в соответствующей т. маршрута открывается нужная форма самого БП (в реквизит которой передается задача), и при нажатии нужной кнопки задача выполняется, а форма закрывается.
Примерно так:
- в модуле БП:
Процедура ОткрытьФормуОформленияПакетаДокументов(видПакета, Задача)
ЕСЛИ видПакета="Остальные" ТОГДА
  ф=ЭтотОбъект.ПолучитьФорму("ФормаОформленияНакладной")
ИНАЧЕ
  ф=ЭтотОбъект.ПолучитьФорму("ФормаОформленияПакетаДокументов");
  ф.ВидПакетаДокументов=видПакета;
  ф.ТекущаяЗадача = Задача;
КОНЕЦЕСЛИ;    
ф.Открыть();
КонецПроцедуры

Процедура ОформлениеСамововывозаОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
ОткрытьФормуОформленияПакетаДокументов("Самовывоз", Задача)
КонецПроцедуры

В модуле соответствующе формы:
ПРОЦЕДУРА ЗавершитьЗадачу()
Если НЕ ЗначениеНеЗаполнено(ТекущаяЗадача) Тогда
  ЗадачаОб = ТекущаяЗадача.ПолучитьОбъект();
  ЗадачаОб.ВыполнитьЗадачу();
КонецЕсли;    
КОНЕЦПРОЦЕДУРЫ

ПРОЦЕДУРА КнопкаПечатиНалНажатие(Элемент)
ЕСЛИ ДокументыНалГотовы()ТОГДА
  Печать2РН();
  ЗавершитьЗадачу();
  ЭтаФорма.Закрыть();
КОНЕЦЕСЛИ
КОНЕЦПРОЦЕДУРЫ
15 svchernova
 
12.09.13
19:02
(12) и (13)я поработала, задача теперь появляется только одна.
Если не получится дальше, подниму ветку завтра, а сейчас пока закрою тему. всем спасибо большое!
16 ВикторП
 
13.09.13
10:30
Да, задача должна быть одна. То что раньше было две задачи- это что то неправильно - программно- у вас было сделано
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.