Приветствую,
пытаюсь поменять выбранную свою компанию в генерируемых документах (у компании несколько подразделений и в зависимости от разных условий в документах должны быть разные реквизиты разных подразделений). Для этого в событии onCreateDocument делаю обновление документа такого вида:
Код |
---|
$document->update(['MY_COMPANY' => $userFields['UF_CRM_1563205852']['VALUE']], true);
|
При этом надеялся, что документы перегенерируются, но получается что-то не понятное: в данных документа все поменялось, но печатаная форма и картинка остались не перегенерированными, точнее со старыми данными подразделения, выбираемого по умолчанию.
Что не так? Как добиться того, что бы сразу при создании документ перегенирировался с правильными данными?
Сначала подумал, что успевает сгенерироваться первый файл, поэтому второй уже не генерится, попробовал сделать так: $document->setPdfId(0); перед апдейтом, но тоже не сработало.
Да и вообще добавив логи в метод getFile прямо перед вызовом transform() выяснил что в fields там уже обновленные данные и при этом никакого идентификатора PDF еще нет, так что до вызова transform дело доходит.
я конечно понимаю, что подход не совсем красивый, потому что происходит первая бесполезная генерация, но как этого эффекта добиться в событии onBeforeProcessDocument, не заменяя там все рекивизиты, а только переопределив поле MY_COMPANY я тоже не понимаю, к тому же там при создании нельзя использовать update что бы обновить сами данные документа, так как при первом вызове этого события документ еще не сохранен.
Вообще конечно мне не понятно почему нет изначально поля моя компания в Сделке, которое бы влияло на выбор потом при печати правильных реквизитов, в случае когда компаний несколько.