1C УТ 8.x <-> VirtueMart по протоколу CommerceML

  • 1288 Ответов
  • 141872 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Данная тема является продолжением темы 1C УТ выгрузка/загрузка в VirtueMart по протоколу CommerceML

На данный момент скрипт представленный в прошлой теме больше не обновляется!

Версия сегодняшнего скрипта vmshop_1c v.2.1.0.beta

Скрипт обмена 1С УТ v8.x и магазина на базе Joomla - VirtueMart 1.1.x-2.0.6 Final выполняет следующие функции:
1С -> VirtueMart
1) Выгрузка номенклатуры
2) Выгрузка всех характеристик
3) Выгрузка изображений с последующим созданием tumbsnail
4) Выгрузка дополнительных картинок
5) Выгрузка всех ценовых групп и назначение по дефолту группы, указанной в настройке!
6) Выгрузка остатков на складе
7) Выгрузка цен на товары в соответствии с ценовой группой
8) Выгрузка производителей

1С <- VirtueMart
1) Загрузка заказов со статусов P
2) Добавление новых клиентов (в том числе и Юр. лица)

Скрипт работает как на полную выгрузку, так и на выгрузку изменений!

В связи с тем, что скрипт магазина постоянно обновляется и тем самым постоянно меняется что-либо в структуре базы данных, то и скрипт возможно будет работать некорректно. Следите за этой веткой, возможно исправление уже есть ниже! Так же первый пост постоянно обновляется по факту выхода обновления! Так же прошу высказывать свои ошибки / пожелания / исправления в этой теме! Только убедитесь, что ваша ошибка еще не решена! Так же в случае ошибки прошу выкладывать логи выгрузки, логи ошибок сервера, важные параметры и версия скрипта! Заранее благодарю за понимание!

Основные настройки (обновлено)!
Код
//Системные параметры
define ( 'VM_VERSION', '2.1.0.beta' ); // Версия скрипта. Будет обновляться!
define ( 'VM_HTTP_VERS', 1 ); // Использовать модуль http (через браузер) 1- да, 0- нет (в случае 0 - настройте config.php)
// Можно с начало включить, настроить, а потом выключить!

Следующие параметры теперь находятся в папке components/com_virtuemart/1cexport/system/config.php
define ( 'VM_CODING', 'UTF-8' ); // Кодировка выгрузки заказов (пока не применяется)
define ( 'VM_DB', 'yes' ); // Обнулять таблицы перед выгрузкой?
define ( 'VM_ZIP', 'yes' ); // Использование zip архивов
define ( 'VM_ZIPSIZE', 16480000 ); // максимальный размер архива в байтах
define ( 'VM_LOG', 'time' ); // вести логи по времени (time), по дате (date), один лог (one)
define ( 'VM_LANG', 'RU' ); // Язык 1С - требуется для характеристик (см adapt.php)
//Параметры изображения категории
define ( 'VM_CAT_IMG', 'yes' ); // Применять картинку к категории
define ( 'VM_CAT_RAND', 'r' ); // Выбор картинки ( r - рандомом, p - первая )
//Параметры отвечающие за налог
define ( 'VM_NDS', 'yes' ); // Учитывать в цене из 1С налог НДС?
define ( 'VM_NDS_COUNTRY', 'RUS' ); // Страна учета НДС?
//Параметры отвечающие за поставки товара
define ( 'VM_POSTAVKA_E', 'yes' ); // Использовать модуль поставки (заменяет картинку в случае отсутствия товара)
define ( 'VM_POSTAVKA', '3-5d.gif' ); // Вставляет текст или картинку (например: on-order.gif или в наличии)
define ( 'VM_POSTAVKA_TIME', '432000' ); // Ориентировачное время поставки в секундах, т.е. 5д*24ч*60м*60с = 432000
//Параметры thumbnails изображения
define ( 'VM_TBN_H', '90' ); // Высота thumbnails изображения
define ( 'VM_TBN_W', '90' ); // Ширина thumbnails изображения
define ( 'VM_TBN_RED', '255' ); // Подложка thumbnails изображения (Красный - 255) - >
define ( 'VM_TBN_GREEN', '255' ); // Подложка thumbnails изображения (Зеленый - 255) - > Все вместе - белый
define ( 'VM_TBN_BLUE', '255' ); // Подложка thumbnails изображения (Синий - 255) - >
define ( 'VM_TBN_QTY', '80' ); // Качество thumbnails изображения (максимум 100)
define ( 'VM_JPG', 'no' ); // Заменять ли JPEG на JPG
//Параметры отвечающие за каталог
define ( 'VM_LIST_CAT', '5' ); // Сколько отображать товаров в каталоге
define ( 'VM_DEF_CASHGR', 'Розничная' ); // название основной категории цен (у меня это Розничная)
$config['VM_MANUFACTURE'] = 'производитель'; // Обозначение свойства производителя
//Параметры отвечающие за выгрузку заказов
define ( 'VM_USER_SHOP', 'no' ); // Создать поля для регистрации новых клиентов (Банковские реквизиты: ИНН, КПП и т.д.)
define ( 'VM_CLIENT', 1 ); // 0 - Выгружать всех клиентов в 1С на контрагента "Физ лицо"  1- Выгружать всех клиентов в 1С как есть
define ( 'VM_NDS_SHIP', '18' ); // Ставка НДС для услуги доставки

Инструкция по установке в архиве!

Внимание! Для некоторых возможностей скрипта понадобится, чтобы было установлено дополнение к 1С, скачать можно на офф сайте!

У кого установлена версия 1.1.9 - там в коде есть ошибка, из-за которой не отображаются подкатегории, выводится сообщение "В данной категории нет товаров."

Решение:

В файле \administrator\components\com_virtuemart\html\shop.browse.php допущена ошибка в строке 86:

Код
elseif( $num_rows == 0 && empty($product_type_id) && empty($child_list)) {
echo $VM_LANG->_('EMPTY_CATEGORY');

Нужно изменить условие, поставив перед empty($child_list) восклицательный знак:

Код
elseif( $num_rows == 0 && empty($product_type_id) && !empty($child_list)) {
echo $VM_LANG->_('EMPTY_CATEGORY');

Внимание!
Обратите внимание на параметр:
Код
define ( 'VM_LANG', 'RU' );


Новая версия скрипта 2.1.0.beta
Так же доступна прошла версия 2.0.9

Скачать новую версию: http://forum.fromrus.su/files/file/11-vmshop-1c/

Важно! Все параметры теперь находятся в конфигурационном файле в папке system, поэтому для настройки можно воспользоваться модулем загрузки через браузер или настроить в ручную!

Для простоты (кто не хочет держать включенным доступ через браузер) включаем параметр (в vmshop_1c.php) VM_HTTP_VERS = 1, настраиваем, а потом выключаем VM_HTTP_VERS = 0


[вложение удалено Администратором]
новая ссылка предоставлена fov -   
https://yadi.sk/d/amgOGaiyUz2Le
« Последнее редактирование: 27.11.2014, 22:32:11 от fsv »
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #1 : 18.08.2011, 16:16:23 »
Цитировать
4) Выгрузка дополнительных картинок
А как они отображаются в магазине? Кто тестил как оно работает?
Мне нужно к ноиенклатуре прикрепить не только основное изображение, но и допустим сертификат!

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #2 : 18.08.2011, 17:51:55 »
Выглядит это так: http://shop.termservis.su/2011-07-08-11-37-04?page=shop.product_details&flypage=flypage.tpl&product_id=1&category_id=6
Единственное, пока файлы выгружать не совсем можно, только картинки!

Обнаружил маленький косяк с изображениями формата не jpeg, исправил! Исправления в архиве!
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #3 : 18.08.2011, 18:20:25 »
Что то как не пытаюсь, ничего не происходит.
Добавил в номенклатуре в хранилищедоп.информации (в изображение и в файл ) картинку формата jpg делаю полную выгрузку без обнуления таблиц в итоге сколько ранее картинок выгружалось, столько и выгружается, в результате в админике и на самом сайте доп изображений нет!

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #4 : 18.08.2011, 18:27:51 »
Есть вариант - удалите все картинки из папки /components/com_virtuemart/shop_image/product/ и /components/com_virtuemart/shop_image/product/resized/ и сделайте выгрузку еще раз!
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #5 : 18.08.2011, 18:34:53 »
Аналогично, кол-во выгруженных картинок не изменилось! И на сайте отсутствуют.

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #6 : 18.08.2011, 18:40:49 »
Быть может что то со штатным 1с-овским выгрузчиком что то не так?

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #7 : 18.08.2011, 19:07:00 »
Посмотрите в базе (через phpmyadmin) базу ..._vm_product_files Есть ли эти картинки?
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #8 : 18.08.2011, 19:14:11 »
Через import.xml видно что они не выгружались!

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #9 : 19.08.2011, 11:29:23 »
ммм, тогда Вам сюда...
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #10 : 19.08.2011, 13:49:54 »
Здесь я был.
Скачал, запустил exe-шник, установил в папку по умолчанию. После инсталяции открылась страничка с подробной инструкцией по установке. В итоге в процессе обновления конфигурации обнаружил, что отсутствуют некоторые пункты необходимые для обновления. За отсутствием таковых отметил для обновления то, что есть и в итоге результат не дал ожидаемого. Пробовал на 2-х версиях 8.1-8.2 с безуспешно.

Может кто подскажет, как это установить и получить выгрузку дополнительных изображений- оч. нужно!

*

MEW

  • Осваиваюсь на форуме
  • ***
  • 25
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #11 : 19.08.2011, 16:55:39 »
Появилась весьма досадная сложность, а именно:
Нужна выгрузка из 1с, а кроме этого есть ещё одна категория, которая набивается вручную и с 1с не связана никак.
И вот: сейчас в скрипте выключена очистка таблиц, иначе эта моя категория удалится при очередном обновлении.
НО. Теперь и при обновлении проданные товары не удаляются, а продолжают висеть, как будто есть. Только добавляются новые.
Что можно сделать?

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #12 : 19.08.2011, 21:38:04 »
НЕ нужно ничего делать, если сегодня товар отсутствует, а к примеру через 3-7 дней он снова появится, что тогда? это раз!
Второе, если включить обнуление таблиц, то каждый раз при появлении новой номенклатуры ID товара в базе VirtueMart будут меняться, соответственно изменится постоянный адрес какого либо товара.

Все это крайне негативно скажется на поисковой выдаче, человек ищет товар, в кэше поисковика страница присутствует и он переходит на ваш сайт и ему система говорит, что товар не найден, или вместо искомого товара ему по ссылке вылетает совершенно другой.
Обнуление таблиц не выключаем, а в случае если товар полностью снят с продажи, лезем в админку и скрываем его!
У меня на отсутствующий товар стоит заглушка следующего содержания: "Нет в наличии! При заказе товара поставка осуществляется в течение 7-10 дней." и если товара больше никогда не будет, я его отключаю

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #13 : 20.08.2011, 15:12:58 »
Обновил модуль выгрузки в 1С 8, после выгрузки все цены стали вместо 6548 руб.- 6 рублей, а вместо 1245 руб- 1 руб ))))
« Последнее редактирование: 20.08.2011, 15:35:26 от sokolspec »

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #14 : 20.08.2011, 15:33:26 »
кажется понял почему, в цене offers.xml появился пробел:
Цитировать
<Цена>
                  <Представление>5 550 руб. за шт</Представление>
                  <ИдТипаЦены>3f9296fb-f6e8-11df-9731-001e5848397d</ИдТипаЦены>
                  <ЦенаЗаЕдиницу>5 550</ЦенаЗаЕдиницу>
                  <Валюта>руб</Валюта>
                  <Единица>шт</Единица>
                  <Коэффициент>1</Коэффициент>
               </Цена>
« Последнее редактирование: 20.08.2011, 15:39:47 от sokolspec »

*

Ay49Mihas

  • Новичок
  • *
  • 2
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #15 : 22.08.2011, 01:17:44 »
Доброго времени суток! Пользуюсь старой версией скрипта (1.2.3), т.к. достаточно много в ней допилено под свои нужды.

Создалась следующая проблема: 1С:Предприятие 8.2.14.528, УТ 10.3.10.4. Реализован обмен с удалённым сайтом на хостинге (всё работает нормально, в т.ч. проверка) и с локальной копией на 127.0.0.1 (windows 7 максимальная, apache 2.0.64, php 5.3.5, mysql 5.5). Во втором случае не работает обмен, при проверке соединения пишет проверить логин-пароль. Вся фишка в том, что в скрипте проверка проходит успешно (отсылается обратно success), но 1с-ка упорно не хочет воспринимать этот результат как положительный. Вся проблема возникает только при type=catalog&mode=checkauth, ничего кроме этого не затрагивается.

В чём может быть дело? Какие-то специфичные настройки софта на локалхосте? Заранее благодарен.

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #16 : 22.08.2011, 11:23:57 »
Возможно, это проблема кодировки. Виндовский сервер не хочет нормально работать с UTF-8 и отсылает ответ не  в той кодировке. Та же проблема была и у меня, пока я с ней не замучился. Исправилось несколько раз сохраняя в любой другой кодировке и возврат к UTF-8 всех файлов скрипта!

Но есть вероятность, что фаервол семерки просто блокирует ответ, попробуй отрубить его вообще на время!
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #17 : 22.08.2011, 11:28:02 »
кажется понял почему, в цене offers.xml появился пробел:

В файле offers.php добавьте после строки 141:
Код
$price = str_replace(",", ".", $price);

Следующее:
Код
$price = str_replace(" ", "", $price);
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #18 : 22.08.2011, 11:37:00 »
Сделал, теперь цены стали 10 руб.)))

Вместо тысяч

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #19 : 22.08.2011, 11:55:21 »
хмм, интересно! Выложи пожалуйста offers.xml
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #20 : 22.08.2011, 12:08:17 »
вот

[вложение удалено Администратором]

*

Centoff

  • Давно я тут
  • ****
  • 245
  • 16
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #21 : 22.08.2011, 12:08:47 »
И еще, попробуй добавить следующее после той строки, которую вставлял чуть раньше!

Код
			$price = str_replace(" ", "", $price);

if (!is_float ($price))
{
settype($price, "float");
}
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #22 : 22.08.2011, 12:15:38 »
Попробовал, аналогично!

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #23 : 22.08.2011, 12:30:11 »
Нашел в нете:
Цитировать
Там скорее всего не пробел, а спецсимвол (неразрывный пробел или что-то подобное).

Поэтому: выделить символ пробела в числе; скопировать; в окошке "найти" вставить.

Так и сделал, скопировал пробел из offers.xml и вставил его в код: $price = str_replace(" ", "", $price);
на место пробела, и ура- все работает!
« Последнее редактирование: 22.08.2011, 14:00:18 от sokolspec »

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #24 : 22.08.2011, 12:52:25 »
Centoff,
Заметил одну особенность, если дополнительных изображений 1 то оно выгружается нормально, но если их 2 то главное изображение заненяется 1-м доп изображением. Тоесть в не зависимости сколько доп изображений товара, отображается только одно. Смотрел в админке VirtueMart, исходя из import.xml их должно быть несколько для примера номенклатура: Плита газовая ПГ4 М-1464-02 "Веста люкс " с крышкой , электророзжигом.

import.xml прилагается

[вложение удалено Администратором]

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #25 : 22.08.2011, 18:47:10 »
Centoff,
Есть еще один вопрос, выгрузка происходит без обнуления таблиц. При этом в фильтре выгрузки стоит учет по складам из списка складов, статус товара не обновляется, тоесть не смотря на то, что товара нет в наличие (остаток=0) его статус on-order.gif

*

Alex2

  • Осваиваюсь на форуме
  • ***
  • 112
  • 6
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #26 : 22.08.2011, 21:26:12 »
Проверял полную выгрузку:

Выгрузка работает нормально, но при этом у покупателей и у способов оплаты обнуляется группа
Из-за этого когда покупатель оформляет заказ, стадия выбора "способа оплаты" пропускается. И покупатель не может оформить заказ.
Приходится вручную заходить в каждого покупателя и способ оплаты и пересохранять их.

И еще один вопрос, зачем во всеx товары пишется "Доступен" и вставляется картинка ON-Order (независимо в наличии товар или нет)?
Как это убрать?

*

sokolspec

  • Осваиваюсь на форуме
  • ***
  • 79
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #27 : 22.08.2011, 21:41:57 »
И еще один вопрос, зачем во всеx товары пишется "Доступен" и вставляется картинка ON-Order (независимо в наличии товар или нет)?
Как это убрать?
Настройки Virtuemart=> сайт=> Выберите шаблон для магазина => настройки => Show Availability Information? поставь "no"

*

Alex2

  • Осваиваюсь на форуме
  • ***
  • 112
  • 6
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #28 : 22.08.2011, 21:53:54 »
Настройки Virtuemart=> сайт=> Выберите шаблон для магазина => настройки => Show Availability Information? поставь "no"
Спасибо, совсем забыл. Как говориться, истина где-то рядом!

*

Ay49Mihas

  • Новичок
  • *
  • 2
  • 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #29 : 22.08.2011, 22:57:21 »
Возможно, это проблема кодировки. <...>Исправилось несколько раз сохраняя в любой другой кодировке и возврат к UTF-8 всех файлов скрипта!
О, спасибо! Открывал блокнотом, немного правил, сохранял. Реально, видимо, в принудительно двухбайтную кодировку перекодирует он.
Из линукса скопировал --- всё заработало.