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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.06.2011, 10:35   #21  
Гонков Владислав is offline
Гонков Владислав
Участник
Аватар для Гонков Владислав
 
35 / 10 (1) +
Регистрация: 17.09.2008
Цитата:
Сообщение от Гонков Владислав Посмотреть сообщение
Цитата:
Сообщение от Sancho Посмотреть сообщение
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Что дало Выполнение Кода?
+1
автор! Сервис - Монитор клиента - Старт!
формочку - запустить!
Монитор клиента - стоп!
и зырим, зырим, анализируем...
помеченный цветом код - тот, который был выполнен, т.е. 100% отработал?
видимо, красным цветом помечен код, который не был выполнен...
Старый 30.06.2011, 14:55   #22  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Судя по всему где то на формочке выведены итоги по текущим фильтрам.
Если юзерам они не нужны (думаю не нужны - все можно вытащить в фин. отчеты) - убрать весь №%"?;код, если не нужны - переписать заново.
В 99 процентах случаях сработает calcsums с текущим ключем, для остальных случаев можно посчитать через цикл.
Старый 30.06.2011, 16:11   #23  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Судя по коду на триггерах OnFindRecord и OnNextRecord, в качестве источника данных для формы 20 выступает временная таблица TempGLEntry. Из кода не совсем понял как и когда она заполняется. Может быть причина в алгоритме формирования временной таблицы?

З.Ы.
Код интересно написан (переменные), почти венгерская запись. Я такую использую, только Record (да и остальные типы данных) я тоже помечаю l_rec или g_rec.
__________________
MBS Certified Master in Navision Developer
Старый 30.06.2011, 17:24   #24  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Роман Посмотреть сообщение
З.Ы.
Код интересно написан (переменные), почти венгерская запись. Я такую использую, только Record (да и остальные типы данных) я тоже помечаю l_rec или g_rec.
Этой записью пользуются многие разработчики в Наве. Я тоже пишу l_rec и прочее. Удобно, однако
Старый 30.06.2011, 17:39   #25  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от Гонков Владислав Посмотреть сообщение
видимо, красным цветом помечен код, который не был выполнен...
хм..
анализируем, прежде всего, на предмет времени старта той или иной строчки.
цвет не важен.
если строка 85 запустилась на 20 секунд позже строки 84, то в 84-й строке какая-то фигня, которая выполняется 20 секунд.
если на форме 30 строчек, то эти 20 секунд * 30 строчек и вот ваши ожидания открытия формочки.
Старый 01.07.2011, 12:58   #26  
Гонков Владислав is offline
Гонков Владислав
Участник
Аватар для Гонков Владислав
 
35 / 10 (1) +
Регистрация: 17.09.2008
Цитата:
Сообщение от 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  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
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  
Гонков Владислав is offline
Гонков Владислав
Участник
Аватар для Гонков Владислав
 
35 / 10 (1) +
Регистрация: 17.09.2008
В том-то и дело, что нет такого ключа есть следующие:
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  
Гонков Владислав is offline
Гонков Владислав
Участник
Аватар для Гонков Владислав
 
35 / 10 (1) +
Регистрация: 17.09.2008
"если нет... хм... можно попробовать сделать, но это может быть чревато."
- всё станет только хуже???
Старый 01.07.2011, 17:40   #30  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Или не станет . Надо пробовать.
Запустите еще раз монитор клиента, проделайте действия, вызывающие тормоза, остановите монитор, отфильтруйтесь по типу
SQL Statetment скопируйте и запостите на форум.
Старый 01.07.2011, 22:50   #31  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от Гонков Владислав Посмотреть сообщение
"если нет... хм... можно попробовать сделать, но это может быть чревато."
- всё станет только хуже???
учет будет происходить чуть медленнее, объем базы будет чуть быстрее расти, формочка будет открываться быстрее.
взвешиваем эти факторы.
Старый 03.07.2011, 15:33   #32  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Цитата:
Сообщение от Гонков Владислав Посмотреть сообщение
В том-то и дело, что нет такого ключа
В ключе
Код:
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  
Гонков Владислав is offline
Гонков Владислав
Участник
Аватар для Гонков Владислав
 
35 / 10 (1) +
Регистрация: 17.09.2008
Цитата:
Сообщение от .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 и попробовать из оборотки ее открывать - будут ли какие-то изменения или нет.
Да, данное свойство у Ключа есть, причём "по умолчанию" (это свойство также установлено "по умолчанию" у остальных ключей кроме последнего: "Posting Date")
 


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

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

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