подскажите, как в итоге можно отредактировать поля товаров перед их попаданием в документ
Цитата |
---|
Антон Горбылев написал: Залазите в \Bitrix\DocumentGenerator\DataProvider::$data нужного объекта и меняете. Должно работать. |
Пробовал:
Код |
---|
$productsProvider = \Bitrix\DocumentGenerator\DataProviderManager::getInstance()->getDataProviderValue($provider, $productsPlaceholder); |
$productsProvider::$data - нет доступа, что понятно, но непонятно как тогда изменить по Вашему совету
Пробовал:
Цитата |
---|
Антон Горбылев написал: В общем случае, оптимальный вариант - это вызвать \Bitrix\DocumentGenerator\DataProviderManager::createDataProvider() с нужными параметрами, и передать в первом аргументе ['OPTIONS']['VALUES'] массив переписываемых значений. |
набросал что-то такое:
Код |
---|
$document = $event->getParameter('document');
CModule::IncludeModule("crm");
$arProducts = CCrmInvoice::GetProductRows(6);
$arProducts[1]["PRODUCT_NAME"] = "TEST NAME";
$newProductsProvider = new \Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Product($arProducts);
$productsPlaceholder = 'PRODUCTS';
$productsFieldDescription = $provider->getFields()[$productsPlaceholder];
$productsFieldDescription["OPTIONS"]["VALUES"] = array("PRODUCT_NAME");
$productsProvider = \Bitrix\DocumentGenerator\DataProviderManager::getInstance()->createDataProvider(
$productsFieldDescription, $newProductsProvider, $provider, $productsPlaceholder
);
$document->setValues([$productsPlaceholder => $productsProvider]);
$document->setFields([$productsPlaceholder => $productsFieldDescription]);
|
но всеравно ничего не изменилось. Поскажите, что делаю не так