В созданной мной форме отчета для FR есть поле LookupControl
Я хочу чтобы значение этого поля устанавливалось в соответствии с ParentItemID, не знаю как его получить если моя форма унаследована от формы wnd_DateReportFilter.

Подскажите пожалуйся по шагам.

так не вышло:

function wnd_SalesByCorporateClientsOnPrepare(Window) {
        var ParentItemID = GetAttribute(Self, 'ParentItemID');    //fail!
...

Нравится

6 комментариев

Атрибут ParentItemID устанавливается в скрипте scr_BaseGridAreaUtils. Ни окно wnd_DateReportFilter, ни Ваше не имеют наследования от wnd_BaseGridArea, поэтому атрибут не определен.

Причина того что ParentItemID не определен мне известна, цель моего вопроса - узнать каким образом получить значение id выбранной записи раздела в моем случае, то есть когда мое окно унаследовано не от окна wnd_BaseGridArea.

Возможно ли это, и каким образом. Если это не возможно, то какие пути решения этой проблемы вы можете посоветовать?

Я поставил дебаггер в скрипте wnd_ReportOpportunitiesDateFilterScript базового отчета с формой фильтрации и добрался до выбранных записей родительского грида таким образом:

ReportPreviewer.ParentWindow.Attributes('FilterForm').Attributes('SelectedIDs')

Не зная, к какому атрибуту обращаться, перебирал их через Attributes.Items(i), а найдя подходящий обращался по Attributes('атрибут'). Возможно кто-то знает другой способ, я пользуюсь перебором, так как у разных объектов кардинально отличные атрибуты.

Спасибо Виталий, способ работает.
А можно немного подробнее, что за FilterForm?

И еще, как я понял вы просто в коде искали вручную как-то вот так?:
var test = ReportPreviewer.ParentWindow.Attributes.Items(i);
...

FilterForm - это в данном случае атрибут родительского окна просмотрщика отчета. Этим атрибутом есть форма фильтрации. А уже у нее есть атрибут SelectedIDs, который и содержит выбранные записи в главном гриде. Для других объектов таких атрибутов не будет, потому что они используются для передачи значений из одного объекта в другой, но передается только необходимые, жестко определенного списка атрибутов нет и по логике не должно быть.
Искал не так, но вручную. Просто установил debugger и в окне инспектора выражений (watch) перебирал ReportPreviewer, ReportPreviewer.ParentWindow, ReportPreviewer.ParentWindow.Attributes.Items(i), ReportPreviewer.ParentWindow.Attributes('FilterForm').Attributes.Items(i)
По ходу использовал SDK, чтобы посмотреть свойства, которые есть у ReportPreviewer.

спасибо за подробный ответ :)

Показать все комментарии