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


Настройка заголовков столбцов в сетке прогноза

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

Требования к лицензии и роли

Тип требования Вы должны иметь
Виды Dynamics 365 Sales Premium или Dynamics 365 Sales Enterprise
Подробнее: Цены на Dynamics 365 Sales
Роли безопасности Системный администратор или настройщик
Дополнительные сведения: Предопределенные роли безопасности для Sales

Как настроить заголовок

Давайте рассмотрим настройки на примере. Мы добавим перевод на французский язык для имен столбцов Прогноз и Реализовано в сетке прогноза.

  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>
    

    В приведенном выше примере кода имена столбцов Прогноз и Реализовано переопределяются переводами на французский язык — 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);
        }
    

Следующие шаги