[B]Приветствие и немного офтопа:[/B]
Здравствуйте, на форуме я человек новый, потому заранее прошу простить за какие-то ошибки... С битриксом работаю тоже недавно поэтому могу перепутать названия, опять же прошу понять и простить!
[B]Поставленная задача: [/B]Стоит задача сделать выгрузку торговых предложений торгового каталога в CSV файл по расписанию.
[I]К примеру: каждое утро, в 9.00, должен создаваться файл содержащий в себе список всех торговых предложений.[/I]
1. В админке битрикса во вкладке Магазин => Экспорт данных. Я добавил новый профиль выбрав для профиля следующие настройки:
Скрытый текст |
---|
[LIST][*]Формат - Экпорт CSV (new)[*]Инфоблок - Торговые предложения => Торговые предложения каталога "Каталог"[*]С разделителями - точка с запятой ";"[*]Первая строка содержит имена полей - ДА[*]Далее выбираю данные для выгрузки. Оставляю 5 колонок. [/LIST][LIST=1][LIST=1][*]Внешний код (уникальный идентификатор) (B_IBLOCK_ELEMENT.XML_ID)[*]Название (B_IBLOCK_ELEMENT.NAME)[*]Свойство "Артикул" [ART][*]Количество (B_CATALOG_PRODUCT.QUANTITY)[*]Тип цен "Розничная цена" (BASE): Цена (B_CATALOG_PRICE.PRICE) [/LIST] [/LIST][LIST][*]Дополнительные настройки (выгружать файлы) - НЕТ[*]Имя файла данных - [B]/bitrix/catalog_export/[/B] test_export.csv[*]Имя схемы - test_export [/LIST] |
2. Запустил профиль в ручном режиме, все сработало. Создался файл test_export.csv, который содержал 5 колонок.
3. Для реализации запуска по расписанию я решил воспользоваться КРОНом. У хостера это реализовано через админ. панель. В админке хостера я устанавливаю время, и пишу следующую команду: (имя пользователя и домена естественно свои)
[CODE]/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[/CODE]4. И вот тут начинается самое интересное... В назначеное время скрипт запускается, создает файл (или если он уже существует обновляет его) test_export.csv, [B]но в этом файле только одна колонка с пользовательским свойством торгового предложения артикул.
[/B]
[B]Подскажите пожалуйста, в чем может быть проблема? Почему файл не содержит в себе все выбранные мною колонки для экпорта? И главное, что это только при запуске по расписанию, при ручном запуске этого профиля создаются все 5 колонок.[/B]
[B]На всякий случай приведу содержмиое файла cron_frame.php:[/B]
Скрытый текст |
---|
[CODE]#!/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() ; } ?> [/CODE]
|