На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67419617
10967
Hosts 3609300
2337
Visitors 53572090
10560

106


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Получение данных из таблицы "Районы" , при значении rastr.LockEvent=True » в форуме: Макро   Просмотров: 6881
 
Евгений
Посетитель
 
Всего сообщений: 14
Дата регистрации: 01.06.2017
Создано: 10.10.2018 05:55:54
 
 
Здравствуйте, нужна помощь, не могу разобраться.
Всегда при написании макросов отключаю обновление таблиц и протокола для ускорения расчетов:
Код

rastr.LockEvent=True
rastr.LogEnable=False


в конце макроса включаю обратно
Код

rastr.LogEnable=True
rastr.LockEvent=False


Заметил, что при заблокированных событиях не удается получать значения потребления из таблицы Районы или Территории.
Например:
Код

rastr.LockEvent=True
rastr.LogEnable=False

node=12345
rayon=111
For i=1 to 10
   rastr.printp "  Шаг ? " & i
   rastr.printp "Нагрузка в узле: " & rastr.calc("val","node","­pn","ny="&node)
   rastr.printp "Потребление: "& rastr.calc("val","area","­pn","na="&rayon)
   GrCor "node","pn","ny="&node,"p­n+10"
Next

rastr.LogEnable=True
rastr.LockEvent=False

Sub GrCor(tabl,param,viborka,­formula)
   Set ptabl=Rastr.Tables(tabl)
   Set pparam=ptabl.Cols(param)
   ptabl.SetSel(viborka)
   pparam.Calc(formula)
End Sub


- выводится актуальная нагрузка в узле на каждом шаге, а потребление не обновляется.

Можно как-то обновлять и получать значение потребление? Без блокировки событий расчеты с вариантыми расчетами займут вечность. Спасибо заранее.
 
Профиль
Наверх
Евгений
Посетитель
 
Всего сообщений: 14
Дата регистрации: 01.06.2017
Создано: 11.10.2018 11:31:41
 
 
Неужели нет никакого решения? Пожалуйста, прошу помочь разобраться.
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 11.10.2018 16:02:16
 
 
Здравствуйте. А если сравнить две вечности: при расчете с открытыми и закрытыми окнами с таблицами и графиками ?
 
Профиль
Наверх
Евгений
Посетитель
 
Всего сообщений: 14
Дата регистрации: 01.06.2017
Создано: 12.10.2018 04:52:56
 
 
Цитата
Здравствуйте. А если сравнить две вечности: при расчете с открытыми и закрытыми окнами с таблицами и графиками ?


Протестировал на отдельном интересующем меня модуле. Цель модуля - отключить 2 элемента (по сути только одно сочетание) и в случае, если режим не сходится - подобрать такое потребление, при котором режим сойдется. Для задания потребления использовал стандартный (но немного облегченный) макрос корректировки потребления района.

Окна и графики открыты: 28 секунд
Окна и графики закрыты: 23 секунды
При включенной блокировке обновления результат (хоть и с некорректными данными) - менее 1 секунды.

Поэтому, если иного способа нет - придется изобретать "сборку" цифры потребления, используя только "Узлы" и "Ветви"))
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 12.10.2018 18:52:03
 
 
Можно и поизобретать. Но вот этот скрипт не подтверждает ни мысль о том, что локинг меняет результаты ни мысль об ускорении за счет локинга. Исполнено с двумя открытыми таблицами: районы и узлы+ветви.

И уж если Вы взыщите ускорения, избавьтесь от calc - он использует выборку, которую Ваш вариант исполняет для каждого значения.

Пользователь добавил изображение

Код

CmdPath = Rastr.SendCommandMain(COM­M_CMDPATH,"","",0)
Rastr.Load RG_REPL, CmdPath & "test-rastrcx195.rg2", CmdPath & "Shablonрежим.rg2"
Rastr.Tables("com_regim")­.Cols("neb_p").Z(0) = 1E-3

Sub CollectAreas(RoundsCount)­
    StartTime = Timer
    Set spAreas = Rastr.Tables("area")
    Set spAreaPg  = spAreas.Cols("pg")
    Set spAreaPn  = spAreas.Cols("pn")
    Set spNodePn = Rastr.Tables("node").Cols­("pn")
    InitialNodePn = spNodePn.Z(1)
    TotalPn = 0
    TotalPg = 0
    for i = 0 to RoundsCount
        spNodePn.Z(1) = InitialNodePn + i
        rastr.rgm("p")
        for j = 0 to spAreas.Size - 1
           TotalPn  = TotalPn + spAreaPn.Z(j)
           TotalPg  = TotalPg + spAreaPg.Z(j)
        next
    next
    spNodePn.Z(1) = InitialNodePn
    Rastr.PrintP "Elapsed " & Timer - StartTime & " TotalPn " & Round(TotalPn) & " TotalPg " & Round(TotalPg)
End Sub


Rounds = 100

rastr.LockEvent=True
rastr.LogEnable=False
CollectAreas(Rounds)
rastr.LockEvent=False
rastr.LogEnable=True
CollectAreas(Rounds)


Нам бы в техподдержку Вас определить. Сообщите, кто Вы и откуда, раз уж из СО.
 
Профиль
Наверх
Евгений
Посетитель
 
Всего сообщений: 14
Дата регистрации: 01.06.2017
Создано: 15.10.2018 11:49:35
 
 
Цитата
Но вот этот скрипт не подтверждает ни мысль о том, что локинг меняет результаты ни мысль об ускорении за счет локинга. Исполнено с двумя открытыми таблицами: районы и узлы+ветви.


Ну вот Ваши результаты мне нравятся. А вот что получилось у меня с Вашим кодом:
Цитата
Elapsed 2,746094 TotalPn 726647 TotalPg 756516
Elapsed 55,48828 TotalPn 731546 TotalPg 761823


Цитата
Нам бы в техподдержку Вас определить. Сообщите, кто Вы и откуда, раз уж из СО.

Сообщу конечно, но можно как-то по почте с Вами связаться или иным способом? Личное сообщение не получается Вам отправить.
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 15.10.2018 14:12:20
 
 
Иным способом и нужно связываться, если Вы надеетесь получить помощь не только от участников форума, но и от разработчиков, тем более в рамках действующего договора на техподдержку: http://www.rastrwin.ru/su­pport/ticket_list.php. Там желательно указать в профиле организацию и настоящее имя, ибо это пойдет в отчет СО.

Возвращаясь к теме замедления и искажения: нужно узнать что у Вас за версия, и если есть время на эксперименты попробовать эту бету. Я свой пример делал на билде из разработки. Может он и улучшился с той версии, которая у Вас.
 
Профиль
Наверх
Евгений
Посетитель
 
Всего сообщений: 14
Дата регистрации: 01.06.2017
Создано: 23.10.2018 11:56:28
 
 
Спасибо за ответ, пока не было времени попробовать. У меня версия 1.79.0.1380, попробую версию по Вашей ссылке.
 
Профиль
Наверх



Читают тему
гостей: 2, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019