|  11.03.2005, 17:06 | #1 | 
| Участник | 
			
			Возможно ли создание такой же формы как и стандартная форма при вызове фильтра таблицы(Ctrl+F7)?
		 
				__________________ MBS Certified Master in Navision Developer | 
|  | 
|  11.03.2005, 17:11 | #2 | 
| NavAx | 
			
			"Такой же" - это чтобы можно было выбрать, какое поле в левую часть зафигачить?   Тогда, наверное, с помощью таблички Fields можно. 
				__________________ "Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери | 
|  | 
|  11.03.2005, 17:21 | #3 | 
| Участник | 
			
			Предлагаю посмотреть в сторону использования стандартной закладки с фильтрами в реквест-форме отчета. В некоторых случаях вполне годится вместо такой новой формы. | 
|  | 
|  11.03.2005, 17:32 | #4 | 
| Участник | 
			
			Дуд, с левой частью мне все ясно, я не могу понять каким образом значения в правой задавать, как этот текстбокс определить. Wizard, не пойдет, аляповато, но ес-сно проще. 
				__________________ MBS Certified Master in Navision Developer | 
|  | 
|  11.03.2005, 17:45 | #5 | 
| NavAx | 
			
			А в чем именно проблема?
		 
				__________________ "Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери | 
|  | 
|  11.03.2005, 17:56 | #6 | 
| Участник | 
			
			А проблема видимо в том, чтобы программно менять в текстбоксе формат ввода (как минимум). А как максимум - чтобы была полная уверенность, что ты редактируешь число, дату, код или текст
		 
				__________________ С уваженем, rootadmin | 
|  | 
|  11.03.2005, 17:56 | #7 | 
| Участник | 
			
			Проблема в том, что не могу понять каким образом определить СоусЭкспрешн для правой части. Чтоб туда, соответственно полям, ставить значения фильтра. И потом всю эту фигню передать надо будет в функцию (но это не проблема). Вся эта штука с фильтрами необходима для оптимизации работы, т.к. стандартная фильтрация сильно тормозит. Конечно, я могу сделать тупо форму как в отчетах, но хотца однообразия в стиле Navision.
		 
				__________________ MBS Certified Master in Navision Developer | 
|  | 
|  11.03.2005, 18:02 | #8 | 
| Участник | 
			
			Наверное полной аналогии не получится. Хотя бы потому, что если связь с таблицей есть - выводится лукапная стрелочка. Если дата или число  - не выводится. Либо создвать дополнительную таблицу с нужными полями и связями и т.д. (под нашу таблицу), делать ее темповой и с ней уже работать.
		 
				__________________ С уваженем, rootadmin | 
|  | 
|  11.03.2005, 18:03 | #9 | 
| Участник | 
			
			может всё таки поделишься своей идеей? для чего эта форма нужна? что такое "сильно тормозит фильтрация"? может отговорю...   | 
|  | 
|  11.03.2005, 18:13 | #10 | 
| Участник | 
			
			Понятно. Всем спасибо. Если такую же форму не получится сделать без дополнительных таблиц, пойду другим путём. to Wizard Сильно тормозит, в данном случае означает, что при наложенном стандартным способом фильтре перемещение по записям очень замедленно происходит. В моем случае уже сделана оптимизация и работает в 10, если не больше раз быстрее. Вопрос был только в организации пользовательского интерфейса. 
				__________________ MBS Certified Master in Navision Developer | 
|  | 
|  11.03.2005, 18:16 | #11 | 
| Участник | 
			
			ну так проблема-то не в способе накладывания фильтров, а в способе поиска записей... если действительно такой выигрыш в скорости - можно переписать триггеры OnFindRecord и OnNextRecord | 
|  | 
|  11.03.2005, 18:29 | #12 | 
| Участник | 
			
			Спасибо, я об этом не думал, надо будет посмотреть. Но проблема все-таки в способе наложения фильтра. В стандартном варианте он явно накладывается на мою основную таблицу. У меня же на основании другой таблицы маркируются записи в основной таблице и, соответственно, в форме показываются только промаркированные.
		 
				__________________ MBS Certified Master in Navision Developer | 
|  | 
|  11.03.2005, 18:36 | #13 | 
| Участник | 
			
			т.е. я так понимаю, что в этой основной таблице есть какое-то поле (несколько), при наложении фильтра на которое поиск записей долгий, и есть обходной способ реализации этого фильтра. Но тем не менее хочется сохранить пользовательскую функциональность наложения фильтра на любое поле. Ну так ровно это и надо сделать в упомянутых мной триггерах. Сложности там особой нет, однако если нет опыта - понадобится некоторая настойчивость и аккуратность. и ещё, к слову... отображение маркированных записей работает быстро только при сортировке по первичному ключу, в связи с чем рекомендую не маркировать записи, а во временную таблицу их собирать (если только их не слишком много) | 
|  | 
|  11.03.2005, 18:42 | #14 | 
| NavAx | 
			
			Че-то совсем туплю к вечеру... Возвращаясь к форме: а нельзя ручками написать лукап, в поле соурсэкспрешн - текстовый, при лукапе класть туда FORMAT, а потом, ориентируясь на тип поля (он есть в Fields) разбирать его как надо? 
				__________________ "Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери | 
|  | 
|  11.03.2005, 18:55 | #15 | 
| Участник | 
			
			можно конечно написать лукап, но полной эмуляции Ctrl+F7 не получится всё равно, поскольку, как было сказано выше - способ заполнения поля сильно зависит от самого этого поля - от типа данных, от описания реляций, от триггеров его обработки и т.п. ну нет возможности на лету подменить SourceExpression в колонке.. как, например, комбобокс для Option сделать на текстовом сурсе? | 
|  | 
|  11.03.2005, 19:07 | #16 | 
| NavAx | 
			
			Полной - нет   Но до некоторой степени извратиться можно... Типа например сделать не одно, а пять полей и делать видимым нужное в зависимости от типа (текст, код, дата, интегер, риал)... Или еще как извратнуться... Но вообще изврат конечно   
				__________________ "Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери | 
|  | 
|  14.03.2005, 16:51 | #17 | 
| Участник | 
			
			Если использовать вышеупомянутые тригеры, то как работать с временной таблицей? Работаю с таблицей товаров. Написал ниже приведенный код, записи из временной таблицы не отображаются. В чем ошибка? Почему у меня 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 | 
| Участник | 
			
			Роман, Ваш код, касающийся триггеров получения данных, выглядит вполне работоспособным. Думаю, дело в наполнении временной таблицы. Я набросал примерчик, в котором демонстрируется подмена фильтра по полю "Комплект" в справочнике товаров. Код: 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; | 
|  | 
|  15.03.2005, 10:00 | #19 | 
| Участник | 
			
			to Wizard Спасибо большое за пример! Исходя из него буду эксперементировать со своей формой 
				__________________ MBS Certified Master in Navision Developer | 
|  | 
|  15.03.2005, 15:02 | #20 | 
| Участник | 
			
			Круто! Работает даже быстрее, чем по промаркированным записям. Правда глючит иногда при смене фильтра, но с этим я разберусь.
		 
				__________________ MBS Certified Master in Navision Developer | 
|  |