Экспорт данных по крону (cron) в 1С-Битрикс
Зайти в админке на страницу «Экспорт данных»:
https://site.com/bitrix/admin/cat_export_setup.php?lang=ru
Нажать на меню (три полоски) данных которые нужно экспортировать и затем Привязать к cron
Нажать Установить
будет создан файл по пути: /bitrix/php_interface/include/catalog_export/cron_frame.php
Открыть файл и заменить:
#DOCUMENT_ROOT# — путь к руту сайта
#SITE_ID# — указать ID сайта
Удалить первую строчку:
#!#PHP_PATH# -q
Пример исходного файла cron_frame.php:
#!#PHP_PATH# -q
<?php
/* replace #PHP_PATH# to real path of php binary
For example:
/user/bin/php
/usr/bin/perl
/usr/bin/env python
*/
$_SERVER["DOCUMENT_ROOT"] = "#DOCUMENT_ROOT#"; // replace #DOCUMENT_ROOT# to real document root path
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
$siteID = '#SITE_ID#'; // replace #SITE_ID# to your real site ID - need for language ID
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define("BX_CAT_CRON", true);
define('NO_AGENT_CHECK', true);
if (preg_match('/^[a-z0-9_]{2}$/i', $siteID) === 1)
{
define('SITE_ID', $siteID);
}
else
{
die('No defined site - $siteID');
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
global $DB;
if (!defined('LANGUAGE_ID') || preg_match('/^[a-z]{2}$/i', LANGUAGE_ID) !== 1)
die('Language id is absent - defined site is bad');
set_time_limit(0);
if (!\Bitrix\Main\Loader::includeModule('catalog'))
die('Can\'t include module');
$profile_id = 0;
if (isset($argv[1]))
$profile_id = (int)$argv[1];
if ($profile_id <= 0)
die('No profile id');
$ar_profile = CCatalogExport::GetByID($profile_id);
if (!$ar_profile)
die('No profile');
$strFile = CATALOG_PATH2EXPORTS.$ar_profile["FILE_NAME"]."_run.php";
if (!file_exists($_SERVER["DOCUMENT_ROOT"].$strFile))
{
$strFile = CATALOG_PATH2EXPORTS_DEF.$ar_profile["FILE_NAME"]."_run.php";
if (!file_exists($_SERVER["DOCUMENT_ROOT"].$strFile))
die('No export script');
}
$arSetupVars = array();
$intSetupVarsCount = 0;
if ($ar_profile["DEFAULT_PROFILE"] != 'Y')
{
parse_str($ar_profile["SETUP_VARS"], $arSetupVars);
if (!empty($arSetupVars) && is_array($arSetupVars))
$intSetupVarsCount = extract($arSetupVars, EXTR_SKIP);
}
$firstStep = true;
global $arCatalogAvailProdFields;
$arCatalogAvailProdFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_ELEMENT);
global $arCatalogAvailPriceFields;
$arCatalogAvailPriceFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_CATALOG);
global $arCatalogAvailValueFields;
$arCatalogAvailValueFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_PRICE);
global $arCatalogAvailQuantityFields;
$arCatalogAvailQuantityFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_PRICE_EXT);
global $arCatalogAvailGroupFields;
$arCatalogAvailGroupFields = CCatalogCSVSettings::getSettingsFields(CCatalogCSVSettings::FIELDS_SECTION);
global $defCatalogAvailProdFields;
$defCatalogAvailProdFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_ELEMENT);
global $defCatalogAvailPriceFields;
$defCatalogAvailPriceFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_CATALOG);
global $defCatalogAvailValueFields;
$defCatalogAvailValueFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_PRICE);
global $defCatalogAvailQuantityFields;
$defCatalogAvailQuantityFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_PRICE_EXT);
global $defCatalogAvailGroupFields;
$defCatalogAvailGroupFields = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_SECTION);
global $defCatalogAvailCurrencies;
$defCatalogAvailCurrencies = CCatalogCSVSettings::getDefaultSettings(CCatalogCSVSettings::FIELDS_CURRENCY);
CCatalogDiscountSave::Disable();
include($_SERVER["DOCUMENT_ROOT"].$strFile);
CCatalogDiscountSave::Enable();
CCatalogExport::Update(
$profile_id,
array(
"=LAST_USE" => $DB->GetNowFunction()
)
);
Проверка работы скрипта экспорта данных:
php -f 'ПУТЬ К РУТУ САЙТА'/bitrix/php_interface/include/catalog_export/cron_frame.php 1
Добавить выполнение скрипта в крон (к примеру 4 раза в час):
0,15,30,45 * * * * php -f 'ПУТЬ К РУТУ САЙТА'/bitrix/php_interface/include/catalog_export/cron_frame.php 1 > /dev/null 2>&1