Кастомизация
12
Дек
0

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

Авто-обновление панелей мониторинга мы уже делали. Поэтому сделаем еще авто-обновление Представлений.

Начнем:

  • Создайте 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 и идем авто-обновляться.


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

*

code