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

  • Итак используется WordPress 4.6.1, WooCommerce 2.5.5, WC1C 0.7.
    VPS 1core 1gb ram, Debian 8, ispmanager, apache2, nginx (про настройку nginx – напишу ниже).

    Проблема №1
    Первая ошибка с которой я столкнулся:

    wc1c_strict_error_handler(8, Undefined offset: 3, /var/www/www-root/data/www/ваш-сайт.ru/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange/import.php, 136, Array ([is_full] => 1,[names] => Array ([0] => КоммерческаяИнформация,[1] => Каталог,[2] => Товары,[3] => Товар,[4] => ЗначенияРеквизитов,[5] => ЗначениеРеквизита,[6] => Значение),[depth] => 6,[name] => Значение,[data] => Товар пр. ТМЦ,[wc1c_groups] => Array (),[wc1c_group_depth] => -1,[wc1c_property] => ,[wc1c_product] => Array ([ХарактеристикиТовара] => Array (),[ЗначенияСвойств] => Array (),[ЗначенияРеквизитов] => Array ([-1] => Array ([Значение] => Array ([0] => )),[0] => Array (),[1] => Array ([Наименование] => ВидНоменклатуры),[2] => Array ([Значение] => Array ([0] => ))),[Ид] => 52047bf0-c66f-40b8-9f5e-93060819c3e2,[Штрихкод] => 2000000021737,[Наименование] => Вкладыши коленвала коренные Р2 КАМАЗ d=94 7405.1000102Р2Д,[БазоваяЕдиница] => шт,[Группы] => Array ([0] => 2c98bca1-6a05-11de-bba7-001bfcaaf348),[ЗначениеРеквизита] => 
    					
    					
    				),[i] => 3)) called at [/var/www/www-root/data/www/ваш-сайт.ru/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange/import.php:136]
    #2  wc1c_import_character_data_handler(1, Array ([0] => КоммерческаяИнформация,[1] => Каталог,[2] => Товары,[3] => Товар,[4] => ЗначенияРеквизитов,[5] => ЗначениеРеквизита,[6] => Значение), 6, Значение, Товар пр. ТМЦ)
    #3  call_user_func(wc1c_import_character_data_handler, 1, Array ([0] => КоммерческаяИнформация,[1] => Каталог,[2] => Товары,[3] => Товар,[4] => ЗначенияРеквизитов,[5] => ЗначениеРеквизита,[6] => Значение), 6, Значение, Товар пр. ТМЦ) called at [/var/www/www-root/data/www/ваш-сайт.ru/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange.php:374]
    #4  wc1c_xml_character_data_handler(Resource id #11, Товар пр. ТМЦ)
    #5  xml_parse(Resource id #11, 0b8-9f5e-93060819c3e2</Ид>
    				<Штрихкод>2000000021737</Штрихкод>
    				<Наименование>Вкладыши коленвала коренные Р2 КАМАЗ d=94 7405.1000102Р2Д</Наименование>
    				<БазоваяЕдиница Код="796 " НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
    				<Группы>
    					<Ид>2c98bca1-6a05-11de-bba7-001bfcaaf348</Ид>
    				</Группы>
    				<ЗначениеРеквизита>
    					<Наименование>ОписаниеВФорматеHTML</Наименование>
    					<Значение>Вкладыши КАМАЗ коренные Р2 d=94.00 ДААЗ</Значение>
    				</ЗначениеРеквизита>
    				<СтавкиНалогов>
    					<СтавкаНалога>
    						<Наименование>НДС</Наименование>
    						<Ставка>18</Ставка>
    					</СтавкаНалога>
    				</СтавкиНалогов>
    				<ЗначенияРеквизитов>
    					<ЗначениеРеквизита>
    						<Наименование>ВидНоменклатуры</Наименование>
    						<Значение>Товар пр. ТМЦ</Значение>
    					</ЗначениеРеквизита>
    					<ЗначениеРеквизита>
    						<Наименование>ТипНоменклатуры</Наименование>
    						<Значение>Товар</Значение>
    					</ЗначениеРеквизита>
    					<ЗначениеРеквизита>
    						<Наименование>Полное наименование</Наименование>
    						<Значение>Вкладыши коленвала коренные Р2 КАМАЗ d=94 7405.1000102Р2Д</Значение>
    					</ЗначениеРеквизита>
    					<ЗначениеРеквизита>
    						<Наименование>Вес</Наименование>
    						<Значение>0</Значение>
    					</ЗначениеРеквизита>
    				</ЗначенияРеквизитов>
    			</Товар>
    			<Товар>
    				<Ид>801d5196-bd02-4f03-b47e-d046785500d1</Ид>
    				<Штрихкод>2000000036397</Штрихкод>
    				<Наименование>Вкладыши коленвала коренные Р3 КАМАЗ 7405.1000102Р3</Наименование>
    				<БазоваяЕдиница Код="796 " НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница>
    				<Группы>
    					<Ид>2c98bca1-6a05-11de-bba7-001bfcaaf348</Ид>
    				</Группы>
    				<ЗначениеРеквизита>
    					<Наименование>ОписаниеВФорматеHTML</Наименование>
    					<Значение>Вкладыши КАМАЗ коренные Р3 d=93.50 ДААЗ</Значение>
    				</ЗначениеРеквизита>
    				<СтавкиНалогов>
    					<СтавкаНалога>
    						<Наименование>НДС</Наименование>
    						<Ставка>18</Ставка>
    					</СтавкаНалога>
    				</СтавкиНалогов>
    				<ЗначенияРеквизитов>
    					<ЗначениеРеквизита>
    						<Наименование>ВидНоменклатуры</Наименование>
    						<Значение>Товар пр. ТМЦ</Значение>
    					</ЗначениеРеквизита>
    					<ЗначениеРеквизита>
    						<Наименование>ТипНоменклатуры</Наименование>
    						<Значение>Товар</Значение>
    					</ЗначениеРеквизита>
    					<ЗначениеРеквизита>
    						<Наименование>Полное наименование</Наименование>
    						<Значение>Вкладыши коленвала коренные Р3 КАМАЗ 7405.1000102Р3</Значение>
    					</ЗначениеРеквизита>
    					<Знач�, 0) called at [/var/www/www-root/data/www/ваш-сайт.ru/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange.php:399]

    Поведение импорта при ошибке бывало разное – бывало сжирало память и Apache2 сам глушил процесс, а бывал вот такой ответ.
    Из всех вариантов которые тут предлагают ничего не помогло.

    Решение: вынес из каталога те товары на которые ругался плагин (их оказалось немного – 4 штуки из 1300)… как выяснилось, эти товары переходили по наследству от версии к версии 1С и в новой версии, которая сейчас стоит, никем не редактировались… В чем проблема, пока не выяснил… Как выясню – отпишусь…

    В итоге выгрузка заняла не больше 15-20 секунд и процесс занял всего-лишь 50!мб и это на 1300 товаров с картинками.

    На каждую проблему буду отводить по одному посту, чтобы как-то разделять…

Viewing 14 replies - 106 through 119 (of 119 total)
  • Прошу помочь. При обмене заказами не выгружает в 1С номер телефона и email.
    На форуме был такой вопрос, но тема закрыта без ответа.
    Кстати, поставил на последнюю 3 версию Woocommerce, может из-за этого?

    • This reply was modified 4 years, 5 months ago by dbear.
    Thread Starter lincaseidhe

    (@lincaseidhe)

    Может и из-за этого. Последняя версия с которой я тестировал плагин – была 2.6 кажется, или даже 2.5. Но вообще я думаю вряд ли, чтобы вукомерсе обновлял поля для телефона / почты… Логи смотреть надо – тогда понятней будет. Лог апача или php-fpm, что на сервере стоит.

    @lincaseidhe, в журнале регистрации 1С выдает ошибку Failed open archive:

    Интерактивный обмен
    05.12.2017 12:47:59 Запуск выгрузки товаров
    05.12.2017 12:47:59 Завершено формирование файлов выгрузки товаров
    Выгружено товаров: 7
    предложений: 7
    картинок: 16
    
    В том числе для каталога Каталог товаров:
    товаров: 7
    предложений: 7
    картинок: 16
    
    05.12.2017 12:52:28 Выгрузка на сайт завершилась с ошибками.
    offers.xml: Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
    Ответ сервера: 
    Error: Failed open archive /home/firmashtamp/web/firmashtamp.ru/public_html/wp-content/uploads/woocommerce-1c/catalog/v8_xWlbrK_69c.zip with error code 21.
    
    #0  wc1c_error(Error: Failed open archive /home/firmashtamp/web/firmashtamp.ru/public_html/wp-content/uploads/woocommerce-1c/catalog/v8_xWlbrK_69c.zip with error code 21.) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange.php:340]
    #1  wc1c_unpack_files(catalog) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange.php:430]
    #2  wc1c_mode_import(catalog, offers.xml) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange.php:508]
    #3  wc1c_exchange() called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-content/plugins/woocommerce-and-1centerprise-data-exchange/exchange.php:533]
    #4  wc1c_template_redirect() called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-includes/class-wp-hook.php:286]
    #5  WP_Hook->apply_filters(, Array ([0] => )) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-includes/class-wp-hook.php:310]
    #6  WP_Hook->do_action(Array ([0] => )) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-includes/plugin.php:453]
    #7  do_action(template_redirect) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-includes/template-loader.php:12]
    #8  require_once(/home/firmashtamp/web/firmashtamp.ru/public_html/wp-includes/template-loader.php) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/wp-blog-header.php:19]
    #9  require(/home/firmashtamp/web/firmashtamp.ru/public_html/wp-blog-header.php) called at [/home/firmashtamp/web/firmashtamp.ru/public_html/index.php:17]
    
    Request URI: http://firmashtamp.ru/?wc1c=exchange?type=catalog&mode=import&filename=offers.xml
    Server API: apache2handler
    Memory limit: 512M
    Maximum POST size: 1000M
    PHP version: 7.0.22-0ubuntu0.16.04.1
    WordPress version: 4.9.1
    Plugin version: 0.7r1466555
    
    05.12.2017 12:52:28 Завершена выгрузка товаров

    Насчет переполнения, на сервере места много свободного, но если начинают копиться архивы, то постепенно заполняют все свободное место. Объясню подробно как происходит: сначала делаю полную выгрузку, все нормально выгружается, затем идут частичные выгрузки изменений по расписанию, каждые 5 минут. Архивы после каждого обмена удаляются. Какое-то время все нормально работает, а потом возникает ошибка не понятно из-за чего. При этом архив не удаляется, и с каждым обменом создается новый. Каждый архив весит около 100 мегов, соответственно 100МБ каждые 5 мин получится почти по 1 гигабайту в час, через несколько часов на сервере не остается свободного места и сайт начинает тормозить, пока я не удалю эти архивы вручную. После удаления обмен опять начинает работать нормально какое-то время. И так каждый день мне приходится вручную чистить архивы. С правами я думаю все нормально, т.к. до этого обмен происходит нормально. Товаров около 1000, но полная выгрузка происходит нормально, а при частичной выгрузке выгружаются изменения всего нескольких товаров.

    Thread Starter lincaseidhe

    (@lincaseidhe)

    Была у кого-то такая же ошибка и непонятно из-за чего (сменой хостинга лечилась). Ну а на самом деле – если сначала все нормально, то могу предположить, что апач убивает процесс, который работает в данный момент с архивом. Надо копаться в настройках апача с директивами:

    #<IfModule mpm_prefork_module>
    #    StartServers          8
    #    MinSpareServers      10 
    #    MaxSpareServers      20
    #    ServerLimit         256
    #    MaxClients          200
    #    MaxRequestsPerChild 4000
    #</IfModule>

    В описаниях читай, что каждая значит и экспериментируй. Главное по памяти не провались. Если архивы не большие, то мемори лимит можно меньше сделать, например 128. (посмотри сколько весят сами файлы xml), картинки – чисто выгружаются, они память не занимают. я проверял, в среднем на 8к товаров скрипт отжирал порядка 90-100 МБ на php 5.6. На 7 еще меньше жрать должен, так что мемори лимит можно уменьшать смело, а воркеров добавить. Обращай внимание на директивы MinSpareServers и MaxSpareServers. Ну и по посещалке смотри – если много посетителей единовременно будет, то процессов гораздо больше оставлять нужно, чтобы ни у кого ничего не тормозило… Ну и вообще – каждые 5 минут – это жестко) че там такая бойкая торговля идет?

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

    Thread Starter lincaseidhe

    (@lincaseidhe)

    Денежку себе оставь. Автор плагина на моей памяти ни разу не появился, хотя даже были посты, что требуется доработка/настройка за бабло. Поэтому хз. Вряд ли он дальше планирует поддерживать плагин. Я так думаю, что это у него был разовый заказ, и получившийся плагин в общий доступ выложил. Если хочешь делай форк и дорабатывай… Там есть че дорабатывать… Я просто на 1С ставку уже не делаю. Наши клиенты по большей части соглашаются на отказ от 1С и начинают работать с новыми технологиями (дешевле и проще)… А вообще как по мне – дешевле документооборот сделать и нового бухгалтера взять, чем за 1С + инфраструктуру под 1С тратится.

    Иногда ошибки обмена возникают из-за битых фоток. Надо просто открыть их и посмотреть открываются ли они в 1С. Смотреть надо в логах 1С на каком товаре споткнулась выгрузка и проверять 1С. Плагин их не переваривает и падает по ошибке.
    А вообще, меняйте хост и все у вас будет работать.
    Я с hostinger.ru перешел на https://firstvds.ru/?from=516007
    небо и земля.
    Но через плагин я загружаю только товар и картинки, а цены и остатки напрямую лезу в базу менять. Так быстрее намного.
    Работа плагина сильно зависит от качества хостинга. По любому надо дробить в 1С выгрузку на пакеты. Тогда все будет работать. Только в случае hostinger одним пакетом можно передать за один раз не более 5 товаров. Потом он падает по ошибке, а в случае с https://firstvds.ru/?from=516007 можно передать одним пакетом 5000 товаров. В этом разница. Но дробить всю выгрузку на отдельные пакеты надо в самом 1С при работе с любым хостингом. Потом опытным путем определяете сколько товара можно передать за один раз. Поднимаете так количество товара до тех пор, пока сервер не выдаст ошибку. Ну и потом немного опускаетесь в количестве. Так дальше и работаете. Это значит максимальная ваша возможность передать количество товара за один раз. Если у вас плохой хостинг, то между пакетами надо делать паузу секунд 5. Тогда медленно, но вы все загрузите себе на сайт. Все это надо делать в 1С. Можно в плане обмена 1С регистрировать маленькими партиями товар к обмену. Тогда ничего не надо переделывать, просто работы много ручной.

    @lincaseidhe я тоже все думаю от 1с отказаться, но слишком уж много в ней за несколько лет накопилось, да и денег уже много за нее вложил.

    @rovak хостинг у меня тот что автор советовал – DigitalOcean. По поводу фоток и количества товаров, я думаю дело не в этом, ведь первая полная выгрузка нормально проходит, а ошибка возникает на частичных выгрузках, там только небольшие изменения. 1с пишет что ошибка на стороне сервера. Я все таки думаю надо дальше экспериментировать с настройками сервера.

    Я не фантазирую и не думаю. Я отладчиком смотрю что с обменом не так. Заходите в конфигуратор 1С. Общий модуль ОбменССайтом, функция ПолучитьДанныеССервера. Находите строчку ОтветСервера = ТекстОтвета.ПолучитьТекст(). Становитесь отладчиком на этой строчке и смотрите реально что вам ответил сайт. Эти сообщения отличаются от того, что вам выводятся на экран. Тут может быть адрес конкретной строки конкретного модуля с ошибкой, может быть текст, что вы не ввели кэпчу и поэтому обмен не идет, может быть id post товара, на котором обмен упал. Да много чего может быть. Эти сообщения не выводятся на экран пользователю. Там ответ всегда один и тот же. “Ошибка на стороне сервера.”

    Thread Starter lincaseidhe

    (@lincaseidhe)

    @tohin666 а денег не жалей) Потрать 3-5 дней на обработку и выгрузку всего это в mysql, зато потом головняков будет все меньше и меньше становится… Если прям критичны накладные, которые в 1с есть – поройся в инете, плагинов полно, что нужно подберешь, или допишешь функционал. Вон на фрилансе за копейки готовы писать плагины для wordpress. А если бухгалтер артачится – то проще нового взять… А постоянно решать проблемы с 1С – это не выход. Потому что чем дальше – их будет все больше становиться. Или покупай их битрикс, и то не гарант, что там похожих проблем не будет, но там хотя бы какая-никакая поддержка есть в виде приходящего сисадмина. Сколько уже работаю с разными прогами, все больше убеждаюсь, что бесплатное ПО с платным не совместимо. Все платники делают все для того, чтобы их продукты только со своими же совместимы были, и ни ни чтобы с бесплатными. А у 1С аппетиты сам знаешь. В общем я делаю ставку только на бесплатное ПО с открытым исходным кодом. Практически все, что есть в платном сегменте – можно заменить аналогами из бесплатного. А если функционала не хватает – всегда есть плагины, которые кто-то до тебя уже написал и тебе осталось только погуглить. Я кстати не помню, лет 6-8 назад, мы консультировали какую-то розничную сеть, они тоже с иглы 1С хотели слезть. Так после я одним глазком подсмотрел, что у них за ПО стоит – не повершь, все бесплатное, абсолютно, ось – убунту, товарная учетка тоже че-то из бесплатного, но со своими доделками походу. И все нормально работает, и штрих-сканеры, и принтеры и вся остальная периферия, и продавцы нормально тоже со всем этим управляются. Ну и учитывая, что у них больше 200 магазинов, прикинь сколько они бабок сэкономили, когда перестали платить майкрософту и 1С.

    @rovak и чем прям веб-сервер разбежался и выдал ответ незнакомому модулю 1С? Ну че-то не смешите мои тапочки. И вообще, 1С обращается по конкретному адресу, за обработку запросов на этом адресе отвечает конкретный (нами обсуждаемый) плагин, он или обрабатывает запрос и возвращает ответ “все ок”, или выдает ответ “failed”, и только в некоторых случаях, когда спотыкается на xml файле в ответ идет кусок этого файла и цепочка функций, которые споткнулись на этом куске. Все остальные ошибки фиксируются в логах веб-сервера, поэтому нужно туда лезть а не в конфигуратор. Возможно конфигуратор и поможет если ошибка на стороне 1С, но в данном конкретном случае – выгрузка происходит нормально, а косяки начинаются при последующих.

    Между нами разница в том, что я знаю 1С.

    Решил разделить отдельно выгрузку товаров и обмен заказами. Заказы с сайта важно сразу получить, поэтому поставил каждые 15 минут и только в рабочее время с 9 до 18. А выгрузку товаров можно и один раз в день делать, поставил ночью, когда нагрузка на сервер минимальна, и 1с простаивает. Посмотрим что дальше будет.

    Thread Starter lincaseidhe

    (@lincaseidhe)

    @rovak но видимо не знаешь apache2

    Thread Starter lincaseidhe

    (@lincaseidhe)

    @tohin666 посмотрел бы логи в момент ошибок, не ответ сервера, а логи на стороне сервера. /var/log/apache2/error.log (оффтоп: он тебе @rovak тоже в конфигураторе виден?). если будет что-то типа child pid XXXXX exit signal, что может значить, что грохнулся процесс и бесполезно искать ошибки на стороне php или 1С. А там уже надо будет смотреть. Может и php неправильно собран. На DO что ставил? Стандартный образ? Убунту? Дебиан? Панель используешь? Если убунту, то там и apparmor причиной даже может стать. Не помню уж где, но что-то связанное с wordpress и apparmor уже приходилось исправлять.

Viewing 14 replies - 106 through 119 (of 119 total)
  • The topic ‘Как я ставил этот плагин и с какими проблемами пришлось столкнуться’ is closed to new replies.