Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как в условии бизнес-процесса обратиться к реквизиту задачи?

Как в условии бизнес-процесса обратиться к реквизиту задачи?
Я
   Ivan_495
 
29.09.16 - 14:19
Как в процедуре проверки условия в бизнесс-процессе обратиться к реквизиту задачи?
Процедура ПроверкаВыполненияПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
    
    Если Задачи.ЗадачаВводТМЦ.ПолучитьСсылку().ПолучитьОбъект().Статус=Перечисления.Статус.Закрыто тогда
    Результат=Истина;
    иначе
    Результат=Ложь;
КонецЕСли;

КонецПроцедуры
 
 
   Ivan_495
 
1 - 29.09.16 - 14:20
Задачи.ЗадачаВводТМЦ.ПолучитьСсылку().ПолучитьОбъект().Статус не работает
   Ivan_495
 
2 - 29.09.16 - 14:28
или вообще у задачи реквизиты не создавать, а создать их в бизнесс-процессе?
   Ivan_495
 
3 - 30.09.16 - 11:34
up
   Лефмихалыч
 
4 - 30.09.16 - 11:35
(0) записывай в бизнес процесс все, что нужно, для того, чтобы проверить условие
   Ivan_495
 
5 - 30.09.16 - 11:46
   Ivan_495
 
6 - 30.09.16 - 11:47
(0) Признак "Отправить на доработку" нужно хранить в отдельном регистре, который свяжет предмет согласования и бизнес процесс. Кнопка "Не согласовано" в задаче должна записывать запись в этот регистр, а проверка условия должна получать запись из этого регистра по своему бизнес процессу и его предмету.

В форме задачи совать что-то в реквизиты бизнес процесса - глупая затея. Особенно, если есть групповые задачи, а реквизит один (хотя в этом случае надо будет и регистр переделать, но это проще, чем БП ломать).
Записывать признак в саму задачу тоже идиотизм, т.к. при проверке условия нужно будет нужную задачу искать (а она уже выполнена).
   Ivan_495
 
7 - 30.09.16 - 11:48
(4) хочу обратиться к реквизиту задачи в моментпроверки условия БП, чтобы отправить задачу на доработку
   Ivan_495
 
8 - 30.09.16 - 11:52
(4) т.е. если есть реквизит "статус" у задачи, создать такой же у БП и при изменении в задаче "статус" писать в "статусБП"
   Ivan_495
 
9 - 30.09.16 - 11:52
?
   bootini
 
10 - 30.09.16 - 12:18
Запросом ищи последнюю выполненную задачу по этому БП и точке маршрута.
 
 Рекламное место пустует
   Ivan_495
 
11 - 30.09.16 - 12:20
(4) спасибо
а если бп групповой лучше в регистре связи хранить между бп и задачей, как Вы раньше советовали?
   bootini
 
12 - 30.09.16 - 12:24
Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Задача.Ссылка
    |ИЗ
    |    Задача.ЗадачаИсполнителя КАК Задача
    |ГДЕ
    |    Задача.БизнесПроцесс = &БизнесПроцесс
    |    И Задача.ТочкаМаршрута = &ТочкаМаршрута
    |    И Задача.Выполнена
    |    И НЕ Задача.ПометкаУдаления
    |
    |УПОРЯДОЧИТЬ ПО
    |    Задача.Дата УБЫВ";
    Запрос.УстановитьПараметр("БизнесПроцесс", Ссылка);
    Запрос.УстановитьПараметр("ТочкаМаршрута", ТочкаМаршрута);
    
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Если Выборка.Следующий() Тогда
        Возврат Выборка.Ссылка;
    КонецЕсли;
   Ivan_495
 
13 - 30.09.16 - 12:35
(12) благодарю
   Лефмихалыч
 
14 - 30.09.16 - 12:49
(7) при выполнении задачи записывай все, что понадобится условию, в процесс. А в условии бери данные из процесса
   Лефмихалыч
 
15 - 30.09.16 - 12:50
+(14) если в условиях заниматься поиском выполненных задач, то потом, когда карта маршрута вдруг изменится, условие может начать работать неправильно и поймать его за руку вовремя будет невозможно - это станет очевидно, когда пачка процессов ускачут не туда.
   Ivan_495
 
16 - 30.09.16 - 13:04
в модуле формы задачи пишу
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
Если ТекущийОбъект.статус=Перечисления.Статус.Закрыто тогда
ТекущийОбъект.БизнесПроцесс.ПолучитьОбъект().статус=Перечисления.Статус.Закрыто;
ТекущийОбъект.БизнесПроцесс.ПолучитьОбъект().Записать();
КонецЕСли;

КонецПроцедуры

все проходит без ошибок, но реквезит "статус" БП не меняется
   Nuobu
 
17 - 30.09.16 - 13:06
(16) Перечитай форму. Открой, закрой. Ну или нормально заверши бизнес-процесс.
   Ivan_495
 
18 - 30.09.16 - 13:10
(14) а подскажите как Вы записываете данные из задачи в бизнес-процесс?
   Ivan_495
 
19 - 30.09.16 - 13:22
В форме задачи совать что-то в реквизиты бизнес процесса - глупая затея
   bootini
 
20 - 30.09.16 - 14:05
(16) По-нормальному сделай, ты получаешь объект изменяешь, потом получаешь опять не измененный и записываешь.
   Ivan_495
 
21 - 30.09.16 - 14:16
(20) создал РС одно измерение БП и ресурс статус, пишу в него и читаю
   Лефмихалыч
 
22 - 30.09.16 - 14:17
(16) не там пишешь. Пиши в модуле бизнес процесса в обработчике ПриВыполненииЗадачи
   Лефмихалыч
 
23 - 30.09.16 - 14:18
вообще, общее правило хорошего кода - в форме может быть только тот код, который непосредственно связан с отображением. А абсолютно все, что приводит к изменению данных в БД, должно быть в модулях.
   Ivan_495
 
24 - 30.09.16 - 14:34
(21) +
Процедура ПередЗаписью(Отказ)
МенеджерЗаписи = РегистрыСведений.СтатусЗадачи.СоздатьМенеджерЗаписи();
//    

МенеджерЗаписи.БП=БизнесПроцесс;
МенеджерЗаписи.Статус =Статус;
МенеджерЗаписи.Записать();    
    
КонецПроцедуры

Процедура ПроверкаВыполненияПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
    // Вставить содержимое обработчика.

    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

КонецПроцедуры
   Лефмихалыч
 
25 - 30.09.16 - 14:38
(24) ты, если спросить чего-то хотел, то спрашивай словами. Просто так твои простыни ни кому не интересны
   Ivan_495
 
26 - 30.09.16 - 14:39
(25) сделал вроде все как ты писал на регистре
   Ivan_495
 
27 - 30.09.16 - 14:41
вроде работает
   Ivan_495
 
28 - 30.09.16 - 15:02
(25) а не подскажешь как сделать, чтобы БП был невидим для пользователей?
чтобы заказчик нажал кнопку и открывалась сразу задача, а не БП
   Ivan_495
 
29 - 30.09.16 - 15:05
заказчик=инициатор БП
   Михаил Козлов
 
30 - 30.09.16 - 15:55
(0) Не знаю, будет ли Вам полезным (при реализации БП средней сложности):
- в задачу реквизиты не добавляли. Все необходимые реквизиты были в БП;
- при необходимости выполнения задачи, требующего интерактивных действий, открывалась нужная форма БП.
   Лефмихалыч
 
31 - 30.09.16 - 16:10
(28) сделай общую форму "Мои задачи", в которую выбирай запросом данные из Задачи.ЗадачаИсполнителя.ЗадачиПоИсполнителю() - там будут только те задачи, котрые по адресации подходят пользователю. Без процессов.
   Ivan_495
 
32 - 30.09.16 - 17:30
(31) это уже сделано
не понятно как сделать программный запуск БП?
когда есть журнал БП то созадешь новый БП и безпроблем,
а если этот журнал не показывать
   Ivan_495
 
33 - 30.09.16 - 17:53
(30) вроде не логично, между исполнителями и инициаторами ходят задачи, которые даже внешне выглядеть могут по-разному
 
 
   Лефмихалыч
 
34 - 30.09.16 - 17:56
(33) как раз именно это-то и логично. В задаче ни какой бизнес-логики не должно быть. Задача - это просто транспорт, который при помощи механизма адресации и карты маршрута процесса доставляет работу до пользователя, а работать эту работу он должен в соответствующих объектах конфигурации, наделенных для этого бизнес-логикой.
   Ivan_495
 
35 - 30.09.16 - 18:15
ok
   Ivan_495
 
36 - 30.09.16 - 18:16
если задачу ушла 2-м пользователям, один из них её выполнил, как сделать эту задачу недоступной для изменения остальным?
   Ivan_495
 
37 - 03.10.16 - 11:59
(30) попробовал сделать как у вас, создал форму в БП и пытаюсь её вызвать в задаче, но обработкаИнтерактивнойАктивации в управляемом приложении не работает

Процедура обработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
    // Вставить содержимое обработчика.

    Форма=ПолучитьФорму("ФормаБизнесПроцесса");
    Форма.задача=Задача;
    Форма.Открыть();
    СтандартнаяОбработка=Ложь;
КонецПроцедуры
   Лефмихалыч
 
38 - 03.10.16 - 12:37
при открытии формы задачи


ЭтаФорма.ТОлькоПросмотр = Объект.Выполнена;
   Ivan_495
 
39 - 03.10.16 - 13:47
(38) а форму то бп где вызывать, при открытии формы задачи?
   Ivan_495
 
40 - 03.10.16 - 14:21
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
ОткрытьФорму("БизнесПроцесс.ВводТМЦ.Форма.ФормаБизнесПроцесса",,ЭтаФорма);
Отказ=Истина;    
КонецПроцедуры
 вот так работает
зачем
ЭтаФорма.ТОлькоПросмотр = Объект.Выполнена; не понятно?
   Лефмихалыч
 
41 - 03.10.16 - 14:22
(39) (40) нахрена это делать вообще? Тебе нужна форма задачи
   Ivan_495
 
42 - 03.10.16 - 14:25
(41) мне нужно где-то хранить реквизиты, почитал книгу проф разработку, пишут что реквизиты хранятся в БП
   Ivan_495
 
43 - 03.10.16 - 14:26
и в зависимости от процесса открывается форма бп вместо формы задчи
Процедура ЗапросНаСозданиеТМЦОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
    // Вставить содержимое обработчика.

    Форма=ПолучитьФорму("ФормаБизнесПроцесса");
    Форма.задача=Задача;
    Форма.Открыть();
    СтандартнаяОбработка=Ложь;
КонецПроцедуры
   Лефмихалыч
 
44 - 03.10.16 - 14:27
(42) какие в жопу реквизиты? Тебе надо, чтобы выполненную задачу не могли менять, так? У задачи есть предопределенный реквизит "Выполнена". В форме задачи при открытии устанавливай ТолькоПросмотр, если она Выполнена. Всё, больше не надо ни чего.
Ну, или ты задаешь один вопрос, а ответ тебе нужен на другой
   Ivan_495
 
45 - 03.10.16 - 14:29
(44) да речь не о том
я всю эту ветку создал , чтобы понять где хранить реквизиты , которые заполняет пользователь?
   Ivan_495
 
46 - 03.10.16 - 14:30
у меня 9 реквизитов для обработки пользователем
   Лефмихалыч
 
47 - 03.10.16 - 14:33
(45) (46) на этот вопрос однозначного ответа не бывает.
И это совсем не тот вопрос, который ты изначально задавал. Изначально ты спрашивал, где хранить то, на основании чего проверять условие в карте маршрута.
   Ivan_495
 
48 - 03.10.16 - 14:36
(47) в том-то все и дело если хранить условие в ревизите БП, то и проверять его нет никаких проблем
   Михаил Козлов
 
49 - 03.10.16 - 16:09
Насчет УФ не скажу, а в ОФ делали как в (43) (правда без СтандартнаяОбработка=Ложь;).
 
 Рекламное место пустует
   Ivan_495
 
50 - 03.10.16 - 18:39
(49) это пример из книжки проф


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует