Расширенная функциональность
26
Июл
0

Авто-обновление стандартных Панелей мониторинга

Авто-обновление полноэкранных Панелей мониторинга мы уже как-то (давно 🙂 ) реализовывали, поэтому реализуем авто-обновление стандартных интерфейсных Панелей мониторинга.

Итак, по пунктам:

  • Создайте JS Веб-ресурс с таким кодом:
    // Обработчик нажатия переключателя
    function startRefresh(CommandProperties) {
        if (CommandProperties.On) {
            z = 1;
            autoRefresh();
        } else {
            z = 0;
        }
    }
    
    // Запускаем цикл автообновления
    function autoRefresh() {
        if (z == 1) {
            this.parent.parent.document.getElementById('Mscrm.DashboardTab.Actions.Refresh-Large').click();
            setTimeout(autoRefresh, 60000)
        }
    }
    

    Этот код состоит из двух функций. Первая вызывается по кнопке и определяет состояние кнопки (нажата или нет) и если нажата, то выставляет флаг (глобальную переменную) и вызывает функцию обновления. А вторая функция проверяет, установлен ли «флаг», и если да, то кликает по стандартной кнопке «Обновить все» (присутствующей на стандартной Ленте Панелей мониторинга) и вызывает саму себя с некоторой задержкой;

  • Выгрузите в неуправляемом Решении Ленту приложения и добавьте в нее такую кнопку:
    <RibbonDiffXml>
      <CustomActions>
        <CustomAction Id="autoRefresh.CustomAction"
                      Location="Mscrm.DashboardTab.Actions.Controls._children"
                      Sequence="40" >
          <CommandUIDefinition>
            <ToggleButton Id="autoRefresh.Button"
                          TemplateAlias="o2"
                          Command="autoRefresh.Command"
                          LabelText="Авто-обновление"
                          Sequence="40"
                          Image32by32="$webresource:new_autorefresh.gif"
                          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 и идем тестировать.



Комментарии (0)

*

code