|
20.12.2010, 10:53 | #1 |
Модератор
|
Способы почистить локальный кеш всем пользователям?
Какими способами можно почистить локальный кеш для всех пользователей сети? (Ax 2009 SP1)
Кеш локальный: http://www.axaptapedia.com/index.php...ching#Location Для ОС до Windows Xp включительно: Код: [DISK]:\Documents and Settings\%USERNAME%\Local Settings\Application Data Код: %USERPROFILE%\AppData\Local
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
20.12.2010, 11:33 | #2 |
Гость
|
перегрузить АОС
|
|
20.12.2010, 12:00 | #3 |
Участник
|
Сделал небольшой функционал для того чтобы удаленно:
1. Отправлять пользователям сообщения. 2. Сбрасывать локальный кэш. 3. Запрашивать версию клиента. Сообщения обрабатываются у клиента в методе Info::onEventGoingIdle. Рекомендую класс Info заливать только после компиляции остальной части проекта. В параметры пользователя добавлена возможность отключить обработку (она может мешать при отладке). SharedProject_ClientMessage_OK.rar Последний раз редактировалось Bega; 20.12.2010 в 12:04. |
|
|
За это сообщение автора поблагодарили: Zabr (1), sukhanchik (10), Logger (7), Ace of Database (4), Poleax (5), gl00mie (10), farlander (1), Андрей К. (1), driller (1), d&m (1), d_alexe (1). |
20.12.2010, 12:57 | #4 |
Сам.AX
|
Или если самому не лень заниматься, и не нужны вкусности предложенные Bega, то добавляем к пользователю флажок «needClearCash». Для запуска на клиенте вешаем на Application.startupPost() или Info.startupPost() проверку этого флажка для текущего пользователя, если нужно чистим, как сказано здесь и снимаем флажок. При необходимости вновь, выставляем этот флажок для всех.
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам." Поль Валери |
|
|
За это сообщение автора поблагодарили: mazzy (2), farlander (1), Kabardian (2). |
20.12.2010, 13:20 | #5 |
Участник
|
|
|
20.12.2010, 13:23 | #6 |
Участник
|
Цитата:
Да это проект под DAX2009. В 4.0 не проверял, думаю нет причин, чтобы не работало. |
|
20.12.2010, 14:21 | #7 |
Модератор
|
Цитата:
Сообщение от Bega
Сделал небольшой функционал для того чтобы удаленно:
1. Отправлять пользователям сообщения. 2. Сбрасывать локальный кэш. 3. Запрашивать версию клиента. Сообщения обрабатываются у клиента в методе Info:nEventGoingIdle. Рекомендую класс Info заливать только после компиляции остальной части проекта. В параметры пользователя добавлена возможность отключить обработку (она может мешать при отладке). Поясните, что за флаг "Отключить обработку клиентских сообщений (ОК)" Кнопка "Запросить версию" не обновляет данные по запросу. Отработал только один раз, после был выбран сброс кеша. Теперь запросить версию показывает данные.
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
20.12.2010, 14:26 | #8 |
Участник
|
Цитата:
Сообщение от Poleax
Можно в проект закинуть \Data Dictionary\Base Enums\FormWindowType он у меня без меток, и на форме выглядит очень куцо.
Поясните, что за флаг "Отключить обработку клиентских сообщений (ОК)" Кнопка "Запросить версию" не обновляет данные по запросу. Отработал только один раз, после был выбран сброс кеша. Теперь запросить версию показывает данные. После запроса версии нужно в форме активных пользователей нажать кнопку Обновить - клиенты обрабатывают сообщения не сразу, а при простое системы, так что может пройти несколько секунд. |
|
20.12.2010, 14:38 | #9 |
Модератор
|
Цитата:
Сообщение от Bega
Удалите поле FormWindowType, к этому проекту оно не имеет отношения. Под рукой нет абсолютно чистой системы, поставлю, выложу.
После запроса версии нужно в форме активных пользователей нажать кнопку Обновить - клиенты обрабатывают сообщения не сразу, а при простое системы, так что может пройти несколько секунд. \Forms\SysUsersOnline\Data Sources\SysClientSessions\Methods\lastMessage_OK почистить методы ?: \Forms\SysUserSetup\Data Sources\UserInfo\Methods\validCertificate \Forms\SysUserSetup\Data Sources\UserInfo\Methods\validCertificate
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
22.12.2010, 11:09 | #10 |
NavAx
|
DAX 3.0. У нас у пользователей ярлык на рабочем столе на vbs скрипт (лежит в сети).
X++: Const DeleteReadOnly = True Dim Shell, fso, WshNetwork, AOS Set fso = CreateObject("Scripting.FileSystemObject") Set Shell = CreateObject("WScript.Shell") Set WshNetwork = WScript.CreateObject("WScript.Network") ' Очистка кэша mask = Shell.ExpandEnvironmentStrings("%UserProfile%\Local Settings\Application Data\*.aoc") If fso.FileExists(mask) Then fso.DeleteFile mask, DeleteReadOnly Shell.run("\\Server\dfs\AxClientStart\ok.axc") WScript.Sleep 1000 Set Shell = Nothing Set fso = Nothing Set WshNetwork = Nothing |
|
22.12.2010, 11:52 | #11 |
MCT
|
а для Vista и выше? там ведь путь уже другой...
__________________
Sometimes there is a moment as you are awakening - when you become aware of the real world around you, - but you are still dreaming. - You may think you can fly but you do better not try. |
|
22.12.2010, 12:04 | #12 |
NavAx
|
|
|
22.12.2010, 13:45 | #13 |
Участник
|
Кнопка вызывает простейший класс с таким кодом (для 4.0):
X++: xSession::removeAOC(); SysTreeNode::refreshAll(); SysFlushDictionary::doFlush(); SysFlushAOD::doFlush(); xSession::updateAOC();
__________________
Ivanhoe as is.. |
|
22.12.2010, 13:51 | #14 |
Участник
|
В 2009-й использую:
X++: xSession::removeAOC(); SysTreeNode::refreshAll(); SysFlushDictionary::main(null); SysFlushAOD::main(null); SysFlushData::main(null); xSession::updateAOC(); |
|
22.12.2010, 14:30 | #15 |
Модератор
|
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
27.02.2011, 23:25 | #16 |
Боец
|
см. также стандартную реализацию чистки кэша для АОСа (нескольких АОСов):
Каждый раз, когда мы выполняем такие действия как "Обновить AOD", "Обновить словарь данных" и т.д., АОС (ы) получает соответствующую команду посредством вызова метода SysEvent::fireEvent(SysEventType::XXXX); в классах SysFlushAOD, SysFlushData C помощью класса SysEventHandler АОС сканирует таблицу SysEvent на наличие команд и исполняет их. Запускается этот огород здесь: \Classes\Application\new Наверное этот механизм можно использовать и для клиентских сессий, подпилив совсем чуть-чуть. |
|
28.02.2011, 09:57 | #17 |
Участник
|
Никто не сталкивался с такой проблемой?: очищаем кэш, пользователь закрывает приложение, запускает снова и получает ошибку:
Чаще всего это происходит на Windows 7 но также бывает и на XP. Опытным путем выяснили, что ошибка возникает после SysFlushAOD::main(null), а именно после SysFlushAOD::doFlush() внутри main(). Лечится это только ручным удалением кэша с диска. Версия DAX2009 SP1 RU6. Последний раз редактировалось Bega; 28.02.2011 в 10:07. |
|
06.06.2011, 12:29 | #18 |
Участник
|
Странно, я использую такой код (см. ниже), проблем с открытием клиентов пока не было, хотя есть ощущение что формы не обновляются. DAX 2009 SP1 RU6.
X++: xSession::removeAOC(); SysTreeNode::refreshAll(); SysFlushDictionary::doFlush(); SysFlushAOD::doFlush(); xSession::updateAOC();
__________________
Ivanhoe as is.. |
|
06.06.2011, 12:33 | #19 |
Участник
|
Цитата:
Сообщение от Ivanhoe
Странно, я использую такой код (см. ниже), проблем с открытием клиентов пока не было, хотя есть ощущение что формы не обновляются. DAX 2009 SP1 RU6.
X++: xSession::removeAOC(); SysTreeNode::refreshAll(); SysFlushDictionary::doFlush(); SysFlushAOD::doFlush(); xSession::updateAOC(); |
|
Теги |
aoc, ax2009, активные пользователи, законченный пример, кэш, полезное |
|
|