|
|
#1 |
|
MCTS
|
Коллеги,
Смотрел один отчет (процессинг онли), увидел интересную конструкцию: В отчете один датаайтем: Транзакция (так и называется, это LS Retail). В датайатеме стоит сортировка по дате (не первичный ключ). В триггере OnPreDataItem следующий код (условно): Код: IF FIND('-') THEN REPEAT
Найти записи в связанных таблицах (ТранзакцияСтроки)
Скопировать записи из связанных таблиц в соответствующие архивные таблицы
Удалить записи в связанных таблицах
Скопировать записи таблицы Транзакция в архивную таблицу
Удалить записи из таблицы транзакция
UNTIL NEXT=0; |
|
|
|
|
#2 |
|
Участник
|
Цитата:
Сообщение от apanko
Коллеги,
Смотрел один отчет (процессинг онли), увидел интересную конструкцию: В отчете один датаайтем: Транзакция (так и называется, это LS Retail). В датайатеме стоит сортировка по дате (не первичный ключ). В триггере OnPreDataItem следующий код (условно): Код: IF FIND('-') THEN REPEAT
Найти записи в связанных таблицах (ТранзакцияСтроки)
Скопировать записи из связанных таблиц в соответствующие архивные таблицы
Удалить записи в связанных таблицах
Скопировать записи таблицы Транзакция в архивную таблицу
Удалить записи из таблицы транзакция
UNTIL NEXT=0;Хотя могу сделать не очень умное предположение - в таком случае на SQL будет меньше чтений из таблиц. Хотя с другой стороны - почем они тогда не сделали "разделение" по системам. |
|
|
|
|
#3 |
|
Участник
|
Такой цикл, написанный в PreDataItem отрабатывет быстрее, если писать в OnAfterGetRecord.
Скорее всего для быстродействия так и сделано. |
|
|
|
|
#4 |
|
Участник
|
|
|
|
|
|
#5 |
|
Участник
|
Проверено на личном опыте.
Можете сами проверить - написать в PreDataItem цикл и посмотреть, за сколько он отработает, и за сколько этот же цикл пройдет по AfterGetRecord. |
|
|