Имя: Пароль:
1C
1С v8
ПриВыполнении у точки маршрута БП типа "Действие"
0 Dirk Diggler
 
26.09.23
16:03
ПриВыполнении может вызываться на клиенте вообще?

ТочкаМаршрутаБизнесПроцессаСсылка.<Имя бизнес-процесса> (BusinessProcessRoutePointRef.<Business process name>)
ПриВыполнении (OnExecute)

Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Только для точек вида Действие.
Вызывается только при выполнении последней задачи, соответствующей данной точке маршрута данного бизнес-процесса.

Толстый клиент указан. Однако как не крути, вызывается всегда на сервере, конструкции в инструкциях препроцессора

    #Если Клиент тогда
    #КонецЕсли

всегда пропускаются.
Как сделать, чтобы на клиенте запустилось? Или никак все-таки?
1 unbred
 
26.09.23
18:35
2 Dirk Diggler
 
27.09.23
12:40
(1) сути это не меняет. Главный вопрос - при каких условиях ПриВыполнении точки маршрута выполняется на клиенте?
3 Fedor-1971
 
27.09.23
13:02
(2) так в (0) прямо написано, что на клиенте не получится вызвать
Все события работы БП прописываются в модуле объекта, а он живёт НаСервере

Общую картинку задачи опиши, т.к. взаимодействие с БП начинается НаКлиенте (из списка или формы документа, в оных можно что-то мудрить с доступом к БП)
4 Dirk Diggler
 
27.09.23
14:44
(3) Цель: иметь возможность указывать различные процедуры, вызываемые при пометке задачи как выполненной, которые могли бы взаимодействовать с пользователем. Вводить текст, указывать какие-то документы, открыть формы справочников. А после этого проверять - реально ли пользователь сделал, что задача требует.

Поскольку точек маршрута БП множество разных, а вот объект метаданных "Задачи" один, то возникает проблема - как это сделать. Для каждой точки-то свое выполнение задачи. Какого-то внятного решения я не нашел, думал в обработчике события ПриВыполнении точки маршрута это все размещать, но нет, ничего не вышло.

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

Есть какой-то более правильный путь?
5 Dirk Diggler
 
27.09.23
15:02
(3) >Все события работы БП прописываются в модуле объекта, а он живёт НаСервере

Вот буквально только что нашел. Коробочная УТ 10.3. Модуль объекта БП СогласованиеЗаказаПокупател.

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

..................

ПараметрыЗадач = РаботаСБизнесПроцессами.СформироватьПараметрыШапкиЗадач(ВыборкаПараметры);

Вызывается модуль РаботаСБизнесПроцессами, причем процедура СформироватьПараметрыШапкиЗадач спрятана там в #Если Клиент.

Естественно, не пашет. Но это, видимо, значит, что когда-то все работало по-другому?
6 Fedor-1971
 
27.09.23
17:38
(4) это функционал самой задачи, не бизнес-процесса. Тут всё зависит от логики реализации. Можно генерить разные Задачи при некоторых условиях (состоянии) БП. Тоже не айс, но логика реализуется в замкнутом контуре Задачи

(5) это логика толстого клиента
7 Dirk Diggler
 
28.09.23
14:15
(6) так у меня толстый клиент.
8 Fedor-1971
 
28.09.23
14:49
(7) тогда непонятен смысл работы именно с клиента