|  09.10.2002, 11:12 | #1 | 
| Участник |  LookUp 
			
			Подскажите, пожалуйста! Кто-нибудь накладывал фильтр, но lookup по соседнему полю в таблице, т. е., в первом поле я выбираю группу из первой таблице, а во втором мне необходимо с помощью lookup выбрать члена этой группы, и логично, если lookup вывел только членов этой группы, а не всех, кто есть в этой таблице. | 
|  | 
|  09.10.2002, 19:49 | #2 | 
| Участник | 
			
			Фильтр накладывается при наличии relation между таблицами, в котором эти два поля задействованы. Пример: таблица WMSPallet. НО. вопрос в том, что должно быть, если в первом (соседнем) поле пусто. При наличии relation система выведет только записи у которых поле группы пустое. Если же надо чтобы фильтр в этом случае не накладывался, то есть вариант нарисования собственной формы lookupа и наложение нужных фильтров из методов формы. | 
|  | 
|  09.10.2002, 20:05 | #3 | 
| Участник |   
			
			2-ое поле может быть выбранным только после заполнения 1-ого, но, не смотря на наличие relation между этими таблицами, оно не работает и это, наверное, правильно, т. к. relation начинает работать тогда, когда открыта первая таблица (родитель), а в моем случае обе таблицы закрыты, а вибираються только Id их записей и заполняются в третью. Возможно, необходимо создать relation для этой третьей таблице???
		 | 
|  | 
|  09.10.2002, 22:21 | #4 | 
| Участник |   
			
			Я вот уже совсем ничего не понимаю....
		 | 
|  | 
|  10.10.2002, 09:32 | #5 | 
| Участник |   
			
			Есть строка в таблице в которую необходимо заполнить последовательно - сначало ID группы в первый столбец, затем следующее поле этой строки нужно заполнить ID члена принадлежащего к этой группе, но при появлении LOOKUP-а для выбора членов группы он должен вывести только строки группы выбранной в первом поле. Группы и члены групп находяться в разных таблицах и имеют между собой relation. | 
|  | 
|  10.10.2002, 10:23 | #6 | 
| Участник | 
			
			Мдаас.... Пора объясниться по терминологии, а то названия типа "первая таблица" и пр. нас далеко заведут. Берем конкретный пример, который я уже указал выше: таблица WMSPallet. В таблице заполняются поля InventLocationId и wmsLocationId. Между таблицами WMSPallet и InventLocation есть связь по расширенному типу данных InventLocationId, поэтому мы можем спокойно выбирать склад для паллеты. Между таблицами WMSLocation и InventLocation есть точно такая же связь, которая позволяет выбрать склад для каждой паллеты. А вот между таблицами WMSPallet и WMSLocation связь сделана в виде relation на таблице WMSPAllet в котором задействованы поля InventLocationId и WMSLocationId. Поэтому при выборе кода ячейки для паллеты, в lookup выводится отфильтрованный список (фильтрация по коду склада, выбранного в поле WMSPallet.InventLocationId). Насколько я понял - этого нам и надо было... | 
|  | 
|  10.10.2002, 10:25 | #7 | 
| Moderator | 
			
			В данном случае relations между таблицами ни на что не влияют, т.к. системе, открывающей lookup на каком-либо поле таблицы, совершенно наплевать на содержимое других полей этой таблицы. Но ее (систему) можно переубедить   , для чего нужно перекрыть метод lookup(), в нем использовать класс SysTableLookup, у которого изменить Query и т.д. Пример: таблица WMSLocation метод lookupLocationId() 
				__________________ Андрей. | 
|  | 
|  10.10.2002, 11:14 | #8 | 
| Участник | 
			
			Слона-то я и не увидел! Действительно, при выборе ячейки всегда вызывается форма WMSLocationIdLookup в которой обрабатывается контекст вызова, примерчик приведен не очень корректный   НО! Relation между таблицами действуют так, как я написал выше. Надо только, чтобы связи типа у поля в котором мы делаем выбор, не перекрывали связи таблицы. | 
|  | 
|  10.10.2002, 11:20 | #9 | 
| Участник |   
			
			Насколько я понял, связями тут ничего не сделаешь, единственный способ перекрывать метод, чего, собственно, я хотел избежать.
		 | 
|  | 
|  10.10.2002, 11:55 | #10 | 
| Участник |   
			
			Приложен примерчик в котором нет ни одной строки кода и при этом, при выборе значения в поле tst_List.elementId значения фильтруются по полю tst_List.groupId.
		 | 
|  | 
|  10.10.2002, 12:13 | #11 | 
| Moderator | 
			
			Сорри, был неправ, поторопился с ответом! Relations forever!    
				__________________ Андрей. | 
|  | 
|  10.10.2002, 14:44 | #12 | 
| Участник |   
			
			Я не совсем понял фразу - "Надо только, чтобы связи типа у поля в котором мы делаем выбор, не перекрывали связи таблицы." если можно поподробнее. И зачем сделан тип tst_elementIdLookup в примере, или это какраз то, о чем говорит эта фраза???????? | 
|  | 
|  10.10.2002, 15:15 | #13 | 
| Участник | 
			
			Все, спасибо, я все понял, вся фишка в отсутствии релейшина типа поля tst_elementId, а  tst_elementIdLookup не нужен, он только путает, и без него все работает.
		 | 
|  | 
|  11.10.2002, 15:34 | #14 | 
| Участник | Классный пример. 
			
			НО!  Есть одно но! В результате таких манипуляций со связями нарушается стандартное поведение Аксапты. При таком программировании нельзя будет перейти к основной таблице для ее редактирования! (ctrl-Alt-F4) Это происходит потому, что типы данных определенных для полей в таблице List не ссылаются напрямую на нужные поля в таблицах-справочниках. А для поля GroupId вообще появляется неоднозначность связывания (по типу поля - с таблицей групп, по релейшну - с таблицей елементов) и неизвестно как еще это все отразится при дальнейшей работе. Вывод. Так программировать НЕЛЬЗЯ. Лучше уж переопределить lookup()чик Тем более что там кода надо написать всего 10 строк. а может и меньше. И стандартный функционал останется и задача будет решена. | 
|  | 
|  11.10.2002, 15:46 | #15 | 
| Administrator | 
			
			Ну, перепрограммировать и переход к основной таблице можно    А вообще, это была скорее "демонстрация мышц". Поддерживаю ta_and: лучше перепрограммировать lookup. 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  11.10.2002, 15:48 | #16 | 
| Участник | 
			
			Конечно 100%-ой гарантии что все будет работать правильно дать нельзя, для этого надо окапаться в кишках Ахапты, но у меня, вариант с исправлениями, приведенными мною выше, работает без проблем, и к главной таблице переходит...
		 | 
|  | 
|  11.10.2002, 17:35 | #17 | 
| Administrator | 
			
			Заметьте, что при использовании типов и связей объем исправлений несколько возрастает (даже, скорее, не объем, а "география" исправлений   ). Все же аккуратней добавить маленький метод lookup с соответствующими комментариями. 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  |