| Цитата |
|---|
| Александр Медведев написал: Олег Брага , попробуйте событие onBeforeProcessDocument и подмените значения на лету |
Наше дело:
Наше дело:
|
|||
|
|
|
|
Олег Брага, добрый день
По поводу события Александр Медведев вам правильно рассказал. Вам надо в обработчике события вызвать $document->setValues(['MY_COMPANY' => 1]); Вычисление конкретных значений полей происходит позже, после этого события. Там будут учтены переданные вами данные |
|||
|
|
|
|
Приветствую, Антон Горбылев,
не работает это:
Но все равно в файле печатается название той у которой идентификатор меньше. А вот такой код меняет наименование организации в конечном документе:
но это совсем не то что хочется, перебивать отдельные параметры совсем бы не хотелось.
Наше дело:
|
|||||||
|
|
|
|
Олег Брага, проверил у себя. Работает.
Как я проверяю. 1. В init.php сделал обработчик.
2. Вывел доступные значения для поля "MY_COMPANY"
3. Ставим в обработчике значение поля
4. В документ вставилось название компании из реквизитов компании с ид 15 Пишите в таком же формате ваши действия, посмотрим, что не так. |
|||||||||
|
|
|
|
Приветствую, Антон Горбылев,
В init.php событие (указание на соответствие ID компании ее наименованию из реквизитов на скриншоте screen_1):
Выдержки из логов (полный файл ):
Результат генерации документа на скриншоте screen_2
Наше дело:
|
|||||
|
|
|
И неясно откуда у вас берётся "Территориальный отдел №1", в названии компаний такого нет |
|||
|
|
|
|
Приветствую, Александр Медведев,
Наименование вставляется из реквизитов, показано на скриншоте screen_1 а насчет логов вы правы, там этот блок встречается дважды поскольку я забыл отключить обработчик события onCreateDocument, где обновляю привязку к моей компании непосредственно в данных документа. сейчас проведу еще раз более чистый эксперимент.
Наше дело:
|
|
|
|
|
|
Олег Брага, должно работать.
Уберите вызов \Bitrix\DocumentGenerator\Document::getFields() до того, как вы вызываете setValues() Важно, чтобы ид моей компании был указан до того, как документ произведет инициализацию цепочки провайдеров и вычислит значения их полей. А в getFields() как раз идёт вычисление значений. После этого менять значение провайдера бесполезно, там будет работать только смена конечных значений. |
|
|
|
|
|
Понятно, спасибо, сейчас попробую. Правда у меня на этом была основана проверка, нужно ли вообще обновлять это поле, не прописано ли оно уже правильное. Ну ладно пусть каждый раз обновляет.
Наше дело:
|
||||
|
|
|
|||