Имя: Пароль:
1C
1С v8
Условие бизнес процесса
0 bamond
 
13.06.13
11:48
Всем привет. Подскажите по поводу прохождения условия в бизнес процессе , уже голову сломал в поисках косяка....

условие :

Процедура Условие1ПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
       
   Если ЭтотОбъект.ОтправитьНаДоработку = Истина тогда
   Результат = Ложь;
   иначе
   Результат = Истина;
   КонецЕсли;
           
       
КонецПроцедуры

кнопка НЕ СОГЛАСОВАНО:

&НаКлиенте
Процедура НеСогласовано(Команда)
   ЭтаФорма.Реквизит1.ОтправитьНаДоработку=Истина;
   Доработка();
   Реквизит1.ОтправитьНаДоработку=Истина;    
   ПараметрыЗаписи = Новый Структура;
   ПараметрыЗаписи.Вставить("ВыполнитьЗадачу", Истина);
       
   Если Не Записать(ПараметрыЗаписи) Тогда
       Возврат;
   КонецЕсли;
   
       ПоказатьОповещениеПользователя(
       НСтр("ru = 'Выполнение:'"),
       ПолучитьНавигационнуюСсылку(Объект.Ссылка),
       Строка(Объект.Ссылка),
       БиблиотекаКартинок.Информация32);
       
   Оповестить("ЗадачаВыполнена", Объект.Ссылка);    
   Записать();
   Закрыть();
   

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

&НаКлиенте
Процедура Доработка()
   Реквизит1.ОтправитьНаДоработку=Истина;
   Записать();    
   КонецПроцедуры

___________________________________________

P.S. много раз и разными способами указывал ИСТИНУ что бы наверняка)))

Так вот.. Смотря точками остановы в коде кнопки всё проставляется как надо... галочка истина проставляется... а когда дело доходит до проверки условия , то там опять стоит Ложь.... что тут не так подскажите пожалуйста =(((

Задача в том что на форме есть кнопка типо булево ( скрытая ) и при нажатии на кнопку на форме НЕ СОГЛАСОВАНО , булево проставлялось в ИСТИНА и в условие по фактору ИСТИНА маршрут шел по пути НЕТ
1 Михаил Козлов
 
13.06.13
11:55
Элемент записывали?
2 Лефмихалыч
 
13.06.13
12:01
(0) Признак "Отправить на доработку" нужно хранить в отдельном регистре, который свяжет предмет согласования и бизнес процесс. Кнопка "Не согласовано" в задаче должна записывать запись в этот регистр, а проверка условия должна получать запись из этого регистра по своему бизнес процессу и его предмету.

В форме задачи совать что-то в реквизиты бизнес процесса - глупая затея. Особенно, если есть групповые задачи, а реквизит один (хотя в этом случае надо будет и регистр переделать, но это проще, чем БП ломать).
Записывать признак в саму задачу тоже идиотизм, т.к. при проверке условия нужно будет нужную задачу искать (а она уже выполнена).
3 Лефмихалыч
 
13.06.13
12:02
в самом предмете признак хранить тем более глупо, поскольку теоретически можно несколько БП запустить на соновани одного предмета. Да и опять же - групповые задачи бывают
4 bamond
 
13.06.13
13:00
(1) (2) Не очень понимаю о чем речь идет =((( Можно где то посмотреть пример кода на эту тему?

А задача у меня не групповая, а обычная последовательная где на каждом этапе согласующий может "не согласовать" и процесс уведомит инициатора и завершится

конфигурация Документооборот

Я сейчас окончательно запутался)))

P.S. курю мануал "руководство разработчика" официальный... там вообще ничего об этом нет... 3 строчки только на тему как сделать условие где результат ложь или истина... а как правильно написать ЕСЛИ ..... ТОГДА... такого нет =(
5 bamond
 
13.06.13
17:04
Подскажите пожалуйста поподробнее .. ((
6 Лефмихалыч
 
14.06.13
10:39
Посмтори в типовых. В УТ 10.3, например, есть БП "Согласование заказа". В Документообороте есть отельный процесс "согласование" чего угодно. Посмотри, как там сделано
7 bamond
 
14.06.13
11:02
Там вообще всё запутано... у них сделано через перечисления... я сделал так же впринципе через их же перечисления... всеравно не работает , такое ощущение что не записывает результат выбора ( или не выбирает его при условии )

&НаКлиенте
Процедура НеСогласовано(Команда)
   
   
   ПараметрыЗаписи = Новый Структура;
   ПараметрыЗаписи.Вставить("ВыполнитьЗадачу", Истина);
   ПараметрыЗаписи.Вставить("РезультатСогласования", РезультатыСогласованияНеСогласовано);
   
   
   Если Не Записать(ПараметрыЗаписи) Тогда
       Возврат;
   КонецЕсли;    
   
   
   Закрыть();
   
   
КонецПроцедуры



Процедура Условие1ПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)

   Если РезультатСогласования = Перечисления.РезультатыСогласования.НеСогласовано тогда
   Результат = Истина;
   иначе
   Результат = Ложь;
   КонецЕсли;

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

Даже если руками выбираешь РезультатСогласования... всеравно никак =((

P.S. вариант согласования реквизит БП
Независимо от того, куда вы едете — это в гору и против ветра!