|
![]() |
#1 |
Участник
|
Не уверен, насчет 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). |
![]() |
#2 |
Moderator
|
Доложу о некоторых изысканиях по мотивам обсуждения.
1-й вариант изысканий. Создал копию формы PurchLine, удалил из нее весь перекрытый код - поведение всех 3-х джобов абсолютно не изменилось. 2-й вариант. "Полувосстановил" метод init датасорса PurchLine в таком виде: X++: public void init() { super(); this.query().dataSourceTable(tablenum(PurchLine)).clearDynalinks(); } джоб 1 - то же самое джоб 2 - перестал фильтровать (как и предполагал SRF) джоб 3 - findRecord стал долгим и полным 3-й вариант. Джобы Bishop'а и tricky имитируют правильный эффект. Это мне пригодится, хотя и с оговорками. "Чистый вход" по args.record мне был нужен, чтобы воспользоваться классом SysInfoAction_FormName_RU, но, похоже, придется его перекрывать на этот мой конкретный случай с PurchLine. |
|
Теги |
args, dynalink, formdatasource, formrun |
|
|