Support » Plugin: WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange » Откат на более старую версию плагина

  • Resolved Vadim

    (@vadikcoma)


    Добрый день, мы недавно обновили с версии 0.4 и сейчас клиент жалуется, что дублируются названия.

    Скажите, как мы можем откатиться назад, на более раннюю версию?

    The page I need help with: [log in to see the link]

Viewing 13 replies - 1 through 13 (of 13 total)
  • Vadim

    (@vadikcoma)

    Всё дело в языках, если заказ сделан на русском или английском получается такая ситуация.

    andyganesh

    (@andyganesh)

    @vadikcoma Вам поможет это

    Vadim

    (@vadikcoma)

    @andyganesh к сожалению нет, так как разработчик публикует только новую версию WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange и у плагина Rollback нет доступа к более старым версиям плагина

    andyganesh

    (@andyganesh)

    @vadikcoma на гитхабе вроде бы более или менее старая версия лежит: https://github.com/wp-plugins/woocommerce-and-1centerprise-data-exchange

    Vadim

    (@vadikcoma)

    Мы нашли проблему. Это связка WPML + Fastest Cache. Почему то заказы со страниц чекаута на разных языках при использовании кэша считывались как разные товары и уходили назад в 1С как дубликаты. Выглядит, что проблема решилась, когда мы исключили из кэширования страницы чекаута

    Vadim

    (@vadikcoma)

    Нет, проблема не в кэшировании и дублирование заказов продолжается. Не понимаем, как эту проблему решить

    Попробуйте Hyper Cache Extended
    Strip query string 0
    URL with parameters 1
    URI to reject
    _wp_session_
    _wc_session_
    /cart/
    /checkout/
    /order_tracking/
    /my_account/
    /pay/
    Я еще добавил все эти же страницы в явном виде
    https://МойСайт.ru/cart/ и т.д.
    Agents to reject
    _wp_session_
    _wc_session_
    Cookies matching
    wc1c-auth
    В этом плагине можно отключить кэширование по кукам. Это то, что вам нужно.
    Остальные параметры на ваше усмотрение. Я делаю кэш длительностью Неделя. Сбрасываю весь кэш после обновления цен и остатков.

    Vadim

    (@vadikcoma)

    Я вообще выключал кэширование, но проблема с дублирование заказов продолжается, когда заказ создаётся на языке, отличном от языка сайта по умолчанию.

    Язык по умолчанию – латышский. Как только происходит заказ на русской версии сайта – он возвращает в 1С позиции с указанием, что это новые позиции, а не уже существующие в каталоге

    Vadim

    (@vadikcoma)

    Я сейчас попробовал откатить WooCommerce на версию 3.9.0

    Значит Гуид номенклатуры не передается.
    В 1С в общем модуле ОбменССайтом в модуле ЗагрузитьЗаказыССайта посмотрите что там идет с сайта в ОтветСервера в обоих заказах. Посмотрите отладчиком в чем разница.
    Скорее всего во втором случае с сайта не передается Гуид товара. Поэтому он создается как новый.
    Товар хранится на сайте в таблице POST, его Гуид в таблице Postmeta записывается при meta_key “_wc1c_guid”. Если у вас два языка в магазине, то скорее всего две карточки товара. Я предполагаю это. Ну и гуид не переносится во вторую карточку по умолчанию.
    Если я прав, то во второй карточке создайте такую же запись с Гуидом и попробуйте перенести заказ в 1С.

    Vadim

    (@vadikcoma)

    Спасибо, это крутой совет, мы попробуем.

    Скажите, а почему это раньше работало, а после недавнего обновления сломалось? Мы обновили сам плагин 1С, ВуКомерс, WPML и ВордПресс.

    Да просто так звезды светили и вам не повезло )))
    Я использую плагин для переноса товаров, фотографий и заказов. Это очень крутой плагин. Но все остальное записываю напрямую в базу магазина из 1С.
    Если я прав, что у вас две карточки товаров, по числу языков в магазине, то я бы средствами 1С во второй карточке товара просто записал Гуид товара сразу в базе магазина и оставил бы все как есть. Должно работать.
    Например вот так:
    АутентификацияСтандартная = Истина;

    ИмяПользователя = “Пользователь”;
    Пароль = “Пароль”;

    СтрокаПодключения = “DRIVER={MySQL ODBC 3.51 Driver};
    |SERVER=МойСайт.ru;
    |Language=русский;
    |STMT=SET CHARACTER SET cp1251;
    |STMT=SET NAMES cp1251;
    |DATABASE=ТалицаМагазина;
    |uid=”+ИмяПользователя+”;
    |pwd=”+Пароль+”;
    |”;

    Connection = Новый COMОбъект(“ADODB.Connection”);

    Connection.Open(СтрокаПодключения);
    Connection.DefaultDatabase = “ТалицаМагазина”;
    Recordset = Новый COMОбъект(“ADODB.Recordset”);

    // цикл по номерклатуре Стр

    meta_id = УбратьПробелы(Стр.meta_id);
    post_id = УбратьПробелы(Стр.post_id);
    meta_key = “_wc1c_guid”;
    meta_value = ГУИД;

    ТекстЗапроса = “INSERT INTO wp_postmeta (meta_id, post_id, meta_key, meta_value) VALUES(‘”+ meta_id +”‘,'”+ post_id +”‘,'”+ meta_key +”‘,'”+ meta_value +”‘)
    |ON DUPLICATE KEY UPDATE meta_id= VALUES(meta_id), post_id= VALUES(post_id), meta_key= VALUES(meta_key), meta_value= VALUES(meta_value)”;

    Table = Connection.Execute(ТекстЗапроса);
    Connection.Close();
    У вас не должно быть дублей записей. Поэтому сначала надо считывать из базы данные. Если они есть, то только обновлять с новыми значениями. А если нет такой записи, то можно новую запись создавать.

    Vadim

    (@vadikcoma)

    Итак, кому интересно, проблема была действительно в WPML.

    Там есть настройки у каждого типа данных, что с ними делать для переводов – Translate, Copy, Do nothing.

    У каждого товара из 1С есть свой ID. После обновления слетела настройка, которая отвечала за то, чтобы дублировать это значение в переводы. И получалось, что на языке по умолчанию всё в порядке, а на переводах – так как ID нет – это незнакомые товары для 1C.

    Решение – поставить на товаре для двух полей 1C опцию COPY. После этого нужно вернуться в список всех товаров, и в режиме Bulk Edit нажать Update без изменения каких либо полей. После этого поле копируется в переводы и всё в порядке.

Viewing 13 replies - 1 through 13 (of 13 total)
  • You must be logged in to reply to this topic.