Имя: Пароль:
1C
1С v8
При выполнении задачи создается новый бизнес процесс
,
0 Cancell
 
16.07.15
16:45
Всем доброго дня, такая проблемка:
На основе БСП делаю свой бизнес процесс, задачу использую как в БСП.
Есть в схеме БП моего действие, где я подставляю свою форму, и оттуда выполняю задачу через Задача.выполнитьЗадачу();
Задача выполняется, по маршруту в БП двигается дальше, но вот параллельно создается новый БП не стартованный и явно создается при записи текущего БП...
1 Cancell
 
16.07.15
16:52
Текущий БП записывается т.к. в форме задачи подставляется реквизит БП...
2 Лефмихалыч
 
16.07.15
16:55
(0) ну, смотри, где у тебя в коде СоздатьБизнесПроцесс() и потом его Записать()
3 Cancell
 
16.07.15
16:58
(2) я его создаю только в одном месте, из документа по кнопке. Тут выявил еще одну закономерность - на каждом действие я заполняю определенный реквизит основного БП, и все те которые наплодились их количество равно действиям и в каждом из них все поля пустые кроме тех которых заполнялись на каждом действие... т.е. у первого пустого стоит реквизит из первого действия, у второго пустого из второго действия и т.п.....
4 Cancell
 
16.07.15
16:59
как будто в момент записи он теряет основной БП и создает новый...
5 Cancell
 
16.07.15
17:00
Фому подставляю через -
Функция ФормаВыполненияЗадачи(ЗадачаСсылка, ТочкаМаршрутаБизнесПроцесса) Экспорт
    
    Результат = Новый Структура;
    Результат.Вставить("ПараметрыФормы", Новый Структура("Ключ", ЗадачаСсылка));
    Если ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.СогласованиеКПП.ТочкиМаршрута.ПроверкаИУтверждениеКПП Тогда
        Результат.Вставить("ИмяФормы", "БизнесПроцесс.СогласованиеКПП.Форма.СогласованиеСП");

...
6 Drac0
 
16.07.15
17:09
(0) Возьми отладчик, поставь точку в модуле БП в ПередЗаписью и смотри стек.
7 Cancell
 
16.07.15
17:13
(6) уже делал, в передзаписью попадает когда я в форме после выполнения задачи делаю записать и закрыть, тогда почему-то записывается новый БП... форма по идее принадлежит БП, но как-то отвязывается от основного БП. При чем когда я открываю задачу каждый раз оказывается что ЭтоНовый()=Истина.... где-то у меня отцепилась форма от основого БП и создается новый. Вот не пойму где.
8 Cancell
 
16.07.15
17:17
Проблема в том еще что основная форма задачи управляемая, а подставляемая мною обычная, из-за этого может быть такое?

Функция ОткрытьФормуВыполненияЗадачи(Знач ЗадачаСсылка) Экспорт
    
    ПараметрыФормы = БизнесПроцессыИЗадачиВызовСервера.ПолучитьФормуВыполненияЗадачи(ЗадачаСсылка);
    ИмяФормыВыполненияЗадачи = "";
    Результат = ПараметрыФормы.Свойство("ИмяФормы", ИмяФормыВыполненияЗадачи);
    Если Результат Тогда
// параметры удалось только так передать в обычную форму, там у нее есть реквизит параметрыформы
        Если Найти(ИмяФормыВыполненияЗадачи,"СогласованиеКПП")<>0 ТОгда
            Форма = ПолучитьФорму(ИмяФормыВыполненияЗадачи,ПараметрыФормы.ПараметрыФормы);
            Форма.ПараметрыФормы = ПараметрыФормы.ПараметрыФормы;
            Форма.Открыть();
        Иначе            
            ОткрытьФорму(ИмяФормыВыполненияЗадачи, ПараметрыФормы.ПараметрыФормы);
        КонецЕсли;        
    КонецЕсли;
    Возврат Результат;
    
КонецФункции
9 almar
 
16.07.15
17:22
(0) Наверное где-то СтандартнаяОбработка=Ложь забыл
10 Drac0
 
16.07.15
17:28
(7) Может у тебя в Прааметрах нет поля Ключ? 0_о
11 Cancell
 
16.07.15
17:45
(9) а зачем там это, там вроде все стандартно идет
12 Cancell
 
16.07.15
17:46
(10) в ключе передается задача -
Процедура ОсновныеДействияФормыВыполнено(Кнопка)
    
    Если ЗначениеЗаполнено(Предмет) Тогда
        Задача = ПараметрыФормы.Ключ.ПолучитьОбъект();
        Задача.ДатаИсполнения = ТекущаяДата();
        Задача.выполнитьЗадачу();    
        Задача.Записать();
        Оповестить("Запись_ЗадачаИсполнителя");
        ЭтотОбъект.Записать();
        Закрыть();
    Иначе                       
        Сообщить("Выберите созданный КПП");
    КонецЕсли;

КонецПроцедуры
13 Cancell
 
16.07.15
17:47
это в форме БП которую я подставляю вместо формы задачи
14 Cancell
 
16.07.15
17:53
(10) да и как я понимаю это не работает если я из упр в обычную форму параметры перегоняю... по крайней мере стандартно не получилось, не смог я найти параметрыформы в заменяемой форме. Пришлось в ней создавать реквизит и так туда загонять данные (иначе до задачи не достучаться):
Если Найти(ИмяФормыВыполненияЗадачи,"СогласованиеКПП")<>0 ТОгда
            Форма = ПолучитьФорму(ИмяФормыВыполненияЗадачи,ПараметрыФормы.ПараметрыФормы);
            Форма.ПараметрыФормы = ПараметрыФормы.ПараметрыФормы;
            Форма.Открыть();
        Иначе
15 Cancell
 
16.07.15
17:54
Сейчас в отладке увидел что когда я из списка задач, открываю свою, там происходит подмена формы и когда открывается моя форма БП для задачи, то БП уже новый...
16 Drac0
 
16.07.15
18:57
(13) В ключе должна передаваться ссылка на объект, чью форму ты открываешь. А у тебя хрень передается и он создает новую форму. Да и постановка странна: зачем открывать форму бп при выполнении задачи? Обычно открывают или саму форму или документ, обработка которого выполнит задачу. Фигня у тебя, в общем.
17 Cancell
 
16.07.15
18:58
В итоге переделал все формы на управляемые, и заработало как надо, всем спасибо!