Advertisement
Trigub_Ilia

Формирование csv файла посредством битрикс

Jun 17th, 2019
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.98 KB | None | 0 0
  1. <?php
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
  3. require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php");
  4.  
  5. CModule::IncludeModule('iblock');
  6. CModule::IncludeModule('catalog');
  7.  
  8. $arRows = array();
  9. $IBLOCK_ID = 21;
  10. $arSelect = Array("ID", "IBLOCK_ID", "NAME", "PREVIEW_PICTURE", "PROPERTY_CML2_ARTICLE");
  11. $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
  12. $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
  13. while($ob = $res->GetNextElement()){
  14.     $arFields = $ob->GetFields();
  15.  
  16.     $ID = $arFields["ID"];
  17.  
  18.     $ar_res = CPrice::GetBasePrice($ID);
  19.     $IMAGES = CFile::GetPath($arFields["PREVIEW_PICTURE"]);
  20.  
  21.     $arRows[] = array("№"=>$ID,"Артикул"=>$arFields["PROPERTY_CML2_ARTICLE_VALUE"],"Наименование"=>mb_convert_encoding($arFields["NAME"],'windows-1251'),"Изображение"=>$IMAGES,"Цена (руб.)"=>$ar_res["PRICE"]);
  22.  
  23.     $arInfo = CCatalogSKU::GetInfoByProductIBlock($IBLOCK_ID);
  24.     if (is_array($arInfo)) {
  25.         $rsOffers = CIBlockElement::GetList(array(), array('IBLOCK_ID' => $arInfo['IBLOCK_ID'], 'PROPERTY_' . $arInfo['SKU_PROPERTY_ID'] => $ID), false, false, array("ID", "IBLOCK_ID", "NAME", "PROPERTY_CML2_ARTICLE"));
  26.         while ($arOffer = $rsOffers->GetNext()) {
  27.             $arRows[] = array("№"=>"","Артикул"=>$arOffer["PROPERTY_CML2_ARTICLE_VALUE"],"Наименование"=>mb_convert_encoding($arOffer["NAME"],'windows-1251'),"Изображение"=>"","Цена (руб.)"=>"");
  28.         }
  29.     }
  30.     $arRows[] = array("№"=>"","Артикул"=>"","Наименование"=>"","Изображение"=>"","Цена (руб.)"=>"");
  31. }
  32.  
  33.  
  34. //Очистим старый прайс
  35. $filePath = $_SERVER['DOCUMENT_ROOT'] . '/priceList.csv';
  36. $fp = fopen($filePath, 'w+');
  37. @fclose($fp);
  38. global $USER;
  39. $USER->Authorize(1);
  40. //Зададим режим работы класса, установим разделитель данных, отметим, что в первой строке содержатся заголовки данных:
  41. $fields_type = 'R'; //дописываем строки в файл
  42. $delimiter = ";";   //разделитель для csv-файла
  43. $csvFile = new \CCSVData($fields_type, false);
  44. $csvFile->SetFieldsType($fields_type);
  45. $csvFile->SetDelimiter($delimiter);
  46. $csvFile->SetFirstHeader(true);
  47.  
  48. //Запишем в файл заголовки:
  49. $arFields = array("№","Артикул","Наименование","Изображение","Цена (руб.)");
  50. $csvFile->SaveFile($filePath, $arFields);
  51.  
  52. //Пройдемся по всем строкам данных и допишем их в файл:
  53. foreach ($arRows as $row)
  54. {
  55.     $writeAr = array();
  56.     foreach ($arFields as $field)
  57.     {
  58.         $writeAr[] = $row[$field];
  59.     }
  60.     echo "<pre>";
  61.     print_r($writeAr);
  62.     echo "</pre>";
  63.     $csvFile->SaveFile($filePath, $writeAr);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement