AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.09.2007, 13:22   #21  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
rusalaudinov, посмотрите функциональность Data Crawler. Я не уверен, но мне кажется, что вы спрашиваете про что-то подобное.

Там есть форма, которая позволяет запустить на АОСе функциональность индексирования таблиц (в 3.0 для поиска на портале, в 4.0 — для глобального поиска в GUI). При этом клиент продолжает работать, вы можете делать в нем что угодно (см. класс SysDataSearchDaemon). Есть возможность остановить фоновую задачу на АОСе (похоже, через таблицу идет коммуникация).

В 3.0 в двухзвенке это не работало (запускалось на клиенте, не в отдельном потоке). Работает только в тонком (трехзвенном) клиенте. Это на всякий случай.
__________________
С уважением,
glibs®
Старый 10.09.2007, 13:29   #22  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
glibs, я пытался давно работать в двухзвенке - ничего не получилось - остальное собрано с аксфорума

rusalaudinov, можно еще использовать таймер (см форму поиска по АОТу, База знаний ERP : Axapta / Таймер Без Формы )
Старый 11.09.2007, 06:37   #23  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
я щас спрошу, и потом пойду в поиск. может пока ищу вы уже и ответите. короче у меня есть hWnd, который я передал в класс. как по нему получить форму, чтобы можно было обратиться к методу формы?
Старый 11.09.2007, 07:32   #24  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
по ходу не умею я пользоваться поиском
Старый 11.09.2007, 07:52   #25  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
Как вообще передать в класс объект формы. В частности нужно передать дерево
Старый 11.09.2007, 08:25   #26  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вы в Thread хотите передать?
__________________
Axapta v.3.0 sp5 kr2
Старый 11.09.2007, 08:37   #27  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
да. в поток
Старый 12.09.2007, 05:23   #28  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
эээ...ХЕЛП
Старый 12.09.2007, 12:13   #29  
gaenar is offline
gaenar
Участник
 
151 / 63 (3) ++++
Регистрация: 26.03.2005
Кажется, в стандартной оборотно-сальдовой ведомости (RLedgerSheetReport, метод fetchRowIntoBuff_Next) так и делается - вычитывается только та часть, которая отображается. Можно глянуть как сделано, но там контрол другой, может и не подойдёт та логика.
__________________
Умные тоже наступают на грабли, но только для того, чтобы поднять их с земли не нагибаясь.
Старый 13.09.2007, 05:00   #30  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
В общем сейчас попробую точно обрисовать что мне нужно, а то мне кажется именно поэтому я не получаю ответа.

у нас есть форма, в которой есть дерево. Создан новый класс, в котором создан поток. Задача передать дерево в поток, чтобы оно загружалось там и не мешало работе формы. я научился передавать в поток hWnd окна. Далее зная его и к какой форме он относится я смогу вызвать метод, который вернет мне дерево. Ключевым моментом в этой задаче является:"Можно ли, и если можно, то как по hWnd окна найти саму форму, чтобы обратиться к ней из потока?"
Старый 13.09.2007, 10:09   #31  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от rusalaudinov Посмотреть сообщение
"Можно ли, и если можно, то как по hWnd окна найти саму форму, чтобы обратиться к ней из потока?"
Нельзя.
hWnd - это просто хэндл окна.
К форме он отношения никакого не имеет.

Но можно хранить Map ссылок (HWND -> FormRun), и потом получить его по хвнд.
Старый 13.09.2007, 10:21   #32  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я думаю, стоит попробовать организовать некоторую очередь в гуи потоке, которую сканировать по таймеру и модифицировать тривью по командам из жтой очереди. Правда, не знаю, чо надо сделать, чтоб туда из другого потока запихивать.

Насколько я знаю, практически везде гуи классы не поддерживают многопоточность (поправьте, если не так) И странно ожидать этого от аксапты.
Старый 13.09.2007, 12:51   #33  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
эээ...щас побеседовал с коллегой примерно 50% вещей встали на свои места в голове.
kashperuk, а как нам тогда можно Map передать в поток? Собственно проблема в том, что в поток можно передать только простые типа данных, потому мы и стали заморачиваться с hWnd. А вот именно как передать, либо найти, увидеть из потока этот Map? Или может есть простые способы передать дерево в поток, да я не знаю?
Старый 13.09.2007, 12:57   #34  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вот здесь Визульное сравнение различных алгоритмов сортировки есть пример обновления из трида данных на форме.
На четверке не проверял, но на тройке (в том числе SP5+KR2) все это хозяйство работает не очень устойчиво
__________________
Axapta v.3.0 sp5 kr2
Старый 13.09.2007, 16:14   #35  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
А нельзя вашу задачу решить как-то по-другому? Например, рассчитать что-то в классе, и потом заполнить элемент управления в форме.
__________________
С уважением,
glibs®
Старый 17.09.2007, 06:15   #36  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
я не могу рассчитать в классе. проблема у меня в том, что когда раскрываешь узел типа Classes проходит много секунд пока он подгружается. нужно это устранить. можно было бы все(что критично долго грузится) загрузать в самом начале, но тогда форма будет висеть пока загрузится всё-че надо. поэтому пришло в голову прогружать дерево в отдельном потоке, а форма тем временем будет в отличном состоянии и готова к работе в любую секунду
Старый 17.09.2007, 10:21   #37  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
подгружай по таймеру можно посмотреть как ищет поиск по АОТу или как в sidax устроена фоновая загрузка главного меню.
Старый 21.09.2007, 01:17   #38  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
А обязательно вашу задачу решать через форму?

Например, такой джобик закеширует объекты АОТа из узла классов.

#AOT
static void glibs()
{
TreeNode treeNode;
TreeNodeIterator treeNodeIterator;
;

treeNode = TreeNode::findNode(#ClassesPath);
treeNodeIterator = treeNode.AOTiterator();
treeNode = treeNodeIterator.next();
while (treeNode)
{
treeNode.AOTload();
treeNode = treeNodeIterator.next();
}

}

Для других узлов его переделать несложно.

Только он память жрет прилично. Возможно, вам будет достаточно прогнать его без вызова treeNode.AOTload().

Я вот что заметил. После запуска джоба, остановки клиента и АОСа и последующего их запуска узел АОТа открывается быстро.

Посему я не уверен, но, возможно, при открытии узла АОТа анализируется не кэш АОСа, а читается какой-нибудь axapd.aoi (или что-то в этом роде) с диска. А после перезапуска АОСа файлы приложения живут в файловом кэше, и поэтому узел уже быстро открывается. Иначе пока я не знаю, как объяснить этот эффект.

Но джоб и в этом случае должен обеспечить кэширование файлов приложения.

Попробую проверить завтра. А то м.б. джоб нужно запускать время от времени в процессе работы, т.к. файловый кэш имеет свойство освобождаться.

А вообще, по-моему, надуманная проблема насчет того, что узел открывается неприемлемо долго. Это один раз происходит. После перезапуска сервера. И не так уж долго и терпеть приходится.
__________________
С уважением,
glibs®
Старый 21.09.2007, 12:24   #39  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Проверил. На свеже загруженной машине запустил АОС, запустил клиента, запустил джоб аккуратно (без treeNode.AOTload()). В результате классы открылись очень быстро. Попробовал открыть таблицы — тормозили. Так что вот.

Гипотезу насчет файлового кэша м.б. тоже проверю как-нибудь.
__________________
С уважением,
glibs®
Старый 26.09.2007, 14:58   #40  
rusalaudinov is offline
rusalaudinov
Участник
 
91 / 36 (2) +++
Регистрация: 24.05.2007
уффф... В общем так. Нашел файлы, которые создает аксапта при закрывании её, о которых в начале этой ветки вел речь Mazzy. оказывается, что у меня на четвертой аксапте расширение у этих файлов не aoc a auc. ладно. создал файлик в котором загружено все, что надо, сохранил. переименовал как master.auc и куда я только его не пихал в надежде что аксапта считает его и будет быстро загружать мои узлы дерева, ничего не вышло, аксапта не загружала и не читала. У кого есть идеи куда еще его подпихнуть и как назвать. чтоб сразу загрузился кеш...WELCOME

Дальше коллега подсказал мне попробовать воспользоваться GlobalCache. сегодня весь день им "пользовался". в итоге мне удалось передать дерево в класс, там его раскрыть и потом открывать быстро уже на форме, НО сростить это все с работой в потоке неполучилось. в итоге без потока оно всё работает, как только вызываем метод в отдельном потоке в инфолог уже не получает дерево и все усилия напрасны.....ЧЕРТ
Теги
aoc, aot, как правильно, кэширование, тормоза

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Задача: запретить удалять строки разнесённых журналов. jeky DAX: Программирование 12 28.01.2009 22:22
Тормоза после оптимизации базы Alenka DAX: Администрирование 5 11.04.2008 19:37
Казалось бы, простая задача... konfet DAX: Программирование 5 05.04.2007 16:58
Задача оптимизации загрузки производственых мощностей SevA DAX: Программирование 23 01.11.2004 18:12
Дополнительные модули для задач оптимизации. NJD DAX: Прочие вопросы 1 26.10.2003 19:45

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:20.