Имя: Пароль:
1C
 
Подскажите по бизнес-процессам - что там с транзакциями
0 RomaH
 
naïve
20.11.15
09:38
Схема такая:
1. Точка действия
2. Точка обработки
3. Точка обработки

Выполняю задачу № 1
Задача.ВыполнитьЗадачу();

Переходит на точку обработки 2 - в ней делаю запись в регистр НаборЗаписей.Записать()

В точке 3 я этого набора не вижу

отсюда делаю вывод что все это внутри транзакции делается
и как тут правильно поступить?
1 Cyberhawk
 
20.11.15
09:39
А ты вызови ТранзакцияАктивна() и все узнаешь без косвенных наблюдений по чтению записанных намедни наборов
2 xxTANATORxx
 
20.11.15
09:42
(0)а что если в транзакции ты сделаешь НаборЗаписей.Записать()  ты его не будешь видеть?
3 RomaH
 
naïve
20.11.15
09:43
(1) ну как бы да - транзакция активна

подскажите как правильно сделать:

БП должен продвинуться вперед после проведения документа
и сделать записи в РС с учетом движений этого документа
4 RomaH
 
naïve
20.11.15
09:44
(2) ну вот - не видит
5 vde69
 
20.11.15
09:44
для понимания вставь в модуль объекта задачи (очень помогает при отладки)

Функция ПолучитьID_ОбъектаВПамяти () Экспорт
    ID = Неопределено;
    ДополнительныеСвойства.Свойство("ID_ОбъектаВПамяти", ID);
    Возврат (СокрЛП(ID));
КонецФункции


а по всему тексту БП вставь типа этого
            НоваяЗадачаОбьект.ДополнительныеСвойства.Вставить("ID_ОбъектаВПамяти", "Источник обьекта - бизнесс процесс ""Согласование""");
6 RomaH
 
naïve
20.11.15
09:47
7 RomaH
 
naïve
20.11.15
09:49
(5) спасибо конечно, но тут в консерватории что-то не так
я пытаюсь сделать БП не имея понятия о методике
8 vde69
 
20.11.15
09:55
(7) в БП при шаге задействована не одна задача а несколько, и у них у всех разные ипостасии...

именно для понимая с каким именно объектом ты сейчас в отладчике (это может быть текущая задача или вновь создаваемая) я и сделал (5), по другому очень тяжело что-то делать в модуле задачи.

А по сколько транзакция в БП огромная (у меня было с десяток задач за раз) и каждая задача что-то делает в добавок там куча событий и подписок, то приходится выносить код записи регистров из БП в модуль задачи в процедуру "при записи", и вот тут без (5) просто не обойтись
9 User_Agronom
 
20.11.15
10:05
(6) Уже есть документ - Нет - Провести документ!!!

Чего проводить-то собрался?
10 RomaH
 
naïve
20.11.15
10:17
ок, тогда по другому вопрос задам
как увидеть движения которые сделаны в точке "Провести документ" из точки "Обработать...."?
11 Cyberhawk
 
20.11.15
10:20
Опираться на движения, сделанные в той же транзакции, методологически неправильно.
Вынеси свой блок "Обработать с учетом движений..." в отдельную интерактивную задачу с какой-нибудь пометкой "Автовыполнение", а в отдельном регл. задании шерсти все такие задачи, проставляй им отметку выполнения и записывай
12 RomaH
 
naïve
20.11.15
10:23
блин - у меня по при и более таких задач последовательных
а результат нужен сразу, а не через пять секунд

пользователь нажал кнопку - провел документ
фоновое выполнило первую задачу, вторую - третью - уже 3 секунды

и еще результат показать на форме пользователю
13 RomaH
 
naïve
20.11.15
10:23
у меня по три и более
14 vde69
 
20.11.15
10:25
(10) внутри транзакции ты видишь грязные данные, то есть уже записанные данные ты должен видеть.

если ты данные не видишь - значит ты их не записал

теперь остается главный вопрос: в каких обработчиках ты пишешь и читаешь записи?
15 vde69
 
20.11.15
10:26
(12) что за фоновое задание? колись...
16 RomaH
 
naïve
20.11.15
10:28
(15) это из (11)
17 Cyberhawk
 
20.11.15
10:28
(12) "результат показать на форме пользователю" // результат, опирающийся на код, выполняемый в рамках БП? Так не надо делать
18 RomaH
 
naïve
20.11.15
10:30
(14) что-то запутался - сделал сейчас пример попроще - все видно
19 RomaH
 
naïve
20.11.15
10:31
(17) чего это?
20 Cyberhawk
 
20.11.15
10:33
(19) пользователь должен работать со списком задач и по уходу одной задачи / появлению другой делать вывод, что все хорошо, а не смотреть и ждать в форме задачи, когда же там что-то обновится
21 vde69
 
20.11.15
10:33
(18) дело в том, что в БП обработчики вызываются непоследовательно по точкам, там очень хитрая схема...

вероятно ты читать не в том обработчике
22 RomaH
 
naïve
20.11.15
10:35
(5)
а по всему тексту БП вставь типа этого
            НоваяЗадачаОбьект.ДополнительныеСвойства.Вс

что за новая задача?
23 RomaH
 
naïve
20.11.15
10:40
+(22) это при создании задачи?
24 vde69
 
20.11.15
10:43
(23) при создании, при выполнении, при записи и т.д.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший