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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2007, 18:50   #10  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Цитата:
Сообщение от Greggy Посмотреть сообщение
путем различных манипуляций с таблицей Payroll Journal Line и SQL сервером ... удалось добиться скорости перерасчета 2 минуты на человека ... но все равно это много
Была похожая проблема, обрати внимание на CU 14800 функцию MoveLines.
Я переделал так:


WITH PayrollJnlLine DO BEGIN
RESET;
SETRANGE(Template,Template);
SETRANGE("Batch Name","Batch Name");

JournalDimension.RESET;
JournalDimension.SETRANGE("Table ID",14820);
JournalDimension.SETRANGE("Journal Template Name",Template);
JournalDimension.SETRANGE("Journal Batch Name","Batch Name");

IF IncludCurLine THEN
SETFILTER("Line No.",'>=%1',"Line No.")
ELSE
SETFILTER("Line No.",'>%1',"Line No.");
IF FIND('+') THEN
BEGIN
REPEAT
PayrollJnlLine2 := PayrollJnlLine;
PayrollJnlLine2."Line No." := "Line No." + 10000;
PayrollJnlLine2.INSERT;

JournalDimension.SETRANGE("Journal Line No.","Line No.");
IF JournalDimension.FIND('+') THEN
REPEAT
JournalDimension2 := JournalDimension;
JournalDimension2."Journal Line No." := PayrollJnlLine2."Line No.";
// JournalDimension.DELETE;
JournalDimension2.INSERT;
//
UNTIL JournalDimension.NEXT(-1) = 0;
// UNTIL JournalDimension.FIND('+');

DELETE(TRUE);
// UNTIL NEXT(-1) = 0;
UNTIL FIND('+');
END;
END;
 


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

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

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