Показать сообщение отдельно
Старый 12.01.2010, 15:52   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Не уверен, насчет AX3.0, но в AX2.5 параметр (args) - это не есть источник данных. Как правило, это всего-лишь дополнительный "фильтр", накладываемый на главный DataSource формы. Точнее, дополнительный DynaLink. Да и то, только в том случае, если установлено свойство AutoQuery = Yes

Чтобы понять, что происходит, посмотрите текущий Query по форме (хотя, в Ax3.0 это сделать проблематично) сразу после открытия формы

В общем, при передаче в качестве параметра строки таблицы увидите, что в запросе по форме для главной таблицы формы (в данном случае PurchLine) будет добавлен DynaLink к той таблице, которая была передана в качестве параметра.

Естесственно, DynaLink от PurchLine к таблице PurchTable будет организован по PurchId. Поскольку выбрана конкретная запись PurchTable, то и будут "отфильтрованы" только записи данной закупки

А вот как организовать DynaLink между PurchLine и PurchLine? Да никак! Вот и не будет никакой "фильтрации".

Точнее, организация DynaLink в этом случае в форме PurchLine выполняется в методе LinkActive. Но он "заточен" под вполне конкретную связь с прикрепленной закупкой. С произвольной строкой PurchLine, скорее всего, как раз и будут отображены почти все строки всех закупок

Собственно, решение сводится к тому, чтобы через args() передать еще какой-либо признак по значению которого сделать ветвление кода в LinkActive. Т.е. да, как параметр передано значение PurchLine, но вместо организации Link надо просто наложить фильтр.

Или просто передать как параметр RecId, но опять же, писать код в форме PurchLine
За это сообщение автора поблагодарили: Gustav (6).