Добавление пользователя(ей) на узел

Программирование для SmarTeam.

Добавление пользователя(ей) на узел

Сообщение ВанТ » 05 апр 2011 19:29

Пробовал добавить пользователей-исполнителей на узел используя MyProcess.FlowChart.Nodes[i].Add(UserObject), однако ни какого результата не добился. Подскажите, что не так?
ВанТ
Новичок
Новичок
 
Сообщения: 5
Зарегистрирован: 05 апр 2011 19:20

Re: Добавление пользователя(ей) на узел

Сообщение Геройчиковый » 06 апр 2011 16:02

MyProcess.FlowChart.Nodes[i].Users.Add(UserObject) скорее всего так.
И вообще лучше к узлу обращаться по имени а не по номеру.
То есть:
CurrentNode = FlowProcess.Flowchart.Nodes.ItemByName("ManufacturingNode");
CurrentUser = FlowSession.User;
CurrentNode.Users.Add(CurrentUser);
Будь у героев время подумать - героизма не было бы вовсе...
Все люди, занятые истинно важным делом, всегда просты, потому что не имеют времени придумывать лишнее. (Лев Николаевич Толстой)
Делай, что можешь, с тем, что имеешь, там, где ты есть. (Теодор Рузвельт)
Аватара пользователя
Геройчиковый
Участник
Участник
 
Сообщения: 170
Зарегистрирован: 25 сен 2007 08:52
Откуда: Балашиха

Re: Добавление пользователя(ей) на узел

Сообщение ВанТ » 08 апр 2011 18:16

Геройчиковый писал(а):MyProcess.FlowChart.Nodes[i].Users.Add(UserObject) скорее всего так.

Я пропустил когда писал вопрос (.Users)
Геройчиковый писал(а):И вообще лучше к узлу обращаться по имени а не по номеру.

Да, не плохой совет. В случае со SmarTeam нужно пробовать все возможные варианты. Однако мне так и не помогло. Как-то странно: определенная схема с узлами хранится для всех процессов одна, изменять ее программно я не могу(и не должен, права на это не дают). Могу задавать исполнителей на узлы схемы процесса через Editor, а программно не выходит ...
ВанТ
Новичок
Новичок
 
Сообщения: 5
Зарегистрирован: 05 апр 2011 19:20

Re: Добавление пользователя(ей) на узел

Сообщение Геройчиковый » 09 апр 2011 17:34

Не понимаю, что не так у вас с кодом.
Приведённый мною кусок - рабочий, сам проверял.
Вообще, воркфлоу в смартиме - очень удобный и понятный, хоть в едиторе, хоть программно. Есть так называемый ФлоуЧарт - это как бы шаблон для процесса. В неё определеяются узлы, переходы между ними, исполнители и т.п. Создаётся всё это в ВоркФлоу Едиторе. Далее, когда уже в СТ Едиторе создаёте процесс - то создаётся экземпляр процесса на базе этого шаблона (флоучарта). Вы точно пытаетесь изменить экзепляр процесса, а не шаблон флоучарта? Так вот программно (и не только) этот экземпляр и меняется. Идите от простого к сложному, получив MyProcess, выведите его имя - посмотрите - подхватился ил он у вас или нет. Далее, выведите имя MyProcess.FlowChart.Nodes[i] и посмотрите - это тот узел или нет и т.д.
Как я сказал - мой код рабочий, проверено и не раз.

А вы случайно не забываете после добавления юзеров сохранять обновлённый узел?
FlowProcess.Flowchart.Nodes.ItemByName("Имя вашего узла").Users.Save

Может в этом дело?
Кстати, тоже самое с любым объектом в СТ. После изменения, не забывайте делать SmObject.Update
Будь у героев время подумать - героизма не было бы вовсе...
Все люди, занятые истинно важным делом, всегда просты, потому что не имеют времени придумывать лишнее. (Лев Николаевич Толстой)
Делай, что можешь, с тем, что имеешь, там, где ты есть. (Теодор Рузвельт)
Аватара пользователя
Геройчиковый
Участник
Участник
 
Сообщения: 170
Зарегистрирован: 25 сен 2007 08:52
Откуда: Балашиха

Re: Добавление пользователя(ей) на узел

Сообщение ВанТ » 09 апр 2011 18:51

Геройчиковый писал(а):... Далее, выведите имя MyProcess.FlowChart.Nodes[i] и посмотрите - это тот узел или нет и т.д.

Все так и делал.
Геройчиковый писал(а):А вы случайно не забываете после добавления юзеров сохранять обновлённый узел?
FlowProcess.Flowchart.Nodes.ItemByName("Имя вашего узла").Users.Save

Вот здесь я получаю ошибку. извиняюсь за неточность, но в сущности звучит так: "шаблон не может быть изменен..."

В любом случае благодарен за ответ. Раз у вас работает, то, возможно, какая то нестабильность в работе системы у нас (V5R19).
ВанТ
Новичок
Новичок
 
Сообщения: 5
Зарегистрирован: 05 апр 2011 19:20

Re: Добавление пользователя(ей) на узел

Сообщение Геройчиковый » 10 апр 2011 15:17

Ну раз ошбка при сохранении изменений в узле, тогда в этом всё и дело. То есть
CurrentNode.Users.Add(CurrentUser);
проходит нормально, но вот изменений не сохраняются.

Документашки перед собой сейчас нету, но посмотрите, нет ли метода
FlowProcess.Flowchart.Nodes.ItemByName("Имя вашего узла").Users.SaveEx(SmBehaviour)

Если есть, попробуйте его. Возможно дело в том, что у пользователя, под которым работает этот скрипт нехватает прав на редактирование узлов процесса, испольнителей и т.п.
В любом случае, разбирайтесь с ошибкой при сохранении. Такого быть не должно. На В5Р18 всё работало.
Будь у героев время подумать - героизма не было бы вовсе...
Все люди, занятые истинно важным делом, всегда просты, потому что не имеют времени придумывать лишнее. (Лев Николаевич Толстой)
Делай, что можешь, с тем, что имеешь, там, где ты есть. (Теодор Рузвельт)
Аватара пользователя
Геройчиковый
Участник
Участник
 
Сообщения: 170
Зарегистрирован: 25 сен 2007 08:52
Откуда: Балашиха

Re: Добавление пользователя(ей) на узел

Сообщение ВанТ » 18 апр 2011 15:18

Все таки не могу понять, почему не работает. при MyProcess.FlowChart.Users.Save() неизменно получаю сообщение:
"Блок-схема "Пробная" является шаблоном. Шаблонную блок-схему или ее часть нельзя изменить "
метода SaveEx() нет.
Еще неясно почему после

myProcess.AttachFlowchart(FlowChart, LinkProcessFlChart);

не создается объект myProcess.AttachedFlowChart
Пока только нашел возможность задавать пользователей на узлы через WorkflowView, но не хотелось бы останавливаться на этом.
ВанТ
Новичок
Новичок
 
Сообщения: 5
Зарегистрирован: 05 апр 2011 19:20

Re: Добавление пользователя(ей) на узел

Сообщение ayrat » 19 апр 2011 06:41

var myFlowChart = FlowCharts.get_ItemByName("Пробная");
myFlowChart.SaveCopyForProcess(myProcess);
Теперь назначаем пользователя, например, на узел согласования:
myFlChart.Nodes.get_ItemByName("Согласование").Users.Add(UserObjectForCheckIn);
При этом Save() делать нет необходимости.
ayrat
Новичок
Новичок
 
Сообщения: 5
Зарегистрирован: 19 окт 2009 11:44
Откуда: Железногорск(Красноярск)

Re: Добавление пользователя(ей) на узел

Сообщение Геройчиковый » 19 апр 2011 13:19

ВанТ писал(а):при MyProcess.FlowChart.Users.Save() неизменно получаю сообщение:

Сохранять надо не ФлоуЧарт, а исполнителей на конкретном узле!
Node.Users.Save

И ещё зачем использовать: myProcess.AttachFlowchart(FlowChart, LinkProcessFlChart); ?

Я же говорил - флоучарт - это шаблон, на основе него создаются процессы. Единственное место, где нужно работать с флоучартом - это ПРоцесс.Флоучарт.Узел.и т.д.
Всё.
Начинать надо с самого процесса. И смотреть внимателнее, метод Save какого объекта вызываете.
Будь у героев время подумать - героизма не было бы вовсе...
Все люди, занятые истинно важным делом, всегда просты, потому что не имеют времени придумывать лишнее. (Лев Николаевич Толстой)
Делай, что можешь, с тем, что имеешь, там, где ты есть. (Теодор Рузвельт)
Аватара пользователя
Геройчиковый
Участник
Участник
 
Сообщения: 170
Зарегистрирован: 25 сен 2007 08:52
Откуда: Балашиха

Re: Добавление пользователя(ей) на узел

Сообщение ВанТ » 20 апр 2011 20:10

Геройчиковый писал(а):Сохранять надо не ФлоуЧарт, а исполнителей на конкретном узле!
Node.Users.Save

Само собой. Просто описался. Да и не получится получить Users для FlowChart.Nodes...
То сообщение об ошибке выходит как раз при Node.Users.Save.
А вот myFlowChart.SaveCopyForProcess(myProcess) - решило проблему. Спасибо, ayrat.
ВанТ
Новичок
Новичок
 
Сообщения: 5
Зарегистрирован: 05 апр 2011 19:20


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3