<?
class phpoffice_phpspreadsheet extends CModule
{ function __construct()
{ $arModuleVersion = array();
include(__DIR__."/version.php");
$this->MODULE_ID = 'phpoffice.phpspreadsheet';
$this->MODULE_VERSION = $arModuleVersion["VERSION"];
$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
$this->MODULE_NAME = "PhpOffice.PhpSpreadsheet";
$this->MODULE_DESCRIPTION = "PhpOffice.PhpSpreadsheet";
} public function DoInstall(){
\Bitrix\Main\ModuleManager::registerModule($this->MODULE_ID); } public function DoUninstall(){ \Bitrix\Main\ModuleManager::unRegisterModule($this->MODULE_ID); }
}
В файле include.php нечего писать не нужно, а в файле version.php укажите версию модуля, например :
<? $arModuleVersion = array( "VERSION" => "1.6.0", "VERSION_DATE" => "2019-01-02 15:00:00" ); ?>
После этого модуль появится в списке установленных решений в разделе Marketplace, но его надо будет еще установить, выбрав действие в строке этого модуля в этом списке.
После используем этот модуль для создания функционала выгрузки дел в СРМ Битрикс24 в ексель.
Для этого скопируем шаблон вывода списка дел, чтобы добавить в него функционал выгрузки дел в ексель.
В этом шаблоне изменим файл template.php, в котором по сути добавим подключение модуля выгрузки в ексель и формирование ексель файла сделаем на основе вывода таблицы списка дел. Создадим отдельную страницу, куда скопируем вызов компонента списка дел, но с нашим шаблоном.
<?php
define("NO_KEEP_STATISTIC", true); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if(\Bitrix\Main\Loader::includeModule('phpoffice.phpspreadsheet')){ /*выгрузка в ексель*/ $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $h=[]; foreach($arResult["HEADERS"] as $head) { $h[]=$head["name"]; } $arrayData = []; $arrayData[]=$h;/*заголовки*/ foreach($arResult['ITEMS'] as $item){ $row=[]; if($item["COMPLETED"]=="Y") $item["COMPLETED"]="Выполнено"; else $item["COMPLETED"]="Не выполнено"; if($item['TYPE_ID']== CCrmActivityType::Meeting){ $item['TYPE_ID'] = "Встреча"; } elseif($item['TYPE_ID']== CCrmActivityType::Call){ $item['TYPE_ID'] = "Звонок"; } $temp=explode(" ",$item["DEADLINE"]);
$item["DEADLINE"]=$temp[0]; $temp1=explode(" ",$item["CREATED"]);
$item["CREATED"]=$temp1[0]; foreach($arResult["HEADERS"] as $head){ if($head["id"]=="CLIENT"){ $row[]=$item["CLIENT_INFO"]["TITLE"];
}elseif($head["id"]=="REFERENCE"){
$row[]="Сделка № ".$item["OWNER_ID"];
}else $row[]=$item[$head["id"]];
}
$arrayData[]=$row;/*строка значений*/ } $spreadsheet->getActiveSheet() ->fromArray( $arrayData, NULL, 'A1' ); $writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); $name=date("Y-m-d_H-i-s"); $writer->save($_SERVER["DOCUMENT_ROOT"].'/upload/export/'.$name.'.xlsx'); }?> <a id="downloadxlsx" href="/upload/export/<?=$name?>.xlsx">Скачать <?=$name?>.xlsx</a> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); ?>
Далее на странице списка дел разместим следующий код для добавления кнопки выгрузки встреч, писем, звонков в ексель.
<a href="javascript:void(0);" class="ui-btn ui-btn-primary" id="exportxlsx" style="float:right;margin-right: 30px;width: 200px;">Экспорт в Excel</a> <div id="xlsxfile" style="padding: 30px 0;"></div>
<script> $(document).ready(function(){ $("#exportxlsx").appendTo(".pagetitle-flexible-space"); var str=document.location.href; if(str.indexOf("apply_filter=Y")>0){ $(".main-ui-search").trigger("click"); } });
$("#exportxlsx").on("click",function(){ $("#xlsxfile").html(" "); $.ajax({ type: "GET", url:"/crm/activity/export.php", dataType:"html", }) .done(function(data){ $("#xlsxfile").append(data); var link=$("#downloadxlsx").attr("href"); document.location.href=link; }); }); </script>