Имя: Пароль:
1C
1С v8
Транзакция при работе с визио.
0 UserMista
 
04.06.13
16:21
И так 8.1, актив икс компонента визио.
Есть процедура - берет очередную точку из кэша и гнет линию.

Вешаем процедуру на кнопку - жмем на нее 5 раз - линия построена как надо.

засунем процедуру в цикл:

Для каждого Строка Из СтрокиВКэше Цикл
Фигура.CellsSRC(10, Строка.ИДСегмента, ИИ).ResultIU    = Строка.Колонка1;
конеццикла;

Будет один сгиб из пяти. Вызовем этот циклвручную через кнопку 5 раз - построится правильно.

Как правильно повесить в цикл транзакцию?
конструкция вида

Для каждого Строка Из СтрокиВКэше Цикл
UndoScope = ЭлементыФормы.VisAX.Document.Application.BeginUndoScope("Транзакция");                    
Фигура.CellsSRC(10, Строка.ИДСегмента, ИИ).ResultIU    = Строка.Колонка1;
ЭлементыФормы.VisAX.Document.Application.EndUndoScope(UndoScope, True);
конеццикла;

неработает. 1совская транзакция тоже непомогает.
1 Maxus43
 
04.06.13
16:22
при чем тут транзакция я что то не понял
2 UserMista
 
04.06.13
16:24
сумбурно выразился. Если короче то- Есть код - который при выполнении его через кнопку на форме несколько раз - правильно отрабатывает.
Если засовываем этот код в простейший цикл на 5 проходов - то выполняется первое действие
3 UserMista
 
04.06.13
16:24
Как в первом варианте при одном нажатии на кнопку
4 Maxus43
 
04.06.13
16:26
текст того что в кнопке выкладывай, на которую 5 раз жмакаешь
5 UserMista
 
04.06.13
16:29
Процедура КоманднаяПанель1обновимка(Кнопка)
   Для К=0 по 5 цикл
   транз=ЭлементыФормы.VisAX.Document.Application.BeginUndoScope("Ручное редактирование"+К));                    
   ВыполнитьОбновлениеГеометрииОбъектов();
   ЭлементыФормы.VisAX.Document.Application.EndUndoScope(транз, True);
       КонецЦикла;
КонецПроцедуры

Здесь хоть ставишь цикл хоть не ставишь - для нужного результата кнопку нужно нажать 5 раз
6 UserMista
 
04.06.13
16:30
Внутри нигде незакрытых транзакций от визио нету.  - несколько раз все проверил
7 ИС-2
 
naïve
04.06.13
16:31
(2) я так думаю, что компонта не успевает выполнить действия. Предлагаю для теста в каждой итерации делать паузу 5 секунд
8 UserMista
 
04.06.13
16:34
(7) Интересная мысль - спасиб. через полчаса до дома доеду попробую вставить паузу.
9 Maxus43
 
04.06.13
16:34
транз=ЭлементыФормы.VisAX.Document.Application.BeginUndoScope("Ручное редактирование"+К));    
ЭлементыФормы.VisAX.Document.Application.EndUndoScope(транз, True);

закоменти. что даст?