Версия 1С соответствует УТ 11.1.4 (белорусская 3.1.5.1)
Версия модуля обмена 4.0.4.2
Версия мадженты 2.41.0
URL: http://sharx.org/df-1c/cml2/index/?type=catalog&mode=import&filename=prices___5d96dc28-4b21-42b5-9f1e-983dde5d919d.xml& Версия Magento: 2.40.1 (1.9.0.1) Версия PHP: 5.4.4-14+deb7u14 Время: 2014-11-26 17:25:26 MSK Cхема CommerceML: 2.08 Оформительская тема: ultimo / default *********************************** Notice: Undefined index: standard_code in /var/www/torros/data/www/sharx.org/app/code/local/Df/1C/Model/Settings/General.php on line 33 *********************************** Файл: app/code/local/Df/1C/Model/Settings/General.php Строка: 33 Субъект: Df_1C_Model_Settings_General::getCurrencyCodesMapFrom1CToMagento Объект: mageCoreErrorHandler Контекст: ; /** @var string $standardCode */ $standardCode = df_nts( $mapItem[ Df_1C_Block_System_Config_Form_Field_NonStandardCurrencyCodes ::COLUMN__STANDARD ] ) ; if ($nonStandardCode && $standardCode) { $nonStandardCode = df_h()->_1c()->cml2()->normalizeNonStandardCurrencyCode( $nonStandardCode ) ; ************************************ Файл: app/code/local/Df/1C/Helper/Cml2.php Строка: 53 Субъект: Df_1C_Helper_Cml2::convertCurrencyCodeToMagentoFormat Объект: Df_1C_Model_Settings_General::getCurrencyCodesMapFrom1CToMagento Контекст: $result = df_a( array_merge( array( 'РУБ' => 'RUB' ,'ГРН' => 'UAH' ) ,df_cfg()->_1c()->general()->getCurrencyCodesMapFrom1CToMagento() ) ,$codeNormalized ,$codeNormalized ) ; df_result_string_not_empty($result); return $result; } ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Data/Entity/OfferPart/Price.php Строка: 8 Субъект: Df_1C_Model_Cml2_Import_Data_Entity_OfferPart_Price::getCurrencyCode Объект: Df_1C_Helper_Cml2::convertCurrencyCodeToMagentoFormat Контекст: <?php class Df_1C_Model_Cml2_Import_Data_Entity_OfferPart_Price extends Df_1C_Model_Cml2_Import_Data_Entity { /** @return string */ public function getCurrencyCode() { return df_h()->_1c()->cml2()->convertCurrencyCodeToMagentoFormat( $this->getEntityParam('Валюта') ); } /** * @override * @return string */ public function getExternalId() {return $this->getEntityParam('ИдТипаЦены');} ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Data/Entity/OfferPart/Price.php Строка: 56 Субъект: Df_1C_Model_Cml2_Import_Data_Entity_OfferPart_Price::getPriceBase Объект: Df_1C_Model_Cml2_Import_Data_Entity_OfferPart_Price::getCurrencyCode Контекст: * @return float|null */ public function getPriceBase() { if (!isset($this->{__METHOD__})) { $this->{__METHOD__} = rm_n_set( is_null($this->getPrice()) ? null : rm_currency()->convertToBase($this->getPrice(), $this->getCurrencyCode()) ); } return rm_n_get($this->{__METHOD__}); } /** @return Df_1C_Model_Cml2_Import_Data_Entity_PriceType */ public function getPriceType() { return $this->getState()->getPriceTypes()->findByExternalId($this->getId()); ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Processor/Product/Type/Simple/Abstract.php Строка: 22 Субъект: Df_1C_Model_Cml2_Import_Processor_Product_Type_Simple_Abstract::getPrice Объект: Df_1C_Model_Cml2_Import_Data_Entity_OfferPart_Price::getPriceBase Контекст: * @return float|null */ protected function getPrice() { if (!isset($this->{__METHOD__})) { $this->{__METHOD__} = rm_n_set( is_null($this->getEntityOffer()->getPrices()->getMain()) ? null : $this->getEntityOffer()->getPrices()->getMain()->getPriceBase() ); } return rm_n_get($this->{__METHOD__}); } /** * @override * @return string ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Processor/Product/Type.php Строка: 76 Субъект: Df_1C_Model_Cml2_Import_Processor_Product_Type::getProductDataNewOrUpdateBase Объект: Df_1C_Model_Cml2_Import_Processor_Product_Type_Simple_Abstract::getPrice Контекст: $hasQuantity || !$this->getExistingMagentoProduct() ) { $result['qty'] = $hasQuantity ? $this->getEntityOffer()->getQuantity() : 0.0; } /** @var bool $hasPrice */ $hasPrice = $this->getDocumentCurrentAsOffers()->hasPrices() && !is_null($this->getPrice()); if ( // Обратите внимание, что 1С может вполне не передавать цену. // Это возможно в следующих ситуациях: // 1) Когда цена на товар отсутствует в 1С // 2) Когда передача цен отключена в настройках узла обмена // (а это возможно, как минимум, в новых версиях модуля 1С-Битрикс (ветка 4)). // 3) В новых версиях модуля 1С-Битрикс (ветка 4, CommerceML 2.0.8) // 1С передаёт цены не в файле offers.xml (как было в прежних версиях), ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Processor/Product/Type.php Строка: 437 Субъект: Df_1C_Model_Cml2_Import_Processor_Product_Type::getProductDataNewOrUpdate Объект: Df_1C_Model_Cml2_Import_Processor_Product_Type::getProductDataNewOrUpdateBase Контекст: ); return $result; } /** @return array(string => string) */ private function getProductDataNewOrUpdate() { /** @var array(string => string) $result */ $result = $this->getProductDataNewOrUpdateBase(); /** * Нам не нужно заниматься товарными свойствами и опциями * при обработке файлов rests_*.xml, prices_*.xml и т.п. * Более того, такая обработка может привести к некоторым сбоям. */ if ($this->getDocumentCurrentAsOffers()->isBase()) { $result = array_merge($result ,$this->getProductDataNewOrUpdateAttributeValues( ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Processor/Product/Type.php Строка: 40 Субъект: Df_1C_Model_Cml2_Import_Processor_Product_Type::getImporter Объект: Df_1C_Model_Cml2_Import_Processor_Product_Type::getProductDataNewOrUpdate Контекст: */ Df_Dataflow_Model_Importer_Product::P__SKIP_CUSTOM_OPTIONS => true ,Df_Dataflow_Model_Importer_Product::P__ROW => Df_Dataflow_Model_Import_Product_Row::i(array_merge( $this->getExistingMagentoProduct() ? $this->getProductDataUpdateOnly() : $this->getProductDataNewOnly() , $this->getProductDataNewOrUpdate() )) )); } return $this->{__METHOD__}; } /** @return array(string => string) */ protected function getProductDataNewOrUpdateBase() { ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Import/Processor/Product/Type/Simple.php Строка: 16 Субъект: Df_1C_Model_Cml2_Import_Processor_Product_Type_Simple::process Объект: Df_1C_Model_Cml2_Import_Processor_Product_Type::getImporter Контекст: if (!$this->getEntityOffer()->isTypeSimple()) { rm_1c_log( 'Пропускаем товарное предложение «%s» как не являющееся простым товаром.' ,$this->getEntityOffer()->getName() ); } else { $this->getImporter()->import(); /** @var Df_Catalog_Model_Product $product */ $product = $this->getImporter()->getProduct(); df_h()->_1c()->cml2()->reindexProduct($product); rm_1c_log( '%s товар «%s».' ,!is_null($this->getExistingMagentoProduct()) ? 'Обновлён' : 'Создан' ,$product->getName() ); ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Action/Catalog/Import.php Строка: 158 Субъект: Df_1C_Model_Cml2_Action_Catalog_Import::importProductsSimple Объект: Df_1C_Model_Cml2_Import_Processor_Product_Type_Simple::process Контекст: rm_1c_log('Простые товары отсутствуют.'); } else { rm_1c_log('Простых товаров: %d.', $count); rm_1c_log('Импорт простых товаров начат.'); foreach ($this->getCollections()->getOffersSimple() as $offer) { /** @var Df_1C_Model_Cml2_Import_Data_Entity_Offer $offer */ Df_1C_Model_Cml2_Import_Processor_Product_Type_Simple::i($offer)->process(); } rm_1c_log('Импорт простых товаров завершён.'); } return $this; } /** @return Df_1C_Model_Cml2_Action_Catalog_Import */ private function importProductsSimplePartImages() { ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Action/Catalog/Import.php Строка: 47 Субъект: Df_1C_Model_Cml2_Action_Catalog_Import::processInternal Объект: Df_1C_Model_Cml2_Action_Catalog_Import::importProductsSimple Контекст: /** @var int $count */ $count = count($this->getCollections()->getOffers()); if (0 === $count) { rm_1c_log('Товарные предложения отсутствуют.'); } else { rm_1c_log('Товарных предложений: %d.', $count); $this->importProductsSimple(); /** * Товарные изображения находятся в файле import.xml (import_*.xml). * Учитывая, что начиная с ветки 4 модуля 1С-Битрикс * мы получаем несколько файлов с тегом «ПакетПредложений» * вместо прежнего единого файла offers.xml, * то нам нет смысла по нескольку раз запускать импорт товарных изображений. * Импортируем товарные изображения толь один раз: * при наличии в файле offers_*.xml пути ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Action.php Строка: 36 Субъект: Df_1C_Model_Cml2_Action::process Объект: Df_1C_Model_Cml2_Action_Catalog_Import::processInternal Контекст: if (!df_cfg()->_1c()->general()->isEnabled()) { df_error(self::T__MODULE_IS_DISABLED); } df_h()->dataflow()->registry()->products()->addValidator(Df_1C_Validate_Product::s()); /** @var string|bool $output */ $output = null; ob_start(); $this->processInternal(); /** * Используем @, чтобы избежать сбоя «Failed to delete buffer zlib output compression». * Такой сбой у меня возник на сервере moysklad.magento-demo.ru * в другой точке программы при аналогичном вызове @see ob_get_clean. */ $output = @ob_get_clean(); if ($output) { ob_start(); ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Action/Front.php Строка: 86 Субъект: Df_1C_Model_Cml2_Action_Front::action_catalogImport Объект: Df_1C_Model_Cml2_Action::process Контекст: /** @return void */ private function action_catalogDeactivate() { Df_1C_Model_Cml2_Action_Catalog_Deactivate::i($this->getData())->process(); } /** @return void */ private function action_catalogImport() { Df_1C_Model_Cml2_Action_Catalog_Import::i($this->getData())->process(); } /** @return void */ private function action_catalogUpload() { Df_1C_Model_Cml2_Action_Catalog_Upload::i($this->getData())->process(); } /** @return void */ ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Action/Front.php Строка: 54 Субъект: Df_1C_Model_Cml2_Action_Front::processInternal Объект: Df_1C_Model_Cml2_Action_Front::action_catalogImport Контекст: case Df_1C_Model_Cml2_InputRequest_Generic::MODE__DEACTIVATE: $this->action_catalogDeactivate(); break; case Df_1C_Model_Cml2_InputRequest_Generic::MODE__FILE: $this->action_catalogUpload(); break; case Df_1C_Model_Cml2_InputRequest_Generic::MODE__IMPORT: $this->action_catalogImport(); break; } } else if ( Df_1C_Model_Cml2_InputRequest_Generic::TYPE__ORDERS === $this->getRmRequest()->getType() ) { ************************************ Файл: app/code/local/Df/1C/Model/Cml2/Action.php Строка: 36 Субъект: Df_1C_Model_Cml2_Action::process Объект: Df_1C_Model_Cml2_Action_Front::processInternal Контекст: if (!df_cfg()->_1c()->general()->isEnabled()) { df_error(self::T__MODULE_IS_DISABLED); } df_h()->dataflow()->registry()->products()->addValidator(Df_1C_Validate_Product::s()); /** @var string|bool $output */ $output = null; ob_start(); $this->processInternal(); /** * Используем @, чтобы избежать сбоя «Failed to delete buffer zlib output compression». * Такой сбой у меня возник на сервере moysklad.magento-demo.ru * в другой точке программы при аналогичном вызове @see ob_get_clean. */ $output = @ob_get_clean(); if ($output) { ob_start(); ************************************ Файл: app/code/local/Df/1C/controllers/Cml2Controller.php Строка: 17 Субъект: Df_1C_Cml2Controller::indexAction Объект: Df_1C_Model_Cml2_Action::process Контекст: * надлежащим для 1C: Управление торговлей способом * (возвращает диагностическое сообщение в 1C: Управление торговлей * по стандарту CommerceML 2) */ if (df_is_it_my_local_pc()) { Mage::log(Mage::app()->getRequest()->getRequestUri()); } Df_1C_Model_Cml2_Action_Front::i($this)->process(); } /** * @override * @return Df_1C_Cml2Controller */ public function preDispatch() { /** ************************************ Файл: app/code/core/Mage/Core/Controller/Varien/Action.php Строка: 418 Субъект: Mage_Core_Controller_Varien_Action::dispatch Объект: Df_1C_Cml2Controller::indexAction Контекст: /** * preDispatch() didn't change the action, so we can continue */ if (!$this->getFlag('', self::FLAG_NO_DISPATCH)) { $_profilerKey = self::PROFILER_KEY.'::'.$this->getFullActionName(); Varien_Profiler::start($_profilerKey); $this->$actionMethodName(); Varien_Profiler::stop($_profilerKey); Varien_Profiler::start(self::PROFILER_KEY.'::postdispatch'); $this->postDispatch(); Varien_Profiler::stop(self::PROFILER_KEY.'::postdispatch'); } } } ************************************ Файл: app/code/core/Mage/Core/Controller/Varien/Router/Standard.php Строка: 250 Субъект: Mage_Core_Controller_Varien_Router_Standard::match Объект: Mage_Core_Controller_Varien_Action::dispatch Контекст: // set parameters from pathinfo for ($i = 3, $l = sizeof($p); $i < $l; $i += 2) { $request->setParam($p[$i], isset($p[$i+1]) ? urldecode($p[$i+1]) : ''); } // dispatch action $request->setDispatched(true); $controllerInstance->dispatch($action); return true; } /** * Get router default request path * @return string */ ************************************ Файл: app/code/core/Mage/Core/Controller/Varien/Front.php Строка: 172 Субъект: Mage_Core_Controller_Varien_Front::dispatch Объект: Mage_Core_Controller_Varien_Router_Standard::match Контекст: $this->_getRequestRewriteController()->rewrite(); Varien_Profiler::start('mage::dispatch::routers_match'); $i = 0; while (!$request->isDispatched() && $i++ < 100) { foreach ($this->_routers as $router) { /** @var $router Mage_Core_Controller_Varien_Router_Abstract */ if ($router->match($request)) { break; } } } Varien_Profiler::stop('mage::dispatch::routers_match'); if ($i>100) { Mage::throwException('Front controller reached 100 router match iterations'); } ************************************ Файл: app/code/core/Mage/Core/Model/App.php Строка: 354 Субъект: Mage_Core_Model_App::run Объект: Mage_Core_Controller_Varien_Front::dispatch Контекст: $scopeCode = isset($params['scope_code']) ? $params['scope_code'] : ''; $scopeType = isset($params['scope_type']) ? $params['scope_type'] : 'store'; $this->_initCurrentStore($scopeCode, $scopeType); $this->_initRequest(); Mage_Core_Model_Resource_Setup::applyAllDataUpdates(); } $this->getFrontController()->dispatch(); } return $this; } /** * Initialize PHP environment * * @return Mage_Core_Model_App ************************************ Файл: app/Mage.php Строка: 684 Субъект: Mage::run Объект: Mage_Core_Model_App::run Контекст: self::$_events = new Varien_Event_Collection(); self::_setIsInstalled($options); self::_setConfigModel($options); self::$_app->run(array( 'scope_code' => $code, 'scope_type' => $type, 'options' => $options, )); Varien_Profiler::stop('mage'); } catch (Mage_Core_Model_Session_Exception $e) { header('Location: ' . self::getBaseUrl()); die(); } catch (Mage_Core_Model_Store_Exception $e) { require_once(self::getBaseDir() . DS . 'errors' . DS . '404.php'); die(); } catch (Exception $e) { ************************************ Файл: index.php Строка: 87 Субъект: Объект: Mage::run Контекст: /* Store or website code */ $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : ''; /* Run store or run website */ $mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store'; Mage::run($mageRunCode, $mageRunType); ************************************