| Цитата |
|---|
| Александр Медведев написал: Ошибся в том, что забыл проблему описать |
|
|||
|
|
|
|
Сильно не пинайте пожалуйста, подскажите где не прав?
1. по фильтрации и поиску почему ищет только по полю NAME ? хотя по полю ID тоже все описано. 2. и как правильно вывести только ту продукцию, что есть на складе? что бы можно было фильтровать по ID и NAME
|
|||||
|
|
|
|
Еще один вопрос возник, первый раз вывожу данные в таблицу grid, не получается корректно собрать пагинацию, в чем ошибся?
как контроллер использую highloadblock.list как выглядит в аттаче пример кода:
|
|||||
|
|
|
сейчас: OBJECT.CARD.Name сюда приходит строка -> 'плата' сделать: OBJECT.CARD.Name сюда приходит строка -> '<b>плата</b>' мне нужно просто в строку добавить любые html теги и они применятся при генерации документа? не как строка просто отобразятся? $document->setValues([ 'OBJECT' => new \Bitrix\DocumentGenerator\DataProvider\ArrayDataProvider( $objectData, $objectSettings ), 'ObjectCardPp' => 'OBJECT.CARD.PP', 'ObjectCardName' => 'OBJECT.CARD.Name', |
|||||
|
|
|
|
Здравствуйте, генерирую таблицу все нормально получается, но есть загвостка , товар периодически составной и мне нужно его выделить жирным и изменить нумератор для составляющих. по типу
Не нашел как это можно сделать. ( формируется в одной таблице) 1. плата 1.1. диод 1.2. припой 2. плата2 |
|
|
|
|
|
Время поджимает, пока приходится делать так, единственно не понял как подтянуть и заполнить все плейсхолдеры из шаблона. и как нумерацию во второй таблице начать с единицы
use \Bitrix\Main\{ Loader, IO }; use \Bitrix\DocumentGenerator; //require_once __DIR__. '/bitrix/modules/main/include/prolog_before.php'; if (CModule::IncludeModule('crm') && CModule::IncludeModule("iblock")) { $deal_id = {=Document:ID}; $res = CCrmDeal::LoadProductRows($deal_id); if (!empty($res)) { foreach ($res as $key =>$obj) { $prop = CIBlockElement::GetByID($obj['PRODUCT_ID'])->GetNextElement()->GetProperties(); $res[$key]['vid'] = $prop['vid']['VALUE']; $res[$key]['full_name'] = $prop['full_name']['VALUE']; } } } $type_prod= []; foreach ($res as $key =>$obj){ if($obj['vid'] == 'услуги'){ $type_prod['usl'][$key]['Name']=$obj['PRODUCT_NAME']; $type_prod['usl'][$key]['FullName']=$obj['full_name']; $type_prod['usl'][$key]['Quantity']=$obj['QUANTITY']; $type_prod['usl'][$key]['MeasureName']=$obj['MEASURE_NAME']; $type_prod['usl'][$key]['PriceRaw']=$obj['PRICE_ACCOUNT']; $type_prod['usl'][$key]['PriceRawSum']=number_format($obj['PRICE_ACCOUNT'] * $obj['QUANTITY'], 2, '.', ''); $type_prod['usl'][$key]['PriceRawSumS'] +=number_format($obj['PRICE_ACCOUNT'] * $obj['QUANTITY'], 2, '.', ''); }else { $type_prod['prod'][$key]['Name']=$obj['PRODUCT_NAME']; $type_prod['prod'][$key]['FullName']=$obj['full_name']; $type_prod['prod'][$key]['Quantity']=$obj['QUANTITY']; $type_prod['prod'][$key]['MeasureName']=$obj['MEASURE_NAME']; $type_prod['prod'][$key]['PriceRaw']=$obj['PRICE_ACCOUNT']; $type_prod['prod'][$key]['PriceRawSum']=number_format($obj['PRICE_ACCOUNT'] * $obj['QUANTITY'], 2, '.', ''); $type_prod['prod'][$key]['PriceRawSumS'] +=number_format($obj['PRICE_ACCOUNT'] * $obj['QUANTITY'], 2, '.', ''); } } $sumuslug =''; foreach ($type_prod['usl'] as $key =>$obj){ $sumuslug +=$obj['PriceRawSumS']; } $sumprod=''; foreach ($type_prod['prod'] as $key =>$obj){ $sumprod +=$obj['PriceRawSumS']; } $this->SetVariable('sumuslug', number_format($sumuslug, 2, '.', '')); $this->SetVariable('sumprod', number_format($sumprod, 2, '.', '')); $this->SetVariable('itogo', number_format($this->GetVariable('sumuslug') + $this->GetVariable('sumprod'), 2, '.', '')); Loader::includeModule('documentgenerator'); $file = new IO\File( __DIR__ .'../. ./. ./. ./. ./local/templatesdocx/dogovor_remont_na_act_soglasov.docx'); $path_www = new IO\File( __DIR__ .'../. ./. ./. ./'); $path_local = $path_www->getDirectoryName() . '/local/templatesdocx'; $path_local_template = $path_local . '/dogovor_remont_na_act_soglasov.docx'; $body = new DocumentGenerator\Body\Docx($file->getContents()); $body->normalizeContent(); $body->setValues(['sumprod'=> $this->GetVariable('sumprod'),'sumuslug'=> $this->GetVariable('sumuslug'),'itogo'=> $this->GetVariable('itogo')]); $body->setValues([ 'TableUsl' => new DocumentGenerator\DataProvider\ArrayDataProvider( $type_prod['usl'], [ 'ITEM_NAME' => 'Item', 'ITEM_PROVIDER' => DocumentGenerator\DataProvider\HashDataProvider::class, ] ), 'TableUslItemName' => 'TableUsl.Item.Name', 'TableUslItemQuantity' => 'TableUsl.Item.Quantity', 'TableUslItemMeasureName' => 'TableUsl.Item.MeasureName', 'TableUslItemPriceRaw' => 'TableUsl.Item.PriceRaw', 'TableUslItemPriceRawSum' => 'TableUsl.Item.PriceRawSum', 'TableUslIndex' => 'TableUsl.INDEX', ]); $body->setValues([ 'Table' => new DocumentGenerator\DataProvider\ArrayDataProvider( $type_prod['prod'], [ 'ITEM_NAME' => 'Item', 'ITEM_PROVIDER' => DocumentGenerator\DataProvider\HashDataProvider::class, ] ), 'TableProdItemName' => 'Table.Item.Name', 'TableProdItemQuantity' => 'Table.Item.Quantity', 'TableProdItemMeasureName' => 'Table.Item.MeasureName', 'TableProdItemPriceRaw' => 'Table.Item.PriceRaw', 'TableProdItemPriceRawSum' => 'Table.Item.PriceRawSum', 'TableProdIndex' => 'Table.INDEX', ]); $body->setFields([ 'TableItemImage' => ['TYPE' => 'IMAGE'], ]); $result = $body->process(); if(!$result->isSuccess()) { echo '<pre>'; print_r($result->getErrorMessages()); echo '</pre>'; } else { $content = $body->getContent(); file_put_contents($path_local .'/body_test.docx', $content); } //echo '<pre>'; // print_r($path_www ); // echo '</pre>';exit; |
|
|
|
|
|
use Bitrix\DocumentGenerator\Model\TemplateTable;
\Bitrix\Main\Loader::includeModule('documentgenerator'); $templateId = 42; $invoiceId = '{=Document:ID}'; $template = \Bitrix\DocumentGenerator\Template::loadById($templateId); $template->setSourceType(\Bitrix\Crm\Integration\DocumentGenerator\DataProvider\Invoi $document = \Bitrix\DocumentGenerator\Document::createByTemplate($template, $invoiceId); $result = $document->getFile(); if($result->isSuccess()) { echo '<pre>'; print_r($result->getData()); echo '</pre>'; } else { echo '<pre>'; print_r($result->getErrorMessages()); echo '</pre>'; } возвращает {"data":{"workflow_id":"5e41e00ca22da0.55646916"},"errors":[],"success":true} , но в список документов ничего не выводит, документ не генерится. Если изменить на: echo '<pre>'; print_r($result->getErrorMessages()); echo '</pre>';exit; То выведет в ответе [0] => Cant process document on template without sourceType Провайдер не переопределял, в БП только php блок с этим кодом. |
|
|
|
|