Сложность урока:
1 уровень — интуитивно все понятно из интерфейса, но почитать стоит.
1 из 5
Дата изменения:
12.03.2023
Просмотров:
48725
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Ограничений нет
Как получить данные из системы в формате MS Excel |
Сохранить данные из «1С-Битрикс: Управление сайтом» на локальный компьютер — достаточно частая задача. Для такой операции используется формат MS Excel. Экспорт в него прост, выполняется в пару кликов прямо из Списка элементов. Используйте для этого кнопку
Настроить
.
Если перед экспортом воспользоваться
фильтром
Фильтр — инструмент «1С-Битрикс: Управление сайтом», позволяющий отобрать из множества элементов нужные по каким-то параметрам. Подробнее…
, то можно сохранить список только нужных вам элементов, а не всех подряд. Другой вариант: настроить таблицу экспортируемых данных, оставив в ней только нужные столбцы, как это описано в уроке Список элементов.
/**
* Формирует список товаров в заказе и выгружает данные в xlsx файл
* Принимает номер заказа
* @global object $APPLICATION
* @param int $order_num
*/
function exportXlsx($order_num) {
global $APPLICATION;
$book = ‘list1’; //Название книги в файле
$order = SaleOrder::load($order_num); //Объект заказа Bitrix D7
$order_date = $order->getDateInsert()->toString(); //строка — дата создания заказа
$basket = $order->getBasket(); //Объект корзины Bitrix D7
include_once ‘xlsxwriter.class.php’; //Подключение библиотеки для манипуляции с xlsx
$filename = «order_» . $order_num . «.xlsx»; //Имя сформированного файла
/**
* Формируем заголовки отправляемые в браузер (Что бы пользователю был предложен диалог сохранения файла)
*/
header(‘Content-disposition: attachment; filename=»‘ . XLSXWriter::sanitize_filename($filename) . ‘»‘);
header(«Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet»);
header(‘Content-Transfer-Encoding: binary’);
header(‘Cache-Control: must-revalidate’);
header(‘Pragma: public’);
//Шапка формируемого файла
$header = array(
‘Код товара’ => ‘string’, //Название колонки — тип данных
‘Наименование’ => ‘string’,
‘Цена’ => ‘price’,
‘Количество’ => ‘integer’,
‘Номер заказа’ => ‘integer’,
‘Дата заказа’ => ‘string’,
);
//Конвертация заголовков в UTF-8 если ваш сайт Bitrix в кодировке Windows-1251
if (SITE_CHARSET == ‘windows-1251’) {
$header = array(
($APPLICATION->ConvertCharset(‘Код товара’, SITE_CHARSET, ‘UTF-8’)) => ‘string’,
($APPLICATION->ConvertCharset(‘Наименование’, SITE_CHARSET, ‘UTF-8’)) => ‘string’,
($APPLICATION->ConvertCharset(‘Цена’, SITE_CHARSET, ‘UTF-8’)) => ‘price’,
($APPLICATION->ConvertCharset(‘Количество’, SITE_CHARSET, ‘UTF-8’)) => ‘integer’,
($APPLICATION->ConvertCharset(‘Номер заказа’, SITE_CHARSET, ‘UTF-8’)) => ‘integer’,
($APPLICATION->ConvertCharset(‘Дата заказа’, SITE_CHARSET, ‘UTF-8’)) => ‘string’,
);
}
$rows = []; //Массив данных для записи в файл
foreach ($basket->getBasketItems() as $item) {//Обход элементов корзины Bitrix D7
$name = $item->getField(‘NAME’);
//Масив данных одной строки файла
$tmp_row = [
$item->getField(‘PRODUCT_XML_ID’), //Код товара
$name, //Наименование
$item->getPrice(), //Цена
$item->getQuantity(), //Количество
$order_num, //Номер заказа
$order_date, //Дата заказа
];
//Конвертация данных в UTF-8 если ваш сайт Bitrix в кодировке Windows-1251
if (SITE_CHARSET == ‘windows-1251’) {
$tmp_row = $APPLICATION->ConvertCharsetArray($tmp_row, SITE_CHARSET, ‘UTF-8’);
}
$rows[] = $tmp_row;
}
$writer = new XLSXWriter();
$writer->setAuthor(‘Coderun’); //Автор документа
$writer->writeSheetHeader($book, $header); //Установка шапки для указанной книги в документе
//Добавление строки из ранее сформированного массива
foreach ($rows as $row) {
$writer->writeSheetRow($book, $row);
}
//Запись файла в поток вывода
$writer->writeToStdOut();
}
Просмотров: 1900
Задача: Нужно получить информацию о заказах с возможностью указания даты создания «от»» и «до» и выгрузить в Excel файл. Так как заказов может быть очень много, за один шаг это не провернуть (скорее всего, сайт отвалится по таймауту) нужно сделать это пошагово с небольшой паузой между шагами.
Сделано по быстрому, позже дополню заметку, завернув все проделанное в модуль с установщиком, D7 и AJAX.
Создаем директорию, например: «order_report», что бы к ней не было доступа для всех, можно создать в директории /bitrix/components
В файле init.php добавляем запись, которая создаст пункт меню в админпанели, в разделе «Сервис»:
AddEventHandler("main", "OnBuildGlobalMenu", "AddReportMenus");
function AddReportMenus(&$adminMenu, &$moduleMenu){
$moduleMenu[] = array(
"parent_menu" => "global_menu_services",
"section" => "Генератор отчетов по заказам",
"sort" => 1000,
"url" => "/bitrix/components/elements_report/step1.php",
"text" => 'Генератор отчетов по заказам',
"title" => '',
"icon" => "form_menu_icon",
"page_icon" => "form_page_icon",
"items_id" => "",
"items" => array()
);
}
В директории «elements_report» создаем три файла: generated.xls.php, step1.php, step2.php. Файл generated.xls.php оставляем пустым
Суть в том, что мы просто создаем html таблицу с отчетом, а затем с помощью передачи header-s сохраняем и скачиваем ее как xls файл.
Таким же образом, можно создать эксель таблицу из HTML для любых данных.
Файл step1.php. Здесь у нас просто форма выбора даты «от» и «до» которая отправляет данные на файл step2.php
<?
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php");
$APPLICATION->SetTitle("Генератор отчета по элементам");
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php");
CJSCore::Init(array("jquery"));
?>
<div class="adm-block-wrapper">
<form action="step2.php" method="post">
<input type="text" placeholder="Дата с" onclick="BX.calendar({node: this, field: this, bTime: false});"
name="dateFrom">
<input type="text" placeholder="Дата по" onclick="BX.calendar({node: this, field: this, bTime: false});"
name="dateTo">
<button type="submit" class="adm-btn adm-btn-save">Создать отчет</button>
</form>
</div>
<?
require($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_admin.php"); ?>
Файл step2.php: здесь выполняется заполнение файла generated.xls.php.
- Сначала очищается от предыдущего отчета.
- Добавляется шапка для верстки и заголовков.
- С помощью CSaleOrder::GetList получаем всю информацию о заказах отсортированных по ID и с фильтром DATE_INSERT.
- С nTopCount обрабатываем по 50 заказов за раз
- Внутри цикла заказа дополучаем информацию о корзине заказа с CSaleBasket::GetList с нужными для отчета данным.
- Формируем строку таблицы с данными о товаре и добавляем в конец файла generated.xls.php
<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php");
$APPLICATION->SetTitle("Генератор отчета по заказам");
CJSCore::Init(array("jquery"));
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php");
use BitrixMainLoader;
use BitrixSale;
Loader::includeModule("sale");
$generated_xls_php = 'generated.xls.php';
if (!empty($_POST['lastOrderId'])) {
$arFilter = array(
">=DATE_INSERT" => $_POST['dateFrom'],
"<=DATE_INSERT" => $_POST['dateTo'],
">ID" => $_POST['lastOrderId']
);
} else {
$arFilter = array(
">=DATE_INSERT" => $_POST['dateFrom'],
"<=DATE_INSERT" => $_POST['dateTo']
);
file_put_contents($generated_xls_php, '');
$fileHeader = '<?
Header("Content-Type: application/force-download");
Header("Content-Type: application/octet-stream");
Header("Content-Type: application/download");
Header("Content-Disposition: attachment;filename=excel_orders.xls");
Header("Content-Transfer-Encoding: binary");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
td {
mso-number-format: @;
}
.number0 {
mso-number-format: 0;
}
.number2 {
mso-number-format: Fixed;
}
</style>
</head>
<body>
<table border="1">
<tr>
<td>ID заказа</td>
<td>ID товара</td>
<td>Наименование товара</td>
<td>Наименование [ID] товара</td>
<td>Заказ: Доставка</td>
<td>Оплата: Дата оплаты</td>
<td>Оплата: Сумма</td>
<td>Отгрузка: Дата отгрузки</td>
<td>Общее количество в заказе</td>
<td>Цена товара</td>
<td>Скидка на товар</td>
<td>Количество товара</td>
<td>Сумма товара</td>
<td>Налог (%)</td>
<td>Оплата: Дата докуммента возврата</td>
<td>Статус: Наименование</td>
<td>Заказ: Заказ отменён</td>
</tr>';
file_put_contents($generated_xls_php, $fileHeader, FILE_APPEND);
}
$dbRes = CSaleOrder::GetList(
array(
'ID' => 'ASC'
),
$arFilter,
false,
array(
'nTopCount' => '50'
),
array(
'ID',
'PRICE_DELIVERY',
'DATE_PAYED',
'SUM_PAID',
'DATE_DEDUCTED',
'TAX_VALUE',
'STATUS_ID'
),
false,
);
$i = 0;
while ($order = $dbRes->Fetch()) {
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC",),
array("ORDER_ID" => $order['ID']),
false,
false,
array("PRODUCT_ID", "QUANTITY", "NAME", "PRICE", "DISCOUNT_VALUE")
);
while ($arItems = $dbBasketItems->Fetch()) {
$arBasketItems[] = $arItems;
}
if ($order['CANCELED'] == 'Y') {
$canceled = 'Да';
}
$statusList = CSaleStatus::GetList(
array(),
array('ID' => $order['STATUS_ID']),
false,
false,
array('NAME')
);
while ($status = $statusList->Fetch()) {
$statusName = $status['NAME'];
}
foreach ($arBasketItems as $k => $arBasketItem) {
$orderData = '<tr>
<td>' . $order['ID'] . '</td>
<td>' . $arBasketItem['PRODUCT_ID'] . '</td>
<td>' . $arBasketItem['NAME'] . '</td>
<td>' . $arBasketItem['NAME'] . ' [' . $arBasketItem['PRODUCT_ID'] . ']</td>
<td>' . $order['PRICE_DELIVERY'] . '</td>
<td>' . $order['DATE_PAYED'] . '</td>
<td>' . $order['SUM_PAID'] . '</td>
<td>' . $order['DATE_DEDUCTED'] . '</td>
<td>' . $arBasketItem['QUANTITY'] . '</td>
<td>' . $arBasketItem['PRICE'] . '</td>
<td>' . $arBasketItem['DISCOUNT_VALUE'] . '</td>
<td>' . $arBasketItem['QUANTITY'] . '</td>
<td>' . $arBasketItem['QUANTITY'] * $arBasketItem['PRICE'] . '</td>
<td>' . $order['TAX_VALUE'] . '</td>
<td>' . $order['DATE_CANCELED'] . '</td>
<td>' . $statusName . '</td>
<td>' . $canceled . '</td>
</tr>';
file_put_contents($generated_xls_php, $orderData, FILE_APPEND);
}
$i++;
$lastOrderId = $order['ID'];
}
if ($i > 1) { ?>
<form action="" method="post" id="postStep" style="display: none;">
<input type="text" name="lastOrderId" value="<?= $lastOrderId ?>">
<input type="text" name="dateFrom" value="<?= $_POST['dateFrom'] ?>">
<input type="text" name="dateTo" value="<?= $_POST['dateTo'] ?>">
<button type="submit"></button>
</form>
<div class="waitwindow" style="width: 500px;">
Отчет готовится с шагом <?=$i?> заказов за запрос и паузой 1 секунда
</div>
<script>
function postForm() {
$("#postStep").submit();
}
setTimeout(postForm, 1000);
</script>
<?php
} else {
file_put_contents($generated_xls_php, '</table></body></html>', FILE_APPEND);?>
<a href="generated.xls.php" class="adm-btn adm-btn-save">Скачать отчет</a>
<a href="step1.php" class="adm-btn adm-btn-save">Создать новый отчет</a>
<?php
//LocalRedirect('generated.xls.php');
}?>
<?php
require($_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/epilog_admin.php"); ?>
- В конце обработки пороции из 50-ти заказов, отправляем форму на этуже страницу- с изначально заданными датами и ID последнего обработанного заказа.
- Эта форма будет отправляться до тех пор, пока колличество заказов больше одного. После обработки последнего выведутся ссылки на скачивание отчета и создание нового.
При желании можете расскомментировать строку LocalRedirect(‘generated.xls.php’);, тогда отчет скачается сразу по готовности.
Улучшение, генерируем xls сразу, без промежуточного php файла
Если файл generated.xls.php получается очень большим, сервер может не справиться с отдачей его как xls файла. На самом деле, можно сразу создать xls файл с таблицей, он точно также откроется экселем.
В файле step2.php меняем
$generated_xls_php = ‘generated.xls.php’;
на $generated_xls_php = ‘generated.xls’;
Из заголовка генерируемого файла убираем:
<?
Header("Content-Type: application/force-download");
Header("Content-Type: application/octet-stream");
Header("Content-Type: application/download");
Header("Content-Disposition: attachment;filename=excel_orders.xls");
Header("Content-Transfer-Encoding: binary");
?>
Ссылку на скачивание готового отчета меняем на:
<a href="generated.xls" download class="adm-btn adm-btn-save">
Скачать отчет
</a>
<?
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', true);
define('NO_AGENT_STATISTIC', true);
define('STOP_STATISTICS', true);
define('BX_CRONTAB_SUPPORT', true);
define('LANGUAGE_ID', 'ru');
ini_set('memory_limit', '512M');
@set_time_limit(0);
@ignore_user_abort(true);
// для запуска на cron необходимо указать корректный путь к корневой папке сайта
$_SERVER["DOCUMENT_ROOT"] = "/home/bitrix/www";
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$file = $_SERVER["DOCUMENT_ROOT"] . '/export/orders.xls';
CModule::IncludeModule("sale");
use Bitrix\Sale;
$arFilter = Array(
">=DATE_INSERT" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), strtotime('yesterday')),
"<DATE_INSERT" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), strtotime('today'))
);
$arOrders = array();
$db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter);
$i = 0;
while ($ar_sales = $db_sales->Fetch())
{
$basket = Sale\Order::load($ar_sales['ID'])->getBasket();
$basketItems = $basket->getBasketItems();
$counter = 0;
foreach ($basket as $basketItem) {
$productId = $basketItem->getProductId();
$measure = \Bitrix\Catalog\ProductTable::getCurrentRatioWithMeasure($productId);
$arOrders[$i]['ITEMS'][$counter] = $basketItem->getField('NAME') . ' - ' . $basketItem->getQuantity() . ' ' . $measure[$productId]['MEASURE']['SYMBOL_RUS'];
$counter++;
}
$arOrders[$i]['DATE_INSERT_FORMAT'] = $ar_sales['DATE_INSERT_FORMAT'];
$arOrders[$i]['ID'] = $ar_sales['ID'];
$arOrders[$i]['PRICE_DELIVERY'] = $ar_sales['PRICE_DELIVERY'];
$arOrders[$i]['PRICE'] = $ar_sales['PRICE'];
$i++;
}
//echo "<pre>";
//print_r($arOrders);
//echo "</pre>";
$str = "";
$str .= "<html>
<head>
<title></title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<style>
td {mso-number-format:\@;}
.number0 {mso-number-format:0;}
.number2 {mso-number-format:Fixed;}
</style>
</head>
<body><table border='1'>
<tr>
<td>Дата заказа</td>
<td>Номер заказа</td>
<td>Стоимость доставки</td>
<td>Полная стоимость заказа</td>
<td>Позиции</td>
</tr>";
foreach ($arOrders as $order)
{
$rowspan = count($order['ITEMS']) > 1 ? 'rowspan="' . count($order['ITEMS']) . '"' : '';
$str .= "
<tr>
<td {$rowspan}>{$order['DATE_INSERT_FORMAT']}</td>
<td {$rowspan}>{$order['ID']}</td>
<td {$rowspan}>{$order['PRICE_DELIVERY']}</td>
<td {$rowspan}>{$order['PRICE']}</td>
<td>{$order['ITEMS'][0]}</td>
</tr>
";
if(count($order['ITEMS']) > 1) {
foreach ($order['ITEMS'] as $key => $value) {
if($key == 0) continue;
$str .= "
<tr>
<td>{$value}</td>
</tr>
";
}
}
}
$str .= "</table></body></html>";
//echo $str;
$fp = fopen($file, 'w');
fwrite($fp, $str);
fclose($fp);
$arFiles = array($file);
CEvent::Send("ORDERS_EXPORT", 's2', array(), "N", "", $arFiles);
{«id»:13908,»url»:»/distributions/13908/click?bit=1&hash=133de0e955bbec5d717fb9301ea71e7f16337b853e6c441bb5b7795cf9ea4268″,»title»:»u00abu042fu043du0434u0435u043au0441 u041cu0430u0440u043au0435u0442u00bb u0440u0430u0441u0441u043au0430u0436u0435u0442, u043au0430u043a u0432u044bu0434u0435u043bu0438u0442u044cu0441u044f u0441u0440u0435u0434u0438 u043au043eu043du043au0443u0440u0435u043du0442u043eu0432″,»buttonText»:»u041au0430u043a?»,»imageUuid»:»b9420963-8e52-52ed-a1d6-68e14e88996e»,»isPaidAndBannersEnabled»:false}
Сегодня расскажем как экспортировать из Битрикс24 базу клиентов в Excel.
Рассмотрим на примере экспорта Лидов.
Инструкция:
- Войдите в свой Битрикс24 и выберите в верхнем меню раздел Лиды
2. Далее настройте фильтр лидов, которые хотите экспортировать. Для этого нажмите на строку Поиск. В новом окне выберите какие Лиды вас интересуют и нажмите кнопку Найти
3. Теперь нажмите на опцию Список в верхнем углу справа, чтобы увидеть все Лиды в виде списка
4. В этом списке нужно выделить все Лиды (поставьте галочку)
5. Внизу списка нужно указать выбор Для всех
6. После чего нажмите кнопку Подтвердить
7. Затем нажмите на кнопку Настройки (Шестеренка) и выберите в предложенном списке опцию Экспорт Лидов в Excel
8. В новом окошке нужно указать в каком виде экспортировать Лиды, выбрать можно все, поставив галочки, потом нажмите кнопку Выполнить
9. Появится окошко Экспорт Лидов в Excel, здесь будет указан размер файла. Здесь нажмите кнопку Скачать файл экспорта
10. Появится новое окно, с загружаемым файлом. В котором нужно нажать кнопку Сохранить
11. Откройте скачанный файл и нажмите кнопку Разрешить редактирование. Теперь ваша база клиентов размещена в таблице Excel, где все данные и поля при экспорте успешно сохранились
Все, готово! Такой же алгоритм действий применим к экспорту Компаний, Сделок и Контактов из Битрикс24 в Excel.
❗❗❗Важно! Чтобы избежать воровства базы клиентов из Битрикс24, необходимо правильно настроить права доступа.
Как защитить Лиды, Сделки, Контакты и Компании от кражи в Битрикс24?
Инструкция:
- В Битрикс24 в верхнем меню нажмите на раздел Настройки и выберите подраздел Права.
2. Далее нажмите на блок Права
3. Открылось окно Права Доступа. Здесь есть Список ролей, выберите нужное из этого списка и нажмите Редактировать (маленький карандашик сбоку)
4. Теперь в окне Управление ролью вы можете в каждом Разделе (Экспорт, Удаление) выбрать опцию Нет доступа.
Теперь ваша база данных будет в целости и сохранности.
Подробнее смотрите наши видео здесь.
О том как выгрузить базу в Битрикс24 смотрите здесь.
⚠ Получите консультацию по внедрению, настройке, технической поддержки Битрикс24:
➡ по телефону (WhatsApp 💬) ☎: +7 (999) 333-17-23
🔊 Подписывайтесь на Telegram канал — получайте новые видео и статьи по возможностям Битрикс 24, обучающие видео Битрикс24, кейсы по Битрикс24 https://t.me/b24_k
🔊 Присоединяйтесь к чату взаимопомощи по Битрикс24 в Telegram! https://t.me/b24help
✅ В этом чате Вы можете задать любой вопрос по работе с Битрикс24, Вам ответят компетентные пользователи 🤗
Хотите повысить эффективность бизнес-процессов?
Получите оценку работ по внедрению Битрикс24
Как из Битрикс24 выгрузить всю клиентскую базу в Excel?
- отдельно Лиды
- отдельно Сделки
- Контакты
- Компании
Чтобы экспортировать клиентскую базу в Excel необходимо:
1. Перейти в нужный раздел (Лиды/Сделки/Контакты/Компании)
2. Нажать на шестеренку справа сверху и выбрать пункт «Экспорт в Excel»
- Если вы не укажите ни одного из предложенных пунктов, то база выгрузится с теми данными, которые сейчас у вас отображаются на экране — в списке Лидов/Сделок/Контактов/Компаний
- Если вы укажете «Экспортировать реквизиты», то выгрузка будет содержать значения из специального раздела «Реквизиты»
- Если вы укажете «Экспортировать все поля Контактов/Сделок/Лидов/Компаний», то вы выгрузите данные из всех полей, которые есть в Лиде, Сделке, Контакте или Компании
- Если вы укажете «Экспортировать с детализацией по товарным позициям», то при выгрузке Сделок у вас также будет отображаться список товаров в каждой сделке.
Выглядеть выгрузка с товарами будет примерно так:
4. После уточнения деталей экспорта нажмите на кнопку «Выполнить» — Битрикс24 сформирует для вас файл для экспорта.
Затем скачайте его, нажав на кнопку «СКАЧАТЬ».
Затем можно закрыть окошко экспорта. Всё.
ПРОБЛЕМЫ С ЭКСПОРТОМ
Иногда может случиться такое, что система вам указывает, что у вас нет данных для экспорта. При этом база клиентов есть.
Это происходит из-за того, что в карточке клиента установлена галочка «Не участвует в экспорте»
Это правило можно изменить массово.
Для этого:
1. выберите все элементы сразу (Контакты, например) — галочкой слева сверху
2. внизу нажмите на кнопку «Выберите действие»
3. выберите пункт «Участвует в экспорте»
4. можете установить галочку так же и в пункте «для всех», но аккуратнее. — действие будет применено абсолютно для всех элементов (всех Контактов, например). Если вам нужно сделать доступными для экспорта только часть элементов, то тогда не нужно устанавливать эту галочку и наоборот.
5. после этого вы сможете экспортировать базу клиентов
Как выгрузить контакты из Битрикс24 в Excel
Чтобы выгрузить контакты из CRM нужно перейти в Контакты ㄧ режим «Список».
Сначала выбираем, какие поля должны отображаться в режиме список. Для этого нажимаем на иконку шестеренки слева и ставим галочки напротив пунктов, которые должны отобразиться в списке.
Указываем в поле «Участвуют в экспорте» значение «Да».
Кликаем на шестеренку ㄧ выбираем «Экспорт контактов в Excel». Указываем, нужно ли экспортировать реквизиты и все поля. Применяем настройки, сохраняем и открываем документ.
Экспорт данных в CRM Битрикс24
Для экспорта данных необходимо перейти в тот список сущностей, которые вы хотите экспортировать, далее нажмите на кнопку настроек в списке сущностей и вы увидите доступные варианты для экспорта.
На данный момент есть три варианта экспорта сущностей из CRM:
1. Экспорт в CSV.
После выбора этого способа система предложит вам сохранить файл в формате CSV.
Вы также можете открыть файл сразу в соответствующей программе.
2. Экспорт в Excel.
3. Экспорт в Outlook.
По клику на этот способ система предложит открыть Microsoft Outlook. Нажмите «Ок». Программа запросит у вас разрешение к подключению контактов, нажмите «Да». Во всплывающем окне введите логин и пароль от вашего портала. И после этого будет произведен экспорт контактов.
Обратите внимание, данный способ доступен только для контактов.
Внимание! Для корректной интеграции контактов с Outlook необходим минимум Outlook 2007.
Какие колонки будут экспортированы?
Колонки в файле экспорта будут такие же, как на странице списка элементов. Добавить/изменить/удалить колонки можно в настройках списка:
В списке полей отметьте поля, которые хотите экспортировать, и в конце списка нажмите «Применить».
Учитывается ли фильтр при экспорте?
При экспорте будет учтено применен ли фильтр к списку сущностей.
Например, вам необходимо экспортировать только ваши контакты, где вы установлены, как ответственный.
Тогда в фильтре в поле «Ответственный» укажите себя, нажмите «Найти» и после этого произведите экспорт, сущности будут экспортированы в соответствии с фильтром.
Обратите внимание, для успешного экспорта контактов в настройках контакта должна быть отмечена опция «Участвует в экспорте контактов».
В предыдущем посте писал о том, что была задача выгрузить информацию по заказам в файл xls для последующей обработки.
Если нужно сгенерировать файл со стилями, с функциями, со сложными обработками — тут, конечно же не обойтись без специальных библиотек, вродe PHPExcel. Но если нужны просто данные, которые можно открыть в экселе, как нужно подправить и отправить на печать — тут можно обойтись и без сторонних библиотек.
В нашем, упрощенном варианте, мы просто создадим html-файл с таблицей, который сохраним как .xls. А при открытии экселем данный файл автоматически будет прочитан в таблицу.
Итак, для начала получаем всю необходимую информацию по заказам:
use BitrixMainIO; use BitrixMainApplication; BitrixMainLoader::includeModule('sale'); $orders = array(XXX.....); // - массив из идентификаторов заказов, которые нужно выгрузить if(!empty($orders)) { $arOrdersList = array(); foreach ($orders as $orderID) { $order = BitrixSaleOrder::load(intval($orderID)); $propertyCollection = $order->getPropertyCollection(); $arProperties = array(); foreach ($propertyCollection->getArray()['properties'] as $property) { $arProperties[$property['CODE']] = array( 'NAME'=>$property['NAME'], 'VALUE'=>$property['VALUE'][0] ); } $arBasket = array(); $basketItems = $order->getBasket()->getBasketItems(); foreach ($basketItems as $basketItem) { $arBasket[] = array( 'ID'=>$basketItem->getId(), 'PRODUCT_ID'=>$basketItem->getProductId(), 'NAME'=>$basketItem->getField('NAME'), 'PRICE'=>$basketItem->getPrice(), 'QUANTITY'=>$basketItem->getQuantity(), 'FINAL_PRICE'=>$basketItem->getFinalPrice() ); } $arOrdersList[] = array( 'ID'=>$order->getId(), 'NUMBER'=>$order->getField('ACCOUNT_NUMBER'), 'OWNER'=>$arProperties['FIO']['VALUE'], 'PHONE'=>$arProperties['PHONE']['VALUE'], 'ADDR'=>$arProperties['ADDRESS']['VALUE'], 'BASKET'=>$arBasket, 'ORDER_SUM'=>$order->getPrice(), 'ORDER_SUM_PAYD'=>$order->getSumPaid(), 'USER_DESCRIPTION'=>$order->getField('USER_DESCRIPTION'), 'COMMENTS'=>$order->getField('COMMENTS'), 'ADDITIONAL_INFO'=>$order->getField('ADDITIONAL_INFO'), ); } }
Дальше — создаем файл, в который помещаем полученную информацию:
$resultFile = '/upload/data.xls'; $resultAbsFile = Application::getDocumentRoot().$resultFile; $file = new IOFile($resultAbsFile); $file->putContents('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="author" content="author" /&пt; <title>Demo</title> </head> <body> '); $file->putContents('<table border="1 cellspacing="0" cellpadding="0" class="ta1">',IOFile::APPEND); $file->putContents('<tr> <th>№ заказа</th> <th>Покупатель</th> <th>Телефон</th> <th>Адрес доставки:<br> из поля коментарий</th> <th>Состав заказа</th> <th>Кол-во</th> <th>Цена<br>Цена в чек</th> <th>Итого к оплате <br>Наложенный платеж</th> </tr>',IOFile::APPEND);
Помещаем в файл информацию по заказам:
foreach ($arOrdersList as $arOrder) { $addrLine = $arOrder['ADDR']; if(strlen($arOrder['COMMENTS'])>0) $addrLine .= '<br>'.$arOrder['COMMENTS']; if(strlen($arOrder['USER_DESCRIPTION'])>0 && $arOrder['USER_DESCRIPTION']!==$arOrder['COMMENTS']) $addrLine .= '<br>'.$arOrder['USER_DESCRIPTION']; $basketLine = '<td>'; foreach ($arOrder['BASKET'] as $num=>$arBasketItem) { $basketLine.=$arOrder['BASKET'][$num]['NAME'].(count($arOrder['BASKET'])>0 ? '<br>' : ''); } $basketLine .= '</td>'; $basketLine.='<td>'; foreach ($arOrder['BASKET'] as $num=>$arBasketItem) { $basketLine.=$arOrder['BASKET'][$num]['QUANTITY'].(count($arOrder['BASKET'])>0 ? '<br>' : ''); } $basketLine.='</td>'; $basketLine.='<td>'; foreach ($arOrder['BASKET'] as $num=>$arBasketItem) { $basketLine.=$arOrder['BASKET'][$num]['PRICE'].(count($arOrder['BASKET'])>0 ? '<br>' : ''); } $basketLine.='</td>'; $file->putContents('<tr>',IOFile::APPEND); $file->putContents(' <td>'.$arOrder['NUMBER'].'</td> <td>'.$arOrder['OWNER'].'</td> <td>'."'".$arOrder['PHONE']." ".'</td> <td>'.$addrLine.'</td>' .$basketLine. '<td>'.(floatval($arOrder['ORDER_SUM'])-floatval($arOrder['ORDER_SUM_PAYD'])).'</td> ',IOFile::APPEND); $file->putContents('</tr>',IOFile::APPEND); }
и завершаем файл:
$file->putContents('</table>',IOFile::APPEND); $file->putContents('</body></html>',IOFile::APPEND); $APPLICATION->RestartBuffer(); header('Content-type: application/json'); echo BitrixMainWebJson::encode(array('url'=>$resultFile)); exit();
Вот такая нехитрая конструкция позволяет сделать жизнь менеджеров немного проще.
0 / 0 / 0 Регистрация: 30.08.2018 Сообщений: 4 |
|
1 |
|
30.08.2018, 16:07. Показов 2138. Ответов 2
Приветствую. В интернете про это нету не какой информации, уже два дня роюсь не чего не могу найти. Заранее спасибо.
0 |
8 / 16 / 2 Регистрация: 15.06.2015 Сообщений: 247 |
|
31.08.2018, 04:58 |
2 |
Можно брать все свойства заказа через апи битрикса и записывать все в csv файл посредством php. Но тут придется ручками код писать) других способов не знаю.
0 |
2208 / 1139 / 227 Регистрация: 16.03.2008 Сообщений: 5,387 Записей в блоге: 2 |
|
31.08.2018, 09:07 |
3 |
Как вариант сделать шаблон для компонента детальной страницы заказа. Только в конце result_modifier.php сделать: Для формирования взять готовую библиотеку Кроме того, если у покупателя нет необходимости редактировать этот файл, более логично, на мой взгляд, формировать PDF — точно ни чего не «разъедется». (готовые библиотеки так же есть)
0 |
Экспорт позволяет перенести информацию из Битрикс24 в другую систему, сделать резервную копию данных или проанализировать данные из CRM в сторонних программах.
Экспорт доступен только на коммерческих тарифах. Подробнее о тарифах читайте на странице сравнения тарифов.
Правила и условия экспорта
- Экспортировать можно лиды, сделки, контакты, компании, предложения и счета. В лидах и счетах можно экспортировать элементы на определенных стадиях, а в сделках еще и каждое направление отдельно.
- Экспортировать элементы могут только сотрудники с правами на экспорт элементов из CRM.
Подробнее о правах на действия в CRM читайте в статье Права доступа в CRM.
- Элементы можно экспортировать только из представления Список, из канбана это сделать не получится.
- Экспортировать элементы можно в форматах csv и xls. Формат файла выбирайте в зависимости от задачи, для решения которой экспортируете данные.
Файл формата xls представляет собой таблицу, он подойдет для анализирования данных в MS Excel, построения графиков и диаграмм.
Файл формата csv — это текстовый файл, в котором значения разделены запятыми. Его можно открыть в любом текстовом редакторе.
В Битрикс24 можно импортировать файлы только формата csv. Поэтому, если создаете резервную копию элементов перед импортом или какой-либо интеграцией, выбирайте именно его.
Как экспортировать элементы
Откройте список нужных элементов CRM.
Особенность экспорта контактов
В контактах, в отличии от остальных элементов, есть опция Участвует в экспорте контактов. Экспортировать можно только те контакты, в которых опция включена.
Отключать и включать эту опцию можно в карточке элемента или через групповые действия.
В файл попадут все элементы, которые есть в списке. С помощью фильтра вы можете отобрать нужные, например, созданные в этом месяце или определенным сотрудником.
Подробнее о фильтре читайте в статье Поиск элементов CRM с помощью фильтра.
Данные будут экспортированы из тех полей, которые отображаются в таблице. Чтобы изменить набор полей, нажмите на шестеренку в левом углу таблицы. Отметьте галочкой нужные.
Нажмите на шестеренку и выберите формат экспорта. В открывшемся окне вы сможете выбрать нужные опции:
- Экспортировать все поля сделок и Экспортировать все поля контактов и компаний — эти опции позволяют выгрузить в файл сразу все поля из элементов.
- Экспортировать с детализацией по товарным позициям — эта опция позволяет выгрузить в файл данные о товарах.
После этого нажмите Выполнить и дождитесь окончания экспорта.
Вот так выглядит результат экспорта сделок в формате .xls с детализацией по товарным позициям. В данном случае, в сделке с ID 493 указаны два товара, поэтому в файле экспорта одна сделка занимает две строки — по одной на каждый товар.
Если отключить детализацию по товарным позициями, то в файле экспорта будет только две строки — по одной на каждую сделку.
Спасибо, помогло!
Спасибо
Это не то, что я ищу
Написано очень сложно и непонятно
Есть устаревшая информация
Слишком коротко, мне не хватает информации
Мне не нравится, как это работает