Обновление реестра раздела после добавления/изменения записи на детали.....
Где то читал про это здесь, но найти никак не могу.
Есть раздел и есть в нем деталь.
На детали добавляют/изменяют запись.
Сохраняют.
Надо чтобы при этом обновился основной реестр записей, так как меняются поля в записи детали и от этого отрабатывает логика, меняющая поля в основной записи и эта запись уже не попадает в условия отбора выбранной в данный момент динамической папки.
Уффф. Сформулировал.
Как?
Нравится
Попробуйте с помощью бизнес-процесса.
После сохранения записи генерируйте сигнал, что-то типа "UpdateBla_Bla_BlaGrid". И уже в процессе Bla_Bla_BlaGrid'a ловите этот сигнал и обновляете гриду
Так же есть вариант вызвать обновление грида с помощью скрипта.
Например, так:
Page.AddScript("PageContainer_AccountsModulePage_Grid_TreeGrid.refreshData();");
Если нужно больше универсальности, то можно достучаться до родительского контейнера через свойство "ownerCt". Путем нескольких повторений "ownerCt.ownerCt..." можно попасть в "PageContainer_AccountsModulePage", затем к нему добавить "_Grid_TreeGrid.refreshData();".
А получить Id элемента для обращения к нему из скрипта можно из свойства "ClientID".
Не совсем я понял.
Я добавил в процесс сохранения записи детали генерацию события RefreshBaseGrid
Мне его где ловить? На странице раздела?
Александр, из страницы редактирования добрался до грида раздела следующим образом:
Page.AddScript("window.opener.window.PageContainer_ContactsModulePage_Grid_TreeGrid.refreshData();");
"Шамуилов Александр" написал:Не совсем я понял.
Я добавил в процесс сохранения записи детали генерацию события RefreshBaseGrid
Мне его где ловить? На странице раздела?
Да, в процессе страницы раздела. В том то и есть разница между сигналом и событием - событие может запустить другое событие только внутри текущего процесса, а сигнал запускает любой процесс системы, где он установлен как начальный
"Андрей Каспаревич" написал:Александр, из страницы редактирования добрался до грида раздела следующим образом:
Page.AddScript("window.opener.window.PageContainer_ContactsModulePage_Grid_TreeGrid.refreshData();");
С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
ИМХО, попахивает костылями. А если эту же страницу возможно открыть не только с этой детали? Соответственно opener будет совершенно другой, да и вложенность в контейнеры может варьироваться...
Ну это лично мои соображения - возможно так и будет правильней
эээээ, работает, есть тока одна проблема, если я это вешаю на кнопку OK карточки, то основной реестр раздела обновляется ДО того как сохранятся изменения.....соответственно, ничего не меняется. :smile:
Не могу сообразить, куда вставить сие произведение.
"Шамуилов Александр" написал:эээээ, работает, есть тока одна проблема, если я это вешаю на кнопку OK карточки, то основной реестр раздела обновляется ДО того как сохранятся изменения.....соответственно, ничего не меняется.
Не могу сообразить, куда вставить сие произведение.
Генерируйте сигнал после сохранения DataSourc'a
Тогда точно будет после:smile:
Действительно, Константин дело говорит. Можно обновлять с реестра детали по событию "DataSourceSaved".
Не ловится сигнал.
В процессе карточки редактирования записи детали делаю так:
В процессе страницы РАЗДЕЛА делаю так:
В скрипте написано
bool RefreshBaseModuleGridScriptTaskExecute(ProcessExecutingContext context){ Page.BaseMessagePanel.AddMessage("DEBUG", "ВНИМАНИЕ!!!", "REFRESH GRID SIGNAL CATCHED!!!", MessageType.Warning); //ЭТО ДЛЯ ОТЛАДКИ Page.AddScript("window.PageContainer_DocumentsModulePage_Grid_TreeGrid.refreshData();"); return true; }
НИЧЕГО НЕ ПРОИСХОДИТ.......
Здравствуйте, Александр.
Попробуйте обновлять реестр в скрипте так:
Page.TreeGrid.Clear(); Page.DataSource.LoadRows(); Page.TreeGrid.RefreshData();
Попробую, но у меня даже сообщение не выдает....то есть такое ощущение, что сигнал не обрабатывается
Не работает, не понимаю.......
Как мне понять, что сигнал доходит?
Александр, тогда не нужно передавать сигнал в родительский процесс. Просто используйте предложенный скрипт прямо на событии сохранения датасета:
Page.AddScript("window.PageContainer_DocumentsModulePage_Grid_TreeGrid.refreshData();");
АААААА, заработало, чтоб ей пусто было!!!! :smile:
Всем спасибо огромное!
Хороших выходных!