Перевести бизнес-процесс на следующую точку маршрута програмно

1. Kudus 30.09.22 18:31 Сейчас в теме
Хочу програмно перевести бизнес процесс на следующую точку маршрута, Пишу вот такой код:

&НаКлиенте
Процедура Записать(Команда)
ИзменитьБизнесПроцесс();
КонецПроцедуры
&НаСервере
Процедура ИзменитьБизнесПроцесс()
Объект = Реквизит1.ПолучитьОбъект();
Объект.Контрагент = Контрагент;
ОбъектЗадача = Объект.ВедущаяЗадача.Ссылка.ПолучитьОбъект();
ОбъектЗадача.Выполнена = Истина;
Объект.Записать();
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизит1 = Параметры.БП;
Реквизит2 = параметры.Задача;
КонецПроцедуры

пишет ошибку:
Элемент не выбран
{ОбщаяФорма.ФормаДляЗадачи1.Форма(10)}:ОбъектЗадача = Объект.ВедущаяЗадача.Ссылка.ПолучитьОбъект();
{ОбщаяФорма.ФормаДляЗадачи1.Форма(3)}:ИзменитьБизнесПроцесс();

по причине:
Элемент не выбран
Найденные решения
4. zeltyr 570 03.10.22 06:06 Сейчас в теме
Во-первых, если платформа худо-бедно последняя, то нельзя называть пользовательский реквизит словом "Объект", т.к. это служебное слово и вы как-бы переопределяете объект формы, что неверно. Переименуйте на "ОбъектБП" хотя бы. Скорее всего поэтому словили ошибку.


Объект.ВедущаяЗадача.Ссылка.ПолучитьОбъект();

Тут сразу 2 замечания:
1. Надо проверять заполнено ли поле "Ведущая задача. Если нет - смысл делать всё остальное?
2. У вас и так в реквизите лежит ссылка, в таком случае достаточно написать так:
Объект.ВедущаяЗадача.ПолучитьОбъект();



Ну и главное. Чтобы выполнить задачу есть специальный программный метод:
 ЗадачаОбъект.ВыполнитьЗадачу();


P.S. Запись объектов лучше завернуть в попытку, т.к. объект может и не записаться и надо об это корректно сообщить пользователю.
criptid; user705522_constantin_h; Kudus; ImHunter; +4 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. aka Любитель XML 30.09.22 18:58 Сейчас в теме
(1) наверное не заполнено поле ВедущаяЗадача. Да, и почему именно ведущую пытаетесь выполнить? По БП может быть +100500 задач...
3. Kudus 30.09.22 19:02 Сейчас в теме
(2)Не подскажете как получить ссылку именно на ту задачу, которую пользователь выберет в списке
5. zeltyr 570 03.10.22 06:10 Сейчас в теме
(3) Если работаете со списком, то там есть метод ВыделенныеСтроки.

Подробнее см.тема форума про выделенные строки
4. zeltyr 570 03.10.22 06:06 Сейчас в теме
Во-первых, если платформа худо-бедно последняя, то нельзя называть пользовательский реквизит словом "Объект", т.к. это служебное слово и вы как-бы переопределяете объект формы, что неверно. Переименуйте на "ОбъектБП" хотя бы. Скорее всего поэтому словили ошибку.


Объект.ВедущаяЗадача.Ссылка.ПолучитьОбъект();

Тут сразу 2 замечания:
1. Надо проверять заполнено ли поле "Ведущая задача. Если нет - смысл делать всё остальное?
2. У вас и так в реквизите лежит ссылка, в таком случае достаточно написать так:
Объект.ВедущаяЗадача.ПолучитьОбъект();



Ну и главное. Чтобы выполнить задачу есть специальный программный метод:
 ЗадачаОбъект.ВыполнитьЗадачу();


P.S. Запись объектов лучше завернуть в попытку, т.к. объект может и не записаться и надо об это корректно сообщить пользователю.
criptid; user705522_constantin_h; Kudus; ImHunter; +4 Ответить
6. Kudus 05.10.22 11:54 Сейчас в теме
(4)Спасибо за помощь, получил объект по ссылке и воспользовался методом "ВыполнитьЗадачу"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот