Приветствие и немного офтопа: Здравствуйте, на форуме я человек новый, потому заранее прошу простить за какие-то ошибки... С битриксом работаю тоже недавно поэтому могу перепутать названия, опять же прошу понять и простить!
Поставленная задача: Стоит задача сделать выгрузку торговых предложений торгового каталога в CSV файл по расписанию.
К примеру: каждое утро, в 9.00, должен создаваться файл содержащий в себе список всех торговых предложений.1. В админке битрикса во вкладке Магазин => Экспорт данных. Я добавил новый профиль выбрав для профиля следующие настройки:
Скрытый текст |
---|
- Формат - Экпорт CSV (new)
- Инфоблок - Торговые предложения => Торговые предложения каталога "Каталог"
- С разделителями - точка с запятой ";"
- Первая строка содержит имена полей - ДА
- Далее выбираю данные для выгрузки. Оставляю 5 колонок.
- Внешний код (уникальный идентификатор) (B_IBLOCK_ELEMENT.XML_ID)
- Название (B_IBLOCK_ELEMENT.NAME)
- Свойство "Артикул" [ART]
- Количество (B_CATALOG_PRODUCT.QUANTITY)
- Тип цен "Розничная цена" (BASE): Цена (B_CATALOG_PRICE.PRICE)
- Дополнительные настройки (выгружать файлы) - НЕТ
- Имя файла данных - /bitrix/catalog_export/ test_export.csv
- Имя схемы - test_export
|
2. Запустил профиль в ручном режиме, все сработало. Создался файл test_export.csv, который содержал 5 колонок.
3. Для реализации запуска по расписанию я решил воспользоваться КРОНом. У хостера это реализовано через админ. панель. В админке хостера я устанавливаю время, и пишу следующую команду: (имя пользователя и домена естественно свои)
Код |
---|
/usr/local/bin/php -f /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/domains/ИМЯ_ДОМЕНА/public_html/bitrix/php_interface/include/catalog_export/cron_frame.php 9 >/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/domains/ИМЯ_ДОМЕНА/public_html/bitrix/php_interface/include/catalog_export/logs/9.txt |
4. И вот тут начинается самое интересное... В назначеное время скрипт запускается, создает файл (или если он уже существует обновляет его) test_export.csv,
но в этом файле только одна колонка с пользовательским свойством торгового предложения артикул.
Подскажите пожалуйста, в чем может быть проблема? Почему файл не содержит в себе все выбранные мною колонки для экпорта? И главное, что это только при запуске по расписанию, при ручном запуске этого профиля создаются все 5 колонок. На всякий случай приведу содержмиое файла cron_frame.php:Скрытый текст |
---|
Код |
---|
#!/usr/local/php/bin/php -q
<?php
$_SERVER["DOCUMENT_ROOT"] = "/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/domains/ИМЯ_ДОМЕНА/public_html";
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define("BX_CAT_CRON", true);
define('NO_AGENT_CHECK', true);
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
$profile_id = $argv[1];
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php";
set_time_limit (0);
if (CModule::IncludeModule("catalog")
{
$profile_id = intval($profile_id);
if ($profile_id<=0) die();
$ar_profile = CCatalogExport::GetByID($profile_id);
if (!$ar_profile) die();
$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();
}
}
$arSetupVars = array();
$intSetupVarsCount = 0;
if ('Y' != $ar_profile["DEFAULT_PROFILE"]
{
parse_str($ar_profile["SETUP_VARS"], $arSetupVars);
if (!empty($arSetupVars) && is_array($arSetupVars))
{
$intSetupVarsCount = extract($arSetupVars, EXTR_SKIP);
}
}
CCatalogDiscountSave:isable();
include($_SERVER["DOCUMENT_ROOT"].$strFile);
CCatalogDiscountSave::Enable();
CCatalogExport::Update($profile_id, array(
"=LAST_USE" => $DB->GetNowFunction()
;
}
?>
|
|