Поділитися через


Настроювання заголовків стовпців у сітці прогнозу

Ви можете налаштувати заголовки стовпців у сітці прогнозу за допомогою Power Apps компонентів коду. Наприклад, ви можете перекласти назву стовпчика або додати підказку для додаткового контексту.

Вимоги до ліцензії та посади

Тип вимоги Ви повинні мати
Ліцензія Dynamics 365 Sales Premium або Dynamics 365 Sales Enterprise
Додаткові відомості: Ціни на продажі Dynamics 365
Ролі безпеки Системний адміністратор або настроювач
Додаткові відомості: Попередньо визначені ролі безпеки для відділу продажів

Як налаштувати шапку

Давайте розберемося в налаштуваннях на прикладі. Ми додамо французький переклад для назв стовпців Forecast і Won у сітку прогнозів.

  1. Створіть компонент коду з ім’ям ColumnHeader
  2. Створення файлу ресурсів і додавання перекладів
  3. Реалізація маніфесту
  4. Реалізація логіки компонентів
  5. Збірка та пакування компонента

Створення файлу ресурсів і додавання перекладів

Після того, як ви створите компонент коду, папка ColumnHeader буде створена за вказаним вами шляхом. Давайте створимо файл ресурсів і додамо французькі переклади до файлу ресурсів.

  1. Створіть папку з іменем strings папки ColumnHeader .

  2. Скопіюйте наступний код у новий файл, ColumnHeader.1036.resx.

    Нотатка

    Число 1036 у назві файлу є кодом мови для французької мови. Список кодів мов можна знайти в цій статті.

    <?xml version="1.0" encoding="utf-8"?>
    <root>
    
      <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" use="required" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                  <xsd:attribute ref="xml:space" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                  <xsd:attribute ref="xml:space" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="Forecast" xml:space="preserve">
        <value>Prévision</value>
      </data>
      <data name="Won" xml:space="preserve">
        <value>Gagné</value>
      </data>
    </root>
    

    У наведеному вище прикладі коду назви стовпців для Forecast і Won перевизначені французькими перекладами Prévision і Gagné відповідно у <data> вузлі.

    Нотатка

    У name параметрі вкажіть точне ім’я стовпця, налаштоване в розділі Макет крок прогнозу.

    Скріншот назв стовпців у Макеті ****  крок конфігурації прогнозу

    Якщо потрібно перекласти ім’я стовпця іншими мовами, створіть файл ресурсів для кожної мови, якою потрібно перекласти. Переконайтеся, що в імені файлу ресурсу використовуються такі правила іменування:

    filename.languagecode.resx  
    **Example file name for German:** ColumnHeader.1031.resx
    

Реалізація маніфесту

Далі ми змінимо файл маніфесту, вказавши властивість, яку ми перевизначаємо. У нашому прикладі ми замінюємо властивість ColumnName . Ми також вкажемо шлях до файлу ресурсу, який містить перекладений текст.

  1. Відкрийте файл. ControlManifest.Input.XML

  2. Знайдіть вузол property і замініть його наступним кодом як є:

    <property name="columnName" display-name-key="Property_Display_Key" description-key="Property_Desc_Key" of-type="SingleLine.Text" usage="bound" required="true" />

  3. Оновіть вузол, <resources> вказавши шлях до файлу ресурсів, який містить французькі переклади:

    <resources>
      <code path="index.ts" order="1"/>
      <!-- UNCOMMENT TO ADD MORE RESOURCES
      <css path="css/ColumnHeader.css" order="1" />
      -->
      <resx path="strings/ColumnHeader.1036.resx" version="1.0.0" />
    </resources>
    

    Вузол <resx path> містить шлях до файлу ресурсу. У попередньому прикладі коду ми додали файл ресурсів для французької мови. Якщо у вас є переклади для інших мов, додайте шлях до файлу ресурсу також для цих мов.

Реалізація логіки компонентів

Додамо код для реалізації логіки компонента у файлі index.ts .

  1. Відкрийте файл. index.ts

  2. Додайте наступні рядки в методі updateView :

    public updateView(context: ComponentFramework.Context<IInputs>): void
        {
            // Add code to update control view
            const colName = (context.parameters.columnName && context.parameters.columnName.raw) || "";
            this._container.innerHTML = context.resources.getString(colName);
        }
    

Наступні кроки