Автоматизация загрузки информации о товарах

Модератор
#
Re: Автоматизация загрузки информации о товарах
lezhenkin,
Правильно, именно это должно отдаваться на авторизацию, что вас смущает? в чем ошибка то?
#
Re: Автоматизация загрузки информации о товарах
hostcms,
сообщается же об ошибке авторизации
Ошибка авторизации.
п»їsuccess
PHPSESSID
cg8v3jub7up63qds99cdu63sa3

Это текст сообщения об ошибке. И программа учета говорит, что обмен выполнить не удалось.
Модератор
#
Re: Автоматизация загрузки информации о товарах
http://v8.1c.ru/edi/edi_stnd/131/

A. Начало сеанса

Выгрузка данных начинается с того, что система "1С:Предприятие" отправляет http-запрос следующего вида:
http://<сайт>/<путь> /1c_exchange.php?type=catalog&mode=checkauth.

В ответ система управления сайтом передает системе «1С:Предприятие» три строки (используется разделитель строк "\n":

    слово "success";
    имя Cookie;
    значение Cookie.

Примечание. Все последующие запросы к системе управления сайтом со стороны "1С:Предприятия" содержат в заголовке запроса имя и значение Cookie.

Задайте вопросы вашей программе учета, ответ дается верный.
#
Re: Автоматизация загрузки информации о товарах
hostcms,
Меня только смущает фраза "Ошибка авторизации".
А программа учета не может найти файл xml после запуска обмена.

Вот, что говорит она:
Выполнить обмен в формате CommerceML[16:29]>ИмпортВФорматеCommerceML[84:33]>ХМЛ_Открыть[10:17] Ошибка в загрузке C:\путь_к_директории\AppData\Local\Temp\IP-6ABD2FA9-91EA-4433-88EF-6807B894F5CD\orders.xml


По пути, который указала программа, файла XML действительно нет.
Но, если вы говорите, что со стороны HostCMS в конкретном случае всё хорошо, поищу источник проблемы в другом месте.
Модератор
#
Re: Автоматизация загрузки информации о товарах
lezhenkin,
файл отдается в поток, получив файл, учетная программа его сохраняет (судя по ошибке) и потом считывает с диска.
https://www.hostcms.ru/documentation/modules/shop/exchange/1c/trade/
"Загрузка заказов с сайта"
#
Re: Автоматизация загрузки информации о товарах
hostcms,
благодарю. Других вопросов по этой теме нет пока что.

P. S. Есть вопрос по другой теме к вам. Прошу простить за то, что разместил его, почему-то, не в той ветке форума. Если не затруднит, посмотрите, пожалуйста.
#
Re: Автоматизация загрузки информации о товарах
Для товаров интернет-магазина есть возможно указывать специальные цены, зависящие от количества приобретаемого товара. Данные о таких ценах, если я все правильно понял хранятся в БД в таблице shop_specialprices.

Есть желание создавать такие типы цен прямо в 1С и загружать их в CMS в процессе автоматического обмена с сайтом.
Для этого в XML offers.xml был изменен код.
Было так:

<КоммерческаяИнформация>
    <ПакетПредложений>
        <Предложения>
            <Предложение>
                <Цены>
                    <Цена>

                    </Цена>
                </Цены>
            </Предложение>
        </Предложения>
    </ПакетПредложений>
</КоммерческаяИнформация>

В тег <Цена> были добавлены дочерние теги.
Стало так.


<КоммерческаяИнформация>
    <ПакетПредложений>
        <Предложения>
            <Предложение>
                <Цены>
                    <Цена>
                        <Специальные>
                            <Специальная>
                                <МинКол />
                                <МаксКол />
                                <Значение />
                                <Процент />
                            </Специальная>
                        </Специальные>
                    </Цена>
                </Цены>
            </Предложение>
        </Предложения>
    </ПакетПредложений>
</КоммерческаяИнформация>


В код контроллера импорта товаров Shop_Item_Import_Cml_Controller я внес следующие изменения (начиная со строки 1660 файла /modules/shop/item/import/cml/controller.php).

foreach ($this->xpath($oProposal, 'Цены/Цена') as $oPrice)
{
   Core_Event::notify(get_class($this) . '.onBeforeImportShopItemPrice', $this, array($oShopItem, $packageOfProposals, $oProposal, $oPrice));
   
   // Внесенные мною изменения
   
   // Если есть специальные цены
   if ( $this->xpath($oPrice, 'Специальные/Специальная') ) {
      
      $oItem_SpecialPrices = $oShopItem->Shop_Specialprices->getByShop_Item_Id( $oShopItem->id );
      
      // Удаляем существующие связи со спец.ценами
      $oItem_SpecialPrices->deleteAll( FALSE );
      
   }

   foreach ( $this->xpath($oPrice, 'Специальные/Специальная') as $oSpecialPrice ) {
      
      // Если не установлены и минимальное, и макисмальное значения, ничего не делать
      if (!$oSpecialPrice->МинКол && !$oSpecialPrice->МаксКол) {
         
         continue;
         
      }
      
      // Сохраняем новые специальные цены
      $oShop_Specialprice = Core_Entity::factory( "Shop_Specialprice" );
      
      $oShop_Specialprice->shop_item_id( $oShopItem->id )
         ->min_quantity( $oSpecialPrice->МинКол )
         ->max_quantity($oSpecialPrice->МаксКол )
         ->price( $oSpecialPrice->Значение )
         ->percent($oSpecialPrice->Процент )
         ->save();
      
   }
   // Далее стандартный код контроллера
   


Всё ли правильно я задумал? Или что-то не там и не так дописано?
Модератор
#
Re: Автоматизация загрузки информации о товарах
lezhenkin,
контроллер нельзя менять, при обновлении все затрется. В контролере есть хуки, свою обработку вы можете выразить в виде хука и не зависеть от замены файла при обновлении.
#
Re: Автоматизация загрузки информации о товарах
hostcms, а можете примером показать? Или хотя бы направить в нужном направлении.
#
Re: Автоматизация загрузки информации о товарах
Найти хуки в контроллере вы можете по слову event  в контроллере /modules/shop/item/import/cml/controller.php . Примеры работы с хуками можно посмотреть здесь https://www.hostcms.ru/documentation/modules/core/events/
«Не выходи из комнаты, не совершай ошибку…»
Авторизация