Авто-обновление Представлений
Авто-обновление панелей мониторинга мы уже делали. Поэтому сделаем еще авто-обновление Представлений.
Начнем:
- Создайте JS Веб-ресурс с таким кодом:
// Обработчик нажатия переключателя function startRefresh(CommandProperties) { if (CommandProperties.On) { z = 1; autoRefresh(); } else { z = 0; } } // Запускаем цикл автообновления function autoRefresh() { if (z == 1) { var ci = this.parent.parent.document.getElementById('contentIFrame').contentWindow; ci.document.getElementById("grid_refresh").parentNode.click(); setTimeout(autoRefresh, 60000) } }
Этот код состоит из двух функций. Первая вызывается по кнопке и определяет состояние кнопки (нажата или нет) и если нажата, то выставляет флаг (глобальную переменную) и вызывает функцию обновления. А вторая функция проверяет, установлен ли «флаг», и если да, то по сложному пути добирается до стандартной пиктограмме обновления Представления, нажимает ее и вызывает саму себя с некоторой задержкой;
- Выгрузите в неуправляемом Решении какой-либо объект (в данном примере это Организация) и добавьте в него такую кнопку:
<RibbonDiffXml> <CustomActions> <CustomAction Id="autoRefresh.CustomAction" Location="Mscrm.HomepageGrid.account.MainTab.Management.Controls._children" Sequence="70" > <CommandUIDefinition> <ToggleButton Id="autoRefresh.Button" TemplateAlias="o1" Command="autoRefresh.Command" LabelText="Авто-обновление" Sequence="70" Image32by32="$webresource:new_autorefresh.png" ToolTipDescription="Авто-обновление" ToolTipTitle="Авто-обновление" /> </CommandUIDefinition> </CustomAction> </CustomActions> <Templates> <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates> </Templates> <CommandDefinitions> <CommandDefinition Id="autoRefresh.Command"> <EnableRules> <EnableRule Id="Mscrm.Enabled" /> </EnableRules> <DisplayRules/> <Actions> <JavaScriptFunction Library="$webresource:new_autorefresh.js" FunctionName="startRefresh"> <CrmParameter Value="CommandProperties" /> </JavaScriptFunction> </Actions> </CommandDefinition> </CommandDefinitions> <RuleDefinitions> <TabDisplayRules/> <DisplayRules/> <EnableRules/> </RuleDefinitions> <LocLabels /> </RibbonDiffXml>
Здесь у нас простая кнопка-переключатель, которая вызывает функцию startRefresh из JS Веб-ресурса;
- Импортируйте Решение обратно в CRM и идем авто-обновляться.