var MainWindow = Connector.Attributes('MainWindow');//название текущего workspace
var WorkspaceWindow = MainWindow.ComponentsByName('wndWorkspace').Window;//объект окна workspace
var NotifyMessage ='Refresh';//Название сигнала, посмотрите в workspace, какой нужен вам (для Account - это 'MSG_REFRESHDETAIL', для Task - 'Refresh')
WorkspaceWindow.Notify(WorkspaceWindow, NotifyMessage, 0);//посылаем сигнал
OnNotify принимает сигнал, он у вас прописан в вашем workspace.
Этот код написать на кнопку "ОК" в конце.
Строку
var MainWindow = Connector.Attributes('MainWindow');
оставить как есть.
Т.е. 2 эти строчки вернут текущее главное окно
var MainWindow = Connector.Attributes('MainWindow');
var WorkspaceWindow = MainWindow.ComponentsByName('wndWorkspace').Window
;
Единственное, что нужно поменять это 'Refresh'
Так в скрипте окна контрагентов на событии OnNotify есть такой скрипт (а может я его сам дописал. Если да, то допишите в OnNotify нужного вам workspace примерно такой код)
function wnd_AccountsWorkspaceOnNotify(ScriptableService, Sender, Message,
Data){
var USI = Sender.USI;if(USI){
var SenderCode = ExtractUSICodeEx(USI);}else{
var SenderCode ='';}if(Message =='MSG_REFRESHDETAIL'){
RefreshWorkspace();}
...
Он у меня принимал сигнал с значением 'MSG_REFRESHDETAIL' и обновлял грид.
Тогда у меня два вопроса:
1) Где определена переменная MSG_GROUPSCHANGED (может кавычки нужны)?
2) А OnNotify вообще идет?
Поставьте Log.Write(1,Message); перед if, для проверки второго вопроса.
а на событие ОК в карточке оставить код из 1-ого комментария:
var MainWindow = Connector.Attributes('MainWindow');
var WorkspaceWindow = MainWindow.ComponentsByName('wndWorkspace').Window;
var NotifyMessage ='Refresh';
WorkspaceWindow.Notify(WorkspaceWindow, NotifyMessage, 0);
У меня есть два поля контрагент и контактное лицо.
Как можно включить фильтр когда у меня выбран контрагент что бы в справочнике контакотов отображались только те контакты которые относяться к этому контрагент.
У поля контактное лицо в свойствах есть OnPrepareSelectWindow
Щелкаешь два раза, тебе перенаправляет в скрипт, где будет создана функция для обработки события выбора контакта.
Туда написать примерно такой скрипт:
function edtContactOnPrepareSelectWindow(LookupDataControl){
var Dataset = dlData.Dataset;
var LookupDataset = LookupDataControl.DataField.LookupDataset;
var AccountID = Dataset.Values('AccountID');
var IsAccountIDFilterEnabled =!IsEmptyGUID(AccountID);
ApplyDatasetFilter(LookupDataset, 'AccountID', AccountID,
IsAccountIDFilterEnabled);}