Forum Replies Created

Viewing 15 replies - 1 through 15 (of 37 total)
  • Thread Starter rovak

    (@rovak)

    Здравствуйте.
    В моей теме поле nickname в таблице _usermeta это обязательное поле для заполнения в формах.
    А поле first_name не обязательное.
    Я вижу как ваш плагин удаляет очень много ботов, которые не смогли подтвердить свою электронную почту.
    Но есть боты, у которых есть электронная почта и ваш плагин перед ними бессильный.
    Однако есть особенность регистрации таких ботов.
    Они заполняют все обязательные поля и пропускают все не обязательные поля.
    У нас сайт интернет магазина. Все наши покупатели заполняют поля first_name и last_name.
    Иначе они просто не смогут получить свой заказ в транспортной кампании.
    Поэтому мы сразу удаляем всех пользователей у которых не заполнены эти поля.
    Это не наши покупатели. Это боты, которые нам мешают.
    Мы можем написать текст сообщения на форме регистрации, где будем требовать заполнить эти два поля нашим покупателям. Но мы не будем делать их обязательными.
    Для нас было бы удобно добавить в ваш плагин настройку удалять новых пользователей, у которых не заполнено поле first_name.

    Thread Starter rovak

    (@rovak)

    Здравствуйте.
    Спасибо за такую быструю поддержку.
    Теперь плагин работает правильно.

    Здравствуйте.
    Плагин замечательный, но он не обновляется уже очень давно.
    Если у вас небольшой магазин, то он будет работать на отлично.
    Если же у вас много товара. то он будет работать очень медленно.
    Просто структура обмена данных такая, что все работает очень долго.
    Давно не занимался переносом из 1С на сайт. Но когда делал перепробовал много вариантов.
    Самый быстрый был записывать данные напрямую в базу магазина. Тогда 100 тысяч товаров можно было обновить минут за 7. Самый долгий процесс это перенос фотографий. Скорость зависит от железа сайта. Получается, что можно с большими временными затратами создать карточки на сайте, а потом быстро менять цены напрямую в базе данных. Как минус всего этого в том, что не запускаются какие-то штатные триггеры на сайте и не обновляется карта магазина. Нет информации, что страницы обновлены. Большущий минус всего этого в том, что Яндекс не получает информацию об обновлении сайта и считает его брошенным. Ну и дальше понятно, он его перестает везде показывать.
    Плагин был создан когда внутренняя структура магазина была одна, А сейчас она другая. Вполне возможно, что он без программирования не запустится на свежей версии магазина.
    Я перепробовал много вариантов переноса карточек на сайт. Остановился на легальном api.
    С его помощью можно перенести фотографии, карточки и автоматически карта сайта обновляется.
    Но вот перенос остатков и цен был очень долгим. Фактически изменяя всего лишь цену и остатки товара надо было обновлять всю карточку на сайте целиком. Это очень долго. Я не нашел быстрого решения этого вопроса. Может подскажет кто как это можно сделать.
    В свете того, что на маркетах стало не особо выгодно торговать вполне возможен возврат к своим интернет магазинам. Единственно решение в быстром обновлении цен и остатков я нашел в переходе на быстрое железо.
    Я бы не рекомендовал сейчас тратить свое время на плагин. Он был лучшим, но с момента создания было очень много изменений в woocommerce. Я бы сейчас делал обмен только на родном api.

    <font style=”vertical-align: inherit;”><font style=”vertical-align: inherit;”>Попробуй увеличить время выполнения hph запросов на сайт и увеличь время ожидания ответа http запроса в 1С. Возможно, сервер медленный и ваш файл он просто не успевает обработать и по таймауту отваливается. </font></font>
    <font style=”vertical-align: inherit;”><font style=”vertical-align: inherit;”>А вообще брось ты этот плагин. Делай все через стандартный API. работает надежней и быстрее. Обновление остатков на сайте загружай напрямую в mysql. Тогда за 10 минут обновишь 200 тыс товаров. А с этим плагином будешь грузить сутками остатки, товары, фотографии.</font></font>

    • This reply was modified 2 years, 11 months ago by rovak.
    • This reply was modified 2 years, 11 months ago by rovak.
    Thread Starter rovak

    (@rovak)

    То есть, если у нас будет 15 транспортных компаний, то у нас будет 15 городов в заказе? А нельзя переделать в следующей версии плагина всю математику на dadata.ru или ему подобный сайт? dadata позволяет выбрать город и дает по нему коды. А уж эти коды городов и населенных пунктов будут использоваться для расчета цены по транспортным компаниям.

    • This reply was modified 5 years, 3 months ago by rovak.

    Проблема не в дроблении файла на части, а в использовании для обмена Commerce ML.
    То есть каждый раз на сайт передается одна и та же информация: категории товаров, атрибуты, значения атрибутов, фотографии, товары. Каждый обмен с сайтом тянет за собой всю эту информацию. В рамках стандарта Commerce ML спастись от этого невозможно. Каждый обмен с сайтом перезаписывает одну и ту же информацию на сайт. Это значит, что в схеме сайта все данные объекты будут указаны как измененные. Поисковые системы как заведенные будут обновлять у себя одну и ту же информацию. Поскольку бюджет их ресурсов ограничен на сайт, то они просто не успевают что-то другое загрузить в поисковую выдачу. Они постоянно обновляют одну и ту же информацию. То есть сайт будет не до конца проиндексирован. Поскольку поисковые роботы будут постоянно обновлять одну и ту же информацию, то сайт будет все время занят повышенной нагрузкой. Он будет медленно у вас работать. Другой стороной медали этого стандарта является то, что в этой схеме обмена не обновляется поле title. Поисковые роботы анализируют его. Раз его нет, то и нет анализа. Сайт никогда не будет в TOP-10. Где-то на 50 месте будет, но на первой странице выдачи нет.
    Единственным решением обмена видится переход на стандарты 1С в обмене данными. Использование Плана обмена. Для тех, кто не в курсе, это специальный объект базы данных 1С. В нем регистрируются все новые и измененные объекты. Обмен данными делается только по ним. Все дерево информации не переносится, только измененные объекты. И уход на обмен с WOO через REST API. Возни с переходом много. Но оно того стоит. Если у вас 100-500 товаров, то можете не грузиться этой темой. Товаров мало. Поисковые роботы с таким объемом спокойно справятся. Если товаров больше 100 тысяч, то обмен через Commerce ML большая проблема для сайта. Он будет сутками обновлять одно и тоже.

    Работает

    В 1С найдите по своему сообщению “Выгрузка на сайт завершилась с ошибками.
    Выгрузка на сайт не выполнена.
    Не удалось прочитать ответ сервера” место в программе. Поставьте точку останова и отладчиком 1С посмотрите что именно вам пишет сайт. То есть посмотрите, что именно не нравится сайту.

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

    Да просто так звезды светили и вам не повезло )))
    Я использую плагин для переноса товаров, фотографий и заказов. Это очень крутой плагин. Но все остальное записываю напрямую в базу магазина из 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();
    У вас не должно быть дублей записей. Поэтому сначала надо считывать из базы данные. Если они есть, то только обновлять с новыми значениями. А если нет такой записи, то можно новую запись создавать.

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

    Попробуйте 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
    В этом плагине можно отключить кэширование по кукам. Это то, что вам нужно.
    Остальные параметры на ваше усмотрение. Я делаю кэш длительностью Неделя. Сбрасываю весь кэш после обновления цен и остатков.

    То что сертификат удалили – в нынешние времена это не правильно. Но в целом у вас понятно, что в файле .htaccess надо правильно прописать директивы. А вообще поиск причины сломанного обмена 1С и сайта надо начинать с отладчика 1С. Находите в 1С общий модуль ОбменССайтом в нем функции ПолучитьДанныеССервера, ОтправитьФайлНаСервер. Находите в каждой функции строки
    “Если HTTPОтветСервера = Неопределено Тогда ”
    и становитесь на них отладчиком.
    В отладке надо посмотреть что вам возвращает сайт.
    Для этого в отладчике надо посмотреть
    “HTTPОтветСервера.ПолучитьТелоКакСтроку()”
    В журнал регистрации 1С сообщения с сайта переносятся не информативно, поэтому причина сломанного обмена часто не видна. Может быть битая фотография, ошибка в каком-то модуле или лишние невидимые символы подставляются в данные. Смотреть надо текст ошибки с самого сайта, а не его интерпретацию в 1С.
    Еще может быть ситуация, что ваш сайт просто не успевает отработать ваши пакеты с данными и он сам отваливается по таймауту выполнения запроса. У автора написано какие параметры надо увеличить. Можно уменьшить объем данных в переносе на сайт. Не выгружать по 1000 товаров за раз, а попробовать по 10. Это сильно зависит от темы. Если простенькая, то можно много грузить, а если посложнее, то бывает по сотне за раз и не выходит.
    По умолчанию 1С ждет ответ с сайта 180 секунд. Потом отваливается по ошибке.
    В функции СоединениеССервером поменяйте 180 на 1800 секунд.
    Например вот так
    Соединение = Новый HTTPСоединение(
    ПараметрыПодключения.Сервер,
    ПараметрыПодключения.Порт,
    ПараметрыПодключения.Пользователь,
    ПараметрыПодключения.Пароль,
    ПараметрыПодключения.Прокси,
    ///*** 180,
    1800,
    ///***
    ЗащищенноеСоединение);
    Это сильно помогает получить стабильный обмен данными с сайтом.

    Чтобы повторно послать заказ в 1С надо зайти в админке в нужный заказ и удалить одну произвольную запись. wc1c_queried. В админке нажимаете кнопку удалить эту запись в Произвольных полях. После этого обмен делаете из 1С. Можно в самой базе удалить эту запись у нужного заказа в таблице _postmeta. В post_id указываете номер заказа, а в meta_key надо указать wc1c_queried. И удаляете найденную строку в таблице.

    Подключи базу данных к 1С как внешний источник данных и скачай все с сайта. Сохрани где-нибудь в Номенклатуре id товара с сайта. А потом в обратную сторону загрузи гуид номеклатуры на сайт.

Viewing 15 replies - 1 through 15 (of 37 total)