|
Как в условии бизнес-процесса обратиться к реквизиту задачи? | ☑ | ||
---|---|---|---|---|
0
Ivan_495
29.09.16
✎
14:19
|
Как в процедуре проверки условия в бизнесс-процессе обратиться к реквизиту задачи?
Процедура ПроверкаВыполненияПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) Если Задачи.ЗадачаВводТМЦ.ПолучитьСсылку().ПолучитьОбъект().Статус=Перечисления.Статус.Закрыто тогда Результат=Истина; иначе Результат=Ложь; КонецЕСли; КонецПроцедуры |
|||
1
Ivan_495
29.09.16
✎
14:20
|
Задачи.ЗадачаВводТМЦ.ПолучитьСсылку().ПолучитьОбъект().Статус не работает
|
|||
2
Ivan_495
29.09.16
✎
14:28
|
или вообще у задачи реквизиты не создавать, а создать их в бизнесс-процессе?
|
|||
3
Ivan_495
30.09.16
✎
11:34
|
up
|
|||
4
Лефмихалыч
30.09.16
✎
11:35
|
(0) записывай в бизнес процесс все, что нужно, для того, чтобы проверить условие
|
|||
5
Ivan_495
30.09.16
✎
11:46
|
||||
6
Ivan_495
30.09.16
✎
11:47
|
(0) Признак "Отправить на доработку" нужно хранить в отдельном регистре, который свяжет предмет согласования и бизнес процесс. Кнопка "Не согласовано" в задаче должна записывать запись в этот регистр, а проверка условия должна получать запись из этого регистра по своему бизнес процессу и его предмету.
В форме задачи совать что-то в реквизиты бизнес процесса - глупая затея. Особенно, если есть групповые задачи, а реквизит один (хотя в этом случае надо будет и регистр переделать, но это проще, чем БП ломать). Записывать признак в саму задачу тоже идиотизм, т.к. при проверке условия нужно будет нужную задачу искать (а она уже выполнена). |
|||
7
Ivan_495
30.09.16
✎
11:48
|
(4) хочу обратиться к реквизиту задачи в моментпроверки условия БП, чтобы отправить задачу на доработку
|
|||
8
Ivan_495
30.09.16
✎
11:52
|
(4) т.е. если есть реквизит "статус" у задачи, создать такой же у БП и при изменении в задаче "статус" писать в "статусБП"
|
|||
9
Ivan_495
30.09.16
✎
11:52
|
?
|
|||
10
bootini
30.09.16
✎
12:18
|
Запросом ищи последнюю выполненную задачу по этому БП и точке маршрута.
|
|||
11
Ivan_495
30.09.16
✎
12:20
|
(4) спасибо
а если бп групповой лучше в регистре связи хранить между бп и задачей, как Вы раньше советовали? |
|||
12
bootini
30.09.16
✎
12:24
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | Задача.Ссылка |ИЗ | Задача.ЗадачаИсполнителя КАК Задача |ГДЕ | Задача.БизнесПроцесс = &БизнесПроцесс | И Задача.ТочкаМаршрута = &ТочкаМаршрута | И Задача.Выполнена | И НЕ Задача.ПометкаУдаления | |УПОРЯДОЧИТЬ ПО | Задача.Дата УБЫВ"; Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка); Запрос.УстановитьПараметр("ТочкаМаршрута", ТочкаМаршрута); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Ссылка; КонецЕсли; |
|||
13
Ivan_495
30.09.16
✎
12:35
|
(12) благодарю
|
|||
14
Лефмихалыч
30.09.16
✎
12:49
|
(7) при выполнении задачи записывай все, что понадобится условию, в процесс. А в условии бери данные из процесса
|
|||
15
Лефмихалыч
30.09.16
✎
12:50
|
+(14) если в условиях заниматься поиском выполненных задач, то потом, когда карта маршрута вдруг изменится, условие может начать работать неправильно и поймать его за руку вовремя будет невозможно - это станет очевидно, когда пачка процессов ускачут не туда.
|
|||
16
Ivan_495
30.09.16
✎
13:04
|
в модуле формы задачи пишу
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ТекущийОбъект.статус=Перечисления.Статус.Закрыто тогда ТекущийОбъект.БизнесПроцесс.ПолучитьОбъект().статус=Перечисления.Статус.Закрыто; ТекущийОбъект.БизнесПроцесс.ПолучитьОбъект().Записать(); КонецЕСли; КонецПроцедуры все проходит без ошибок, но реквезит "статус" БП не меняется |
|||
17
Nuobu
30.09.16
✎
13:06
|
(16) Перечитай форму. Открой, закрой. Ну или нормально заверши бизнес-процесс.
|
|||
18
Ivan_495
30.09.16
✎
13:10
|
(14) а подскажите как Вы записываете данные из задачи в бизнес-процесс?
|
|||
19
Ivan_495
30.09.16
✎
13:22
|
В форме задачи совать что-то в реквизиты бизнес процесса - глупая затея
|
|||
20
bootini
30.09.16
✎
14:05
|
(16) По-нормальному сделай, ты получаешь объект изменяешь, потом получаешь опять не измененный и записываешь.
|
|||
21
Ivan_495
30.09.16
✎
14:16
|
(20) создал РС одно измерение БП и ресурс статус, пишу в него и читаю
|
|||
22
Лефмихалыч
30.09.16
✎
14:17
|
(16) не там пишешь. Пиши в модуле бизнес процесса в обработчике ПриВыполненииЗадачи
|
|||
23
Лефмихалыч
30.09.16
✎
14:18
|
вообще, общее правило хорошего кода - в форме может быть только тот код, который непосредственно связан с отображением. А абсолютно все, что приводит к изменению данных в БД, должно быть в модулях.
|
|||
24
Ivan_495
30.09.16
✎
14:34
|
(21) +
Процедура ПередЗаписью(Отказ) МенеджерЗаписи = РегистрыСведений.СтатусЗадачи.СоздатьМенеджерЗаписи(); // МенеджерЗаписи.БП=БизнесПроцесс; МенеджерЗаписи.Статус =Статус; МенеджерЗаписи.Записать(); КонецПроцедуры Процедура ПроверкаВыполненияПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) // Вставить содержимое обработчика. //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СтатусЗадачи.Статус |ИЗ | РегистрСведений.СтатусЗадачи КАК СтатусЗадачи |ГДЕ | СтатусЗадачи.БП = &БП"; Запрос.УстановитьПараметр("БП", ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий(); тек=ВыборкаДетальныеЗаписи.статус; Если тек=Перечисления.Статус.Закрыто тогда Результат=Истина; иначе Результат=Ложь; КонецЕСли; КонецПроцедуры |
|||
25
Лефмихалыч
30.09.16
✎
14:38
|
(24) ты, если спросить чего-то хотел, то спрашивай словами. Просто так твои простыни ни кому не интересны
|
|||
26
Ivan_495
30.09.16
✎
14:39
|
(25) сделал вроде все как ты писал на регистре
|
|||
27
Ivan_495
30.09.16
✎
14:41
|
вроде работает
|
|||
28
Ivan_495
30.09.16
✎
15:02
|
(25) а не подскажешь как сделать, чтобы БП был невидим для пользователей?
чтобы заказчик нажал кнопку и открывалась сразу задача, а не БП |
|||
29
Ivan_495
30.09.16
✎
15:05
|
заказчик=инициатор БП
|
|||
30
Михаил Козлов
30.09.16
✎
15:55
|
(0) Не знаю, будет ли Вам полезным (при реализации БП средней сложности):
- в задачу реквизиты не добавляли. Все необходимые реквизиты были в БП; - при необходимости выполнения задачи, требующего интерактивных действий, открывалась нужная форма БП. |
|||
31
Лефмихалыч
30.09.16
✎
16:10
|
(28) сделай общую форму "Мои задачи", в которую выбирай запросом данные из Задачи.ЗадачаИсполнителя.ЗадачиПоИсполнителю() - там будут только те задачи, котрые по адресации подходят пользователю. Без процессов.
|
|||
32
Ivan_495
30.09.16
✎
17:30
|
(31) это уже сделано
не понятно как сделать программный запуск БП? когда есть журнал БП то созадешь новый БП и безпроблем, а если этот журнал не показывать |
|||
33
Ivan_495
30.09.16
✎
17:53
|
(30) вроде не логично, между исполнителями и инициаторами ходят задачи, которые даже внешне выглядеть могут по-разному
|
|||
34
Лефмихалыч
30.09.16
✎
17:56
|
(33) как раз именно это-то и логично. В задаче ни какой бизнес-логики не должно быть. Задача - это просто транспорт, который при помощи механизма адресации и карты маршрута процесса доставляет работу до пользователя, а работать эту работу он должен в соответствующих объектах конфигурации, наделенных для этого бизнес-логикой.
|
|||
35
Ivan_495
30.09.16
✎
18:15
|
ok
|
|||
36
Ivan_495
30.09.16
✎
18:16
|
если задачу ушла 2-м пользователям, один из них её выполнил, как сделать эту задачу недоступной для изменения остальным?
|
|||
37
Ivan_495
03.10.16
✎
11:59
|
(30) попробовал сделать как у вас, создал форму в БП и пытаюсь её вызвать в задаче, но обработкаИнтерактивнойАктивации в управляемом приложении не работает
Процедура обработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка) // Вставить содержимое обработчика. Форма=ПолучитьФорму("ФормаБизнесПроцесса"); Форма.задача=Задача; Форма.Открыть(); СтандартнаяОбработка=Ложь; КонецПроцедуры |
|||
38
Лефмихалыч
03.10.16
✎
12:37
|
при открытии формы задачи
ЭтаФорма.ТОлькоПросмотр = Объект.Выполнена; |
|||
39
Ivan_495
03.10.16
✎
13:47
|
(38) а форму то бп где вызывать, при открытии формы задачи?
|
|||
40
Ivan_495
03.10.16
✎
14:21
|
&НаКлиенте
Процедура ПриОткрытии(Отказ) ОткрытьФорму("БизнесПроцесс.ВводТМЦ.Форма.ФормаБизнесПроцесса",,ЭтаФорма); Отказ=Истина; КонецПроцедуры вот так работает зачем ЭтаФорма.ТОлькоПросмотр = Объект.Выполнена; не понятно? |
|||
41
Лефмихалыч
03.10.16
✎
14:22
|
(39) (40) нахрена это делать вообще? Тебе нужна форма задачи
|
|||
42
Ivan_495
03.10.16
✎
14:25
|
(41) мне нужно где-то хранить реквизиты, почитал книгу проф разработку, пишут что реквизиты хранятся в БП
|
|||
43
Ivan_495
03.10.16
✎
14:26
|
и в зависимости от процесса открывается форма бп вместо формы задчи
Процедура ЗапросНаСозданиеТМЦОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка) // Вставить содержимое обработчика. Форма=ПолучитьФорму("ФормаБизнесПроцесса"); Форма.задача=Задача; Форма.Открыть(); СтандартнаяОбработка=Ложь; КонецПроцедуры |
|||
44
Лефмихалыч
03.10.16
✎
14:27
|
(42) какие в жопу реквизиты? Тебе надо, чтобы выполненную задачу не могли менять, так? У задачи есть предопределенный реквизит "Выполнена". В форме задачи при открытии устанавливай ТолькоПросмотр, если она Выполнена. Всё, больше не надо ни чего.
Ну, или ты задаешь один вопрос, а ответ тебе нужен на другой |
|||
45
Ivan_495
03.10.16
✎
14:29
|
(44) да речь не о том
я всю эту ветку создал , чтобы понять где хранить реквизиты , которые заполняет пользователь? |
|||
46
Ivan_495
03.10.16
✎
14:30
|
у меня 9 реквизитов для обработки пользователем
|
|||
47
Лефмихалыч
03.10.16
✎
14:33
|
(45) (46) на этот вопрос однозначного ответа не бывает.
И это совсем не тот вопрос, который ты изначально задавал. Изначально ты спрашивал, где хранить то, на основании чего проверять условие в карте маршрута. |
|||
48
Ivan_495
03.10.16
✎
14:36
|
(47) в том-то все и дело если хранить условие в ревизите БП, то и проверять его нет никаких проблем
|
|||
49
Михаил Козлов
03.10.16
✎
16:09
|
Насчет УФ не скажу, а в ОФ делали как в (43) (правда без СтандартнаяОбработка=Ложь;).
|
|||
50
Ivan_495
03.10.16
✎
18:39
|
(49) это пример из книжки проф
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |