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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.05.2008, 16:46   #1  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Коллеги,

Смотрел один отчет (процессинг онли), увидел интересную конструкцию:

В отчете один датаайтем: Транзакция (так и называется, это LS Retail). В датайатеме стоит сортировка по дате (не первичный ключ).
В триггере OnPreDataItem следующий код (условно):

Код:
IF FIND('-') THEN REPEAT
  Найти записи в связанных таблицах (ТранзакцияСтроки)
  Скопировать записи из связанных таблиц в соответствующие архивные таблицы
  Удалить записи в связанных таблицах
  Скопировать записи таблицы Транзакция в архивную таблицу
  Удалить записи из таблицы транзакция
UNTIL NEXT=0;
Вопрос: почему этот код не в триггере onAfterGetRecord (без цикла разумеется)?
Старый 20.05.2008, 17:18   #2  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от apanko Посмотреть сообщение
Коллеги,

Смотрел один отчет (процессинг онли), увидел интересную конструкцию:

В отчете один датаайтем: Транзакция (так и называется, это LS Retail). В датайатеме стоит сортировка по дате (не первичный ключ).
В триггере OnPreDataItem следующий код (условно):

Код:
IF FIND('-') THEN REPEAT
  Найти записи в связанных таблицах (ТранзакцияСтроки)
  Скопировать записи из связанных таблиц в соответствующие архивные таблицы
  Удалить записи в связанных таблицах
  Скопировать записи таблицы Транзакция в архивную таблицу
  Удалить записи из таблицы транзакция
UNTIL NEXT=0;
Вопрос: почему этот код не в триггере onAfterGetRecord (без цикла разумеется)?
Я думаю, что кому-то просто захотелось свести все таблицы, связанные с данной, в едином списке (не даром сначала стоят одни фильтра, а потом выборка).
Хотя могу сделать не очень умное предположение - в таком случае на SQL будет меньше чтений из таблиц.
Хотя с другой стороны - почем они тогда не сделали "разделение" по системам.
Старый 21.05.2008, 11:18   #3  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Такой цикл, написанный в PreDataItem отрабатывет быстрее, если писать в OnAfterGetRecord.
Скорее всего для быстродействия так и сделано.
Старый 21.05.2008, 13:06   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от .Quattro. Посмотреть сообщение
Такой цикл, написанный в PreDataItem отрабатывет быстрее, если писать в OnAfterGetRecord.
Это достоверная информация? Подтверждена чем? Чем-нибудь подтверждена?
Старый 21.05.2008, 18:35   #5  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Проверено на личном опыте.
Можете сами проверить - написать в PreDataItem цикл и посмотреть, за сколько он отработает, и за сколько этот же цикл пройдет по AfterGetRecord.
 


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

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

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