Помогите, друзья, братья!
Прикрепленный код написан в файле, который подключается в init.php. А потом данная функция указывается в агенте.
1. Код работает и создает файл вне агента. То есть он тестировался и проверялся.
2. Агент запускает файл. Это понятно из того, что я расставил по файлe функции отправки на почту (myMail@mail.ru ). И отрабатывает отправка письма с текстом "Из генератора2". Но после происходит ошибка. и последующие письма уже не приходят и в агенте время последнего запуска не фиксируется. Хотя периодично письма отсылаются, то бишь часть кода до обращения к Битриксовской функции работает.
Насколько я понимаю тут код не отрабатывает по той причине, что не понимает функции вот в этом куске: DateFormatToPHP(CSite::GetDateFormat("SHORT")
Но как подключить тут модуль 'sale' не понимаю.
Если поставить в начале выполнения функции:
CModule::IncludeModule('sale');
То вообще ни одно письмо не приходит, то есть код подключения модуля не отрабатывает. Помогите подключить тут модуль 'sale' или скажите что в виртуальной машине можно просто указать где-то путь к файлу и не нужно возиться с агентами. Мне просто нужно запускать файл раз в день, а целая трагедия. Вот код из подключаемого к иниту файла. Целиком
Прикрепленный код написан в файле, который подключается в init.php. А потом данная функция указывается в агенте.
1. Код работает и создает файл вне агента. То есть он тестировался и проверялся.
2. Агент запускает файл. Это понятно из того, что я расставил по файлe функции отправки на почту (
Насколько я понимаю тут код не отрабатывает по той причине, что не понимает функции вот в этом куске: DateFormatToPHP(CSite::GetDateFormat("SHORT")
Но как подключить тут модуль 'sale' не понимаю.
Если поставить в начале выполнения функции:
CModule::IncludeModule('sale');
То вообще ни одно письмо не приходит, то есть код подключения модуля не отрабатывает. Помогите подключить тут модуль 'sale' или скажите что в виртуальной машине можно просто указать где-то путь к файлу и не нужно возиться с агентами. Мне просто нужно запускать файл раз в день, а целая трагедия. Вот код из подключаемого к иниту файла. Целиком
Код |
---|
<?php function GenerateXML(){ //ПОДСТАНОВКА ДАННЫХ В XML-ГЕНЕРАТОР ---------------------------------------------------------- $partnerId = '2306'; //идентификатор Партнера $programId = '3068679'; //идентификатор Партнера function translit($s) { $s = (string)$s; $s = strip_tags($s); $s = str_replace(array("\n", "\r"), " ", $s); $s = preg_replace("/\s+/", ' ', $s); $s = trim($s); $s = function_exists('mb_strtolower') ? mb_strtolower($s) : strtolower($s); $s = strtr($s, array('а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'j', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ы' => 'y', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'ъ' => '', 'ь' => '', ' ' => '_')); $s = preg_replace("/[^0-9a-z-_ ]/i", "", $s); $s = str_replace(" ", "-", $s); return $s; } $dom = new domDocument("1.0", "windows-1251"); // Создаём XML-документ версии 1.0 с кодировкой utf-8 //добавление корня - <batch> $batch = $dom->appendChild($dom->createElement('batch')); //добавление элемента <enterpriseGroup> в <batch> $enterpriseGroup = $batch->appendChild($dom->createElement('enterpriseGroup')); $enterpriseId = $partnerId; // enterpriseId $enterpriseGroup->setAttribute("enterpriseId", $enterpriseId); // Устанавливаем атрибут "$enterpriseId" у узла "$enterpriseGroup" // добавление элемента <accountGroup> в <enterpriseGroup> $accountGroup = $enterpriseGroup->appendChild($dom->createElement('accountGroup')); $accountId = $programId; $accountGroup->setAttribute("accountId", $accountId); //Выбирает заказы за текущий день, у которых менялся статус mail('myMail@mail.ru', 'Из генератора2', 'Из генератора2'); $arFilter = Array( ">=DATE_STATUS" => date($DB->DateFormatToPHP(CSite::GetDateFormat("SHORT")), mktime(0, 0, 0, date("ndY", strtotime("-1 days")))) ); $count = 1; mail('myMail@mail.ru', 'Из генератора3', 'Из генератора3'); $db_sales = CSaleOrder::GetList(array("DATE_INSERT" => "ASC"), $arFilter); mail('myMail@mail.ru', 'Из генератора4', 'Из генератора4'); while ($ar_sales = $db_sales->Fetch()) { $orderId = $ar_sales['ID']; $rsVals = CSaleOrderPropsValue::GetList(array("SORT" => "ASC"), array("ORDER_ID" => $orderId, "ORDER_PROPS_ID" => 50)); if ($arVals = $rsVals->Fetch()) { if (!empty($arVals['VALUE']) && $ar_sales['STATUS_ID'] == 'F') { //вставляем заказы у которых была указана карта $receipt = $accountGroup->appendChild($dom->createElement('receipt')); $number = $orderId; $dateStat = $ar_sales['DATE_STATUS']; //подстраиваем дату под формат ГГ-ММ-ДД $DMY = stristr($dateStat, ' ', true); $pieces = explode(".", $DMY); $date = $pieces[2] . '-' . $pieces[1] . '-' . $pieces[0]; $card = $arVals['VALUE']; if ($ar_sales['STATUS_ID'] == 'N') { $action = "create"; } if ($ar_sales['STATUS_ID'] == 'F') { $action = "approve"; } if ($ar_sales['STATUS_ID'] == 'O') { $action = "reject"; } if ($ar_sales['STATUS_ID'] == 'N') { $status = "waiting"; } if ($ar_sales['STATUS_ID'] == 'F') { $status = "approved"; } if ($ar_sales['STATUS_ID'] == 'O') { $status = "rejected"; } $receipt->setAttribute("number", $number); $receipt->setAttribute("date", $date); $receipt->setAttribute("card", $card); $receipt->setAttribute("action", $action); $receipt->setAttribute("status", $status); $entry = $receipt->appendChild($dom->createElement('entry')); $orderDateAr = $ar_sales['DATE_INSERT']; //подстраиваем дату под формат ГГ-ММ-ДД $DMYOrder = stristr($orderDateAr, ' ', true); $piecesOrder = explode(".", $DMYOrder); $orderDate = $piecesOrder[2] . '-' . $piecesOrder[1] . '-' . $piecesOrder[0]; $entry->setAttribute("name", "orderDate"); $entry->setAttribute("value", $orderDate); $entry2 = $receipt->appendChild($dom->createElement('entry')); $sum = $ar_sales['PRICE'] - $ar_sales['PRICE_DELIVERY'];; $entry2->setAttribute("name", "sum"); $entry2->setAttribute("value", $sum); $collection = $receipt->appendChild($dom->createElement('collection')); $collection->setAttribute("name", "goods"); //Запрашивает состав заказа $arBasketItems = array(); $dbBasketItems = CSaleBasket::GetList( array( "NAME" => "ASC", "ID" => "ASC" ), array( "ORDER_ID" => $orderId ), false, false, array("ID", "PRODUCT_ID", "QUANTITY", "PRICE", "NAME")); while ($arItems = $dbBasketItems->Fetch()) { //вставляет детализацию заказа $item = $collection->appendChild($dom->createElement('item')); $entry4 = $item->appendChild($dom->createElement('entry')); $entry4->setAttribute("name", "sum"); $sumItem = $arItems['PRICE'] * $arItems['QUANTITY']; $entry4->setAttribute("value", $sumItem); $entry6 = $item->appendChild($dom->createElement('entry')); $entry6->setAttribute("name", "remarks"); $remarks = translit($arItems['NAME']); $entry6->setAttribute("value", $remarks); } } } $count++; } mail('myMail@mail.ru', 'Из генератора5', 'Из генератора5'); //генерация xml $dom->formatOutput = true; // установка атрибута formatOutput // domDocument в значение true // save XML as string or file $file_name = $partnerId . '_' . date("Ymd", strtotime("-1 days")) . '.xml'; $test1 = $dom->saveXML(); $dom->save('/sale/mnogo/'.$file_name); // сохранение файла mail('myMail@mail.ru', 'Из генератора6', 'Из генератора6'); return "GenerateXML();"; } |