Нажимаю в WorkSpace запись в гриде. Должна обновляться новая вкладка в детализации. Нужно событие где я могу получить ID выделенной записи и доступ к окну на вкладке детализации. В принципе можно с события грида писать что то наподобие: ParentWindow.ParentWindow.ComponentsByName('').ComponentsByName('')... - пока не смог прописать цепочку вызовов.
Михаил, чтобы получить доступ к workspace из грида, то так
var MainWindow = Connector.Attributes('MainWindow');
var WorkspaceWindow = MainWindow.ComponentsByName('wndWorkspace').Window;
Но судя по вопросу вы хотите что-то делать в окне детали в зависимости от того какая запись выбрана.
Грид вам поможет только при переключении на другую запись. А что будете делать если переключилась не запись, а была выбрана другая деталь или это не важно. Так что думаю, это лучше приписать в воркспейс в RefrehsDetails на нужную вам деталь. А получить ID выделенной записи из воркспейса можно так
var ID = wndGridData.Window.ComponentsByName('dlData').Dataset('ID');
var ID=DataGrid.SelectedIDs.CommaText.split(',')[0];
var wd=Self.Attributes('WorkspaceWindow').ComponentsByName('wndTreeRequirement');
var dlData= wd.Window.ComponentsByName('dlData');
ApplyDatasetFilter(dlData.Dataset, 'ChangeRequestID', ID, true);
dlData.Dataset.Open();
эээ, Михаил, а вы не могли бы объяснить, что вы сделали или хотели сделать.
Такое ощущение, что вы просто обновляете деталь в зависимости от записи, но этот функционал уже давным давно описан. Его можно посмотреть в любом скрипте воркспейса, функция RefreshDetails. Туда просто надо дописать свое по аналогии
if(pcDetails.ActivePage.Name== pgTreeRequirementDetail.Name){//где pgTreeRegurementDetail - название страницы детали
RefreshCommonDetail(BaseWorkspace, wndTreeRequirement,
'ChangeRequestID', 'ChangeRequestID');//где один 'ChangeRequestID' - это название фильтра, а другой это родительское поле(т.е. поле которое связано с ID на гриде)}
Если же у вас дальше идут какие-то манипуляции, то я не знаю зачем переоткрывать датасет.
Да, так совсем хорошо. А что там с переоткрытием Dataset? Не переоткрывается соединение?
RefreshCommonDetail - вшито в ядро -( так что еще вопрос что там происходит
function RefreshCommonDetail не в ядре, а находится в scr_WorkspaceUtils.
Фактически она также переоткрывает датасет, но там стоит много каких-то проверок.
Думаю не просто так разрабы ее создали, но если ваш вариант вас устраивает, то используйте его.
function RefreshCommonDetail не в ядре, а находится в scr_WorkspaceUtils.
Фактически она также переоткрывает датасет, но там стоит много каких-то проверок.
Думаю не просто так разрабы ее создали, но если ваш вариант вас устраивает, то используйте его.
Хм, это террасофт меня в заблуждение ввел. Кликнул по функции, переход не произошел. А вот если открыть scr_WorkspaceUtils и там на вызов кликнуть то переход происходит на определение.