Посмотрите, как реализован вызов отчета в функции ReportMenuItemExecute в скрипте scr_ReportUtils.
Получить ID выбранного документа в основном гриде можно ещё таким образом:
var ID = wndGridData.Window.ComponentsByName('grdData').SelectedIDs[0];
"Марина Карапетян" написал:А как получить ID выбранного документа в гриде детали ?
Не совсем понятно, что Вы имеете ввиду.
Если нужно получить ID документа для записи в детали, тогда можно получить значение поля DocumentID детали при условии, что деталь связана с основной таблицой документов.
Если Вы просто хотите из детали получить ID документа, который выбран в данный момент в основном гриде, тогда это можно сделать через окно раздела (Workspace).
При инициализации детали в качестве аттрибута ему можно передать окно основного грида, а потом, получить ID выбранного документа аналогично описанному выше, получив значение из аттрибута.
Почему-то рисунок не прикрепляется.
Попытаюсь без рисунка объяснить.
Основной грид имеет деталь_1.
В детали_1 находятся дочерние документы каждого из документов основного грида соответственно.
При выборе документа в основном гриде, происходит обновление детали_1.
связь Родительский документ : дочерний документ
один : многие
Например:
основной грид
Родительский документ_Номер1
Родительский документ_Номер2
...
Родительский документ_НомерN
деталь_1 (если выбран Родительский документ_Номер1)
Дочерний документ_1_Родительского документа_Номер1
Дочерний документ_2_Родительского документа_Номер1
...
Дочерний документ_N_Родительского документа_Номер1
деталь_1 (если выбран Родительский документ_Номер2)
Дочерний документ_1_Родительского документа_Номер2
Дочерний документ_2_Родительского документа_Номер2
...
Дочерний документ_M_Родительского документа_Номер2
Нужно получить ID дочернего документа, который выбран в детали_1.
Но получить ID нужно в скрипте fast report-а в событии OnPreview, чтобы задать как параметр ADODataset - у, а там уже с помощью SQL запроса запрашиваются нужные данные.
Спасибо.
Вы написали:
Если нужно получить ID документа для записи в детали, тогда можно получить значение поля DocumentID детали при условии, что деталь связана с основной таблицой документов.
что это за поле и что означает деталь связана с основной таблицой документов?
Если мы говорим о стандартной связке основной раздел - деталь, то обычно они связаны по полю ID записи основного раздела связью один ко многим.
То есть, если это раздел [Документы] и какая-то деталь этого раздела, то в датасете, запросе на выборку и таблице детали есть поле DocumentID, которое заполнено значением поля ID из таблицы документов.
В окно грида детали это значение передается через атрибут 'ParenItemtID'.
Таким образом получить значение поля DocumentID в окне грида детали, можно так: Self.Attributes('ParentItemID').
Если мы говорим о стандартной связке основной раздел - деталь, то обычно они связаны по полю ID записи основного раздела связью один ко многим.
Да, у меня есть такая связь.
То есть, если это раздел [Документы] и какая-то деталь этого раздела, то в датасете, запросе на выборку и таблице детали есть поле DocumentID, которое заполнено значением поля ID из таблицы документов.
Это раздел [Заявки физ. лиц.]. В датасете, запросе на выборку и таблице детали есть соответствующее поле, которое заполнено значением поля ID из таблицы заявок.
В окно грида детали это значение передается через атрибут 'ParenItemtID'.
Это тоже сделала.
Таким образом получить значение поля DocumentID в окне грида детали, можно так: Self.Attributes('ParentItemID').
Но мне нужно получить не DocumentID (где записан ID записи основного грида) а ID именно записи детали. Ведь надо напечатать конкретную запись детали.
То есть, нажав на конкретную запись в основном гриде, в детали получаю соответствующие записи.
Далее нажимая на конкретную запись детали, надо напечатать ее с помощью fast report-а.
Спасибо
Вам нужно получить ID записи раньше, а потом передать его через атрибуты ReportPreviewer (выше я уже об этом писала).
Если писать так, как Вы, то получается, что обращение идет к другому экземпляру окна, а не к тому, которое является окном реестра в детали. Соответственно, что и никакие записи в нём не выбраны.
Окно реестра — это страница, на которой находится грид. Обычно название таких страниц заканчивается на «GridArea». В Вашем случае есть основное окно реестра в разделе и по одному для каждой детали.