Ваш браузер устарел, не поддерживает современные веб-стандарты и представляет угрозу Вашей безопасности. Для комфортной работы с порталом, пожалуйста, установите современыый браузер.
Портал технической поддержки

Изменение шаблона листа согласований

С ответом

Комментарии

Комментариев: 4

  • Официальный комментарий
    Avatar
    Производство Docsvision

    Игорь, добрый день.

    К сожалению данный залоговок является константой и заменить его довольно сложно.

    Вариант № 1:
    Сделать свою реализацию копии контрола agreementList с необходимой логикой.

    Вариант № 2:

    - Установить обработчик события agreementReportOpening контрола agreementList на customAgreementReportOpeningEvent.
    - Установить обработчик события agreementReportClosed контрола agreementList на customAgreementReportClosedEvent.

    Сам код веб-расширения примерно такой:

    var AGREEMENT_LIST_TITLE_ORIGINAL;
    var AGREEMENT_LIST_TITLE_ORIGINAL_SAVED = false;

    export async function customAgreementReportOpeningEvent(sender: LayoutControl, e: ICancelableEventArgs<IEventArgs>) {
    if (!AGREEMENT_LIST_TITLE_ORIGINAL_SAVED) {
    AGREEMENT_LIST_TITLE_ORIGINAL = resources.AgreementList_Title;
    AGREEMENT_LIST_TITLE_ORIGINAL_SAVED = true;
    }

    e.wait();
    const documentNumber = await getDocumentNumber();
    resources.AgreementList_Title = "Номер договора " + documentNumber;
    }

    export async function customAgreementReportClosedEvent(sender: LayoutControl, e: IEventArgs) {
    if (AGREEMENT_LIST_TITLE_ORIGINAL_SAVED) {
    resources.AgreementList_Title = AGREEMENT_LIST_TITLE_ORIGINAL;
    }
    }

    где getDocumentNumber - функция получения номера договора, в которой можно получить номер через открытое или скрытое поле в разметке или запрашивать через серверное расширение web-клиента.

    С уважением, Денис Елхов.

    Действия с комментариями Постоянная ссылка
  • Avatar
    Ольга Трачук

    Игорь, здравствуйте. Перенесла вашу тему в форум по web-клиент.

    0
    Действия с комментариями Постоянная ссылка
  • 1. А зачем сохранять его в глобальных переменных?

    2. Не увидел установки самого поля. Я нашел способ только устанавливать его через перехват RootHtml:

    e: WebClient.IAgreementListReportOpenedEventArgs

    e.contentControl.rootElem.innerHTML = e.contentControl.rootElem.innerHTML.replace("Лист согласования", %номер_договора%);

    Если по хорошему, то как-то можно в веб-расширении учесть локализацию?

    Я понимаю, что это жуткий костыль и не работает с локализацией. Но всё же.

    0
    Действия с комментариями Постоянная ссылка
  • Avatar
    Производство Docsvision

    Игорь, добрый день.

    1. Изначально, в элемент управления «AgreementList» не заложена возможность изменения заголовка, в качестве значения заголовка используется значение поля «resources.AgreementList_Title». Для решения задачи динамического изменения заголовка предложен минимальный по трудозатратам вариант - подменить значение поля «resources.AgreementList_Title»  необходимым значением перед открытием диалогового окна с отчетом. Для обеспечения корректного функционирования элемента управления в других разметках документов, предлагается после закрытия окна выполнить скрипт, который восстанавливает исходное значение поля «resources.AgreementList_Title».
    1. Ввиду того, что элементы управления являются React компонентами, то взаимодействовать напрямую с DOM не рекомендуется, именно поэтому предложен обходной вариант с модификацией поля «resources.AgreementList_Title».
    1. В репозитории DocsVision на Github имеется пример добавления собственных полей с локализациями в web-расширении web-клиента. По ссылке https://github.com/DocsVision/WebClient-Samples/blob/master/Controls/DownloadFilesBatchOperation/DownloadFilesBatchOperationWebExtension/src/Index.ts доступна реализация подобной задачи. При регистрации расширения определяется функция «getLocalizations», которая возвращает специальный объект «cultureMap», который задает наименования полей и их значения для разных языков. Результатом выполнения описанной функции будет добавление в объект «resources» нового поля «resources.DownloadFilesBatchOperationName», значение которого будет зависеть от текущей локализации пользователя.
    1. Хочу обратить Ваше внимание, что наименование и номер документа, по которому сформирован лист согласования, можно получить из второго аргумента события «agreementReportOpening», пример формирования значения заголовка с учетом локализации приведен далее:
    export async function customAgreementReportOpening(sender: LayoutControl, e: ICancelableEventArgs<IAgreementListReportOpeningEventArgs>) {
        console.log(resources.AgreementList_Caption.format(e.data.model.documentNumber, e.data.model.documentName));
    }

     

    С уважением, Олег Борисов.

    0
    Действия с комментариями Постоянная ссылка

Войдите в службу, чтобы оставить комментарий.