30.06.2011, 10:35 | #21 |
Участник
|
|
|
30.06.2011, 14:55 | #22 |
Участник
|
Судя по всему где то на формочке выведены итоги по текущим фильтрам.
Если юзерам они не нужны (думаю не нужны - все можно вытащить в фин. отчеты) - убрать весь №%"?;код, если не нужны - переписать заново. В 99 процентах случаях сработает calcsums с текущим ключем, для остальных случаев можно посчитать через цикл. |
|
30.06.2011, 16:11 | #23 |
Участник
|
Судя по коду на триггерах OnFindRecord и OnNextRecord, в качестве источника данных для формы 20 выступает временная таблица TempGLEntry. Из кода не совсем понял как и когда она заполняется. Может быть причина в алгоритме формирования временной таблицы?
З.Ы. Код интересно написан (переменные), почти венгерская запись. Я такую использую, только Record (да и остальные типы данных) я тоже помечаю l_rec или g_rec.
__________________
MBS Certified Master in Navision Developer |
|
30.06.2011, 17:24 | #24 |
Участник
|
|
|
30.06.2011, 17:39 | #25 |
Administrator
|
Цитата:
анализируем, прежде всего, на предмет времени старта той или иной строчки. цвет не важен. если строка 85 запустилась на 20 секунд позже строки 84, то в 84-й строке какая-то фигня, которая выполняется 20 секунд. если на форме 30 строчек, то эти 20 секунд * 30 строчек и вот ваши ожидания открытия формочки. |
|
01.07.2011, 12:58 | #26 |
Участник
|
Цитата:
Сообщение от Sancho
Цитата:
анализируем, прежде всего, на предмет времени старта той или иной строчки. цвет не важен. если строка 85 запустилась на 20 секунд позже строки 84, то в 84-й строке какая-то фигня, которая выполняется 20 секунд. если на форме 30 строчек, то эти 20 секунд * 30 строчек и вот ваши ожидания открытия формочки. Время Операция Но. Имя функции Номер параметра Параметр Номер Данные 10:23:59 6650 FIND/NEXT 100 Elapsed Time (ms) 10:23:59 6651 FINDFIRST 1 Table 21 Cust. Ledger Entry 10:23:59 6651 FINDFIRST 3 Key Клиент Но.,Открыта,Положительна,Дата Оплаты,Код Валюты,Операция Но. 10:23:59 6651 FINDFIRST 6 Filter Клиент Но.:К04972, Открыта:Да, Положительна:Да 10:23:59 6651 FINDFIRST 14 Source Object Form 12406 Клиент Фин. Оборот. Ведомость 10:23:59 6651 FINDFIRST 15 Source Trigger/Function CriticalDatePayment := fn_CriticalDatePayment() 10:23:59 6651 FINDFIRST 16 Source Line No. 101 10:23:59 6651 FINDFIRST 17 Source Text IF l_recPaymentTerms.FIND('-') THEN BEGIN 10:23:59 6651 FINDFIRST 33 SQL Status ID: 369135;Reused: 2188;Prepared;Default;Top;Rows: 1;Cached;Browse 10:23:59 6651 FINDFIRST 100 Elapsed Time (ms) 10:24:04 6652 FIND/NEXT 1 Table 13 Salesperson/Purchaser а при проваливании по дрилдаун в поле "Дебет сумма (руб)" "зависание" происходит здесь: Время Операция Но. Имя функции Номер параметра Параметр Номер Данные 11:41:00 7757 FIND/NEXT 100 Elapsed Time (ms) 93 11:41:00 7758 FIND/NEXT 1 Table 17 G/L Entry 11:41:00 7758 FIND/NEXT 2 Search Method < 11:41:00 7758 FIND/NEXT 3 Key Дата Учета='14.06.11',Операция Но.='3241132' 11:41:00 7758 FIND/NEXT 6 Filter Дата Учета:01.06.11..30.06.11, Дебет Сумма:<>0, Фин. Счет Но.:62-100, Источник Но.:К04982, Тип Источника:Клиент 11:41:00 7758 FIND/NEXT 14 Source Object Form 20 Фин. Книга Операций 11:41:00 7758 FIND/NEXT 15 Source Trigger/Function Form - OnNextRecord() 11:41:00 7758 FIND/NEXT 16 Source Line No. 70 11:41:00 7758 FIND/NEXT 17 Source Text END ELSE 11:41:00 7758 FIND/NEXT 30 SQL Statement SELECT * FROM "ЗАО Чайная компания №1$G_L Entry" WITH (READUNCOMMITTED) WHERE (("Posting Date">=? AND "Posting Date"<=?)) AND (("Debit Amount"<>?)) AND (("G_L Account No_"=?)) AND (("Source No_"=?)) AND (("Source Type"=?)) AND "Posting Date"=? AND 11:41:00 7758 FIND/NEXT 31 SQL Plan Filter[2,1];Nested Loops[3,2];Index Seek($1)[4,3];Clustered Index Seek(ЗАО Чайная компания №1$G_L Entry$0)[6,3] 11:41:00 7758 FIND/NEXT 32 SQL Index Фин. Счет Но.,Дата Учета,Операция Но. 11:41:13 7758 FIND/NEXT 33 SQL Status ID: 371603;New;Direct;Fast;Restricted;Rows: 1;UpdateNoLocks 11:41:14 7758 FIND/NEXT 50 Search Result 11:41:14 7758 FIND/NEXT 100 Elapsed Time (ms) 13891 11:41:14 7759 FIND/NEXT 1 Table 13 Salesperson/Purchaser Вся ещё проблема в том, что я пока с SQL "на ты", поэтому оперативно понять "куда копать" не получается, буду благодарен за любую помощь. П.С. Может кто-нибудь из форумчан посоветует литературу по данному вопросу? Курсы? Хочется научиться разбираться в подобных вопросах. П.П.С. Видимо, надо изучать SQL для начала... |
|
01.07.2011, 13:43 | #27 |
Administrator
|
SELECT *
FROM G_L Entry" WITH (READUNCOMMITTED) WHERE (("Posting Date">=? AND "Posting Date"<=?)) AND (("Debit Amount"<>?)) AND (("G_L Account No_"=?)) AND (("Source No_"=?)) AND (("Source Type"=?)) AND "Posting Date"=? AND ... это поля, на которые накладывются фильтры а теперь смотрим на ключик: SQL Index Фин. Счет Но.,Дата Учета,Операция Но. отсюда вывод: ключик у нас один, а условия другие, ключик НЕ ТОТ (не оптимальный). что делать? открыть 17-ю в дизайне и посмотреть ДРУГИЕ КЛЮЧИКИ, выбрать тот в котором перечислены поля, по которым накладываются фильтры. если он есть - хорошо. если нет... хм... можно попробовать сделать, но это может быть чревато. в любом случае перед запуском этого кусочка кода написать: GLEntry.SETCURRENTKEY(Field1, Field3, Field27...), т.е. подходящий ключик. |
|
01.07.2011, 14:06 | #28 |
Участник
|
В том-то и дело, что нет такого ключа есть следующие:
Key Entry No. G/L Account No.,Posting Date G/L Account No.,Business Unit Code,Global Dimension 1 Code,Global Dimension 2 Code,Close Income Statement Dim. ID,Posting Date Document No.,Posting Date Transaction No. Source Type,Source No.,G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code,Business Unit Code,Posting Date,Bal. Account Type IC Partner Code G/L Account No.,Bal. Account No.,Bal. Account Type,Document No.,Posting Date Posting Date а фильтр накладывается такой: Поле Фильтр Дата Учета **.**.**..**.**.** Дебет Сумма <>0 Фин. Счет Но. **-*** Источник Но. К00*** Тип Источника Клиент |
|
01.07.2011, 14:10 | #29 |
Участник
|
"если нет... хм... можно попробовать сделать, но это может быть чревато."
- всё станет только хуже??? |
|
01.07.2011, 17:40 | #30 |
Участник
|
Или не станет . Надо пробовать.
Запустите еще раз монитор клиента, проделайте действия, вызывающие тормоза, остановите монитор, отфильтруйтесь по типу SQL Statetment скопируйте и запостите на форум. |
|
01.07.2011, 22:50 | #31 |
Administrator
|
|
|
03.07.2011, 15:33 | #32 |
Участник
|
В ключе
Код: Source Type,Source No.,G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code,Business Unit Code,Posting Date,Bal. Account Type Проверьте, установлено ли у этого ключа свойство Maintain SQL Index. И еще я бы посоветовал взять стандартную форму из базы кронуса, залить ее в диапозон за 50000 и попробовать из оборотки ее открывать - будут ли какие-то изменения или нет. |
|
04.07.2011, 10:36 | #33 |
Участник
|
Цитата:
Сообщение от .Quattro.
В ключе
Код: Source Type,Source No.,G/L Account No.,Global Dimension 1 Code,Global Dimension 2 Code,Business Unit Code,Posting Date,Bal. Account Type Проверьте, установлено ли у этого ключа свойство Maintain SQL Index. И еще я бы посоветовал взять стандартную форму из базы кронуса, залить ее в диапозон за 50000 и попробовать из оборотки ее открывать - будут ли какие-то изменения или нет. |
|