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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.03.2005, 17:06   #1  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Возможно ли создание такой же формы как и стандартная форма при вызове фильтра таблицы(Ctrl+F7)?
__________________
MBS Certified Master in Navision Developer
Старый 11.03.2005, 17:11   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
"Такой же" - это чтобы можно было выбрать, какое поле в левую часть зафигачить? Тогда, наверное, с помощью таблички Fields можно.
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 11.03.2005, 17:21   #3  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
Предлагаю посмотреть в сторону использования стандартной закладки с фильтрами в реквест-форме отчета.
В некоторых случаях вполне годится вместо такой новой формы.
Старый 11.03.2005, 17:32   #4  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Дуд, с левой частью мне все ясно, я не могу понять каким образом значения в правой задавать, как этот текстбокс определить.
Wizard, не пойдет, аляповато, но ес-сно проще.
__________________
MBS Certified Master in Navision Developer
Старый 11.03.2005, 17:45   #5  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
А в чем именно проблема?
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 11.03.2005, 17:56   #6  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
А проблема видимо в том, чтобы программно менять в текстбоксе формат ввода (как минимум). А как максимум - чтобы была полная уверенность, что ты редактируешь число, дату, код или текст
__________________
С уваженем,
rootadmin
Старый 11.03.2005, 17:56   #7  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Проблема в том, что не могу понять каким образом определить СоусЭкспрешн для правой части. Чтоб туда, соответственно полям, ставить значения фильтра. И потом всю эту фигню передать надо будет в функцию (но это не проблема). Вся эта штука с фильтрами необходима для оптимизации работы, т.к. стандартная фильтрация сильно тормозит. Конечно, я могу сделать тупо форму как в отчетах, но хотца однообразия в стиле Navision.
__________________
MBS Certified Master in Navision Developer
Старый 11.03.2005, 18:02   #8  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
Наверное полной аналогии не получится. Хотя бы потому, что если связь с таблицей есть - выводится лукапная стрелочка. Если дата или число - не выводится. Либо создвать дополнительную таблицу с нужными полями и связями и т.д. (под нашу таблицу), делать ее темповой и с ней уже работать.
__________________
С уваженем,
rootadmin
Старый 11.03.2005, 18:03   #9  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
может всё таки поделишься своей идеей?
для чего эта форма нужна?
что такое "сильно тормозит фильтрация"?

может отговорю...
Старый 11.03.2005, 18:13   #10  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Понятно. Всем спасибо. Если такую же форму не получится сделать без дополнительных таблиц, пойду другим путём.
to Wizard
Сильно тормозит, в данном случае означает, что при наложенном стандартным способом фильтре перемещение по записям очень замедленно происходит. В моем случае уже сделана оптимизация и работает в 10, если не больше раз быстрее. Вопрос был только в организации пользовательского интерфейса.
__________________
MBS Certified Master in Navision Developer
Старый 11.03.2005, 18:16   #11  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
ну так проблема-то не в способе накладывания фильтров, а в способе поиска записей...
если действительно такой выигрыш в скорости - можно переписать триггеры OnFindRecord и OnNextRecord
Старый 11.03.2005, 18:29   #12  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Спасибо, я об этом не думал, надо будет посмотреть. Но проблема все-таки в способе наложения фильтра. В стандартном варианте он явно накладывается на мою основную таблицу. У меня же на основании другой таблицы маркируются записи в основной таблице и, соответственно, в форме показываются только промаркированные.
__________________
MBS Certified Master in Navision Developer
Старый 11.03.2005, 18:36   #13  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
т.е. я так понимаю, что в этой основной таблице есть какое-то поле (несколько), при наложении фильтра на которое поиск записей долгий, и есть обходной способ реализации этого фильтра.
Но тем не менее хочется сохранить пользовательскую функциональность наложения фильтра на любое поле.

Ну так ровно это и надо сделать в упомянутых мной триггерах.
Сложности там особой нет, однако если нет опыта - понадобится некоторая настойчивость и аккуратность.

и ещё, к слову... отображение маркированных записей работает быстро только при сортировке по первичному ключу, в связи с чем рекомендую не маркировать записи, а во временную таблицу их собирать (если только их не слишком много)
Старый 11.03.2005, 18:42   #14  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Че-то совсем туплю к вечеру...
Возвращаясь к форме: а нельзя ручками написать лукап, в поле соурсэкспрешн - текстовый, при лукапе класть туда FORMAT, а потом, ориентируясь на тип поля (он есть в Fields) разбирать его как надо?
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 11.03.2005, 18:55   #15  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
можно конечно написать лукап, но полной эмуляции Ctrl+F7 не получится всё равно, поскольку, как было сказано выше - способ заполнения поля сильно зависит от самого этого поля - от типа данных, от описания реляций, от триггеров его обработки и т.п.
ну нет возможности на лету подменить SourceExpression в колонке..
как, например, комбобокс для Option сделать на текстовом сурсе?
Старый 11.03.2005, 19:07   #16  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Полной - нет
Но до некоторой степени извратиться можно...
Типа например сделать не одно, а пять полей и делать видимым нужное в зависимости от типа (текст, код, дата, интегер, риал)...
Или еще как извратнуться...
Но вообще изврат конечно
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 14.03.2005, 16:51   #17  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Если использовать вышеупомянутые тригеры, то как работать с временной таблицей? Работаю с таблицей товаров. Написал ниже приведенный код, записи из временной таблицы не отображаются. В чем ошибка? Почему у меня Found всегда нет? Не пойму, что нужно делать!
OnFindRecord
<div class='CALtop'>C/AL</div><div class='CAL'>
IF (Условие для создания вр.табл.) THEN BEGIN
 TempItem.COPY(Rec);
 Found := TempItem.FIND(Which);
 IF Found THEN
   Rec := TempItem;
 EXIT(Found);
END ELSE
 EXIT(FIND(Which));</div>
OnNextRecord
<div class='CALtop'>C/AL</div><div class='CAL'>
IF (Условие для создания вр.табл.) THEN BEGIN
 TempItem.COPY(Rec);
 ResultSteps := TempItem.NEXT(Steps);
 IF ResultSteps <> 0 THEN
   Rec := TempItem;
 EXIT(ResultSteps);
END ELSE
 EXIT(NEXT(Steps));
</div>
__________________
MBS Certified Master in Navision Developer
Старый 15.03.2005, 01:19   #18  
Wizard_imported is offline
Wizard_imported
Участник
 
157 / 10 (1) +
Регистрация: 25.11.2004
Роман, Ваш код, касающийся триггеров получения данных, выглядит вполне работоспособным. Думаю, дело в наполнении временной таблицы.
Я набросал примерчик, в котором демонстрируется подмена фильтра по полю "Комплект" в справочнике товаров.
Код:
OnFindRecord(Which : Text[1024]) : Boolean
IF GETFILTER("Bill of Materials") = FORMAT(TRUE) THEN BEGIN
 IF NOT BOMcollected THEN
    CollectBills();
 TempItem.COPY(Rec);
 Found := TempItem.FIND(Which);
 IF Found THEN
   Rec := TempItem;
 EXIT(Found);
END ELSE
 EXIT(FIND(Which));

OnNextRecord(Steps : Integer) : Integer
IF GETFILTER("Bill of Materials") = FORMAT(TRUE) THEN BEGIN
 TempItem.COPY(Rec);
 ResultSteps := TempItem.NEXT(Steps);
 IF ResultSteps <> 0 THEN
   Rec := TempItem;
 EXIT(ResultSteps);
END ELSE
 EXIT(NEXT(Steps));

//---------------------------------------

CollectBills()
 IF BOM.FIND('-') THEN REPEAT
    ParentItem.GET(BOM."Parent Item No.");
    TempItem := ParentItem;
    TempItem."Search Description" := 'Temp '+TempItem."No.";
    TempItem.INSERT;
    BOM."Line No." := 2147483647; //Maximum Integer
 UNTIL BOM.NEXT=0;
 BOMcollected := TRUE;
Вложения
Тип файла: fob MyFilter.fob (12.3 Кб, 442 просмотров)
Старый 15.03.2005, 10:00   #19  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
to Wizard
Спасибо большое за пример! Исходя из него буду эксперементировать со своей формой
__________________
MBS Certified Master in Navision Developer
Старый 15.03.2005, 15:02   #20  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Круто! Работает даже быстрее, чем по промаркированным записям. Правда глючит иногда при смене фильтра, но с этим я разберусь.
__________________
MBS Certified Master in Navision Developer
 


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

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

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