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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2004, 11:29   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
? Как закэшировать таблицу для одного клиента
Занимаюсь закрытием склада (Ax3 sp3)
Обратил внимание на большое кол-во вызовов InventTable::find(..). Хочется от них избавиться путем изменения режима кэширования таблицы (cacheLookup = Found), но по некоторым причинам этого делать нельзя.

Можно ли закэшировать InventTable для конкретного сеанса (клиента) без изменения св-ва CacheLookup и переписования вызовов find()?
Старый 16.09.2004, 12:41   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Так ведь на InventTable уже стоит CacheLookup=Found ?

А чего надо добиться? Закэшировать таблицу целиком (CacheLookup=EntireTable) только для одного клиента?

SysSQLEntireCache::setTableCache(_контейнер_TableId, _userId = curuserId)
Старый 27.09.2004, 19:49   #3  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Продолжение
У нас происходит процесс переноса с 2.5 на 3.0. Так вот, в 2.5 у InventTable св-во CacheLookup = None, кроме того туда были добавлены поля, значения которых часто меняются и критичны для ценообразования (цена последнего прихода).
Хотелось бы сохранить прелесть кэширования и в то же время не порушить ценообразование.
После раздумий и опытов было решено перечитывать InventTable в алгоритме ценообразования и оставить CacheLookup = Found.

Кстати, приведенный код ничего не дал - таблица не кэшировалась.
Если надо закэшировать какую-то таблицу, то можно использовать объект RecordViewCache.
Старый 28.09.2004, 01:13   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: Продолжение
Цитата:
Изначально опубликовано Wamr
У нас происходит процесс переноса с 2.5 на 3.0. Так вот, в 2.5 у InventTable св-во CacheLookup = None, кроме того туда были добавлены поля, значения которых часто меняются и критичны для ценообразования (цена последнего прихода).
как часто меняются и насколько критичны?

"тонкие" клиенты обновляли бы EntireTable кэш даже сидя на разных AOS, и довольно оперативно. Правда, если номенклатуры десятки тысяч наименований и изменения частые, такое кэширование себе дороже

Цитата:
Кстати, приведенный код ничего не дал - таблица не кэшировалась


похоже, это будет работать только для таблиц с EntireTableCache, у которых кэширование для пользователя отключено
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Максимальное количество пользователей, использующих одного клиента Antant DAX: Администрирование 2 19.10.2007 12:53
Отборка на разных складах, Отгрузка с одного. skv DAX: Функционал 21 19.02.2007 18:16
Перенос задолженности с одного поставщика/клиента на другого Лучана DAX: Функционал 2 29.06.2006 16:10
Заказ на одного Клиента - отгрузка и получение денег другому skv DAX: Функционал 3 19.07.2005 21:07
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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