Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

Centoff

  • Захожу иногда
  • 244
  • 16 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #600 : 09.06.2012, 09:03:15 »
Разобрался с расширением GD, всё подключено было... проблема осталась:
Этап 3.3) Неудача: Невозможно создать thumbnails - **/*/*/*/*/*/images/stories/virtuemart/product/resized/5bd0c507-53ff-11e1-9236-002421376984_90x90.jpg

Что может быть?

Лог сервера найди!

Изображение штрихкода можно присоединить в 1с — картинки же синхронизируются.
Там есть отдельная статья по штрихкодам, они выгружаются цифрами, но вот куда их прилепить в магазине - вопрос!

Кстати версия 2.1 (с производителями) уже почти готова

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

Centoff

  • Захожу иногда
  • 244
  • 16 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #601 : 09.06.2012, 10:49:56 »
Версия 2.1.0.beta

Исправления:
- Переработан код
- устранены некоторые ошибки
- добавлены производители (параметр VM_MANUFACTURE - отвечает за название свойства)
- Теперь возможна загрузка данных через браузер (www.site.ru/vmshop_1c.php)
- Добавлен параметр VM_HTTP_VERS (включает/отключает модуль загрузки через браузер)

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

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

[вложение удалено Администратором]
Разработка приложения для выгрузки товаров из 1С в VirtueMart по протоколу CommerceML (fromrus.su:3001) а так же на этом форуме в разделе "Расширения Joomla -> VirtueMart"
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #602 : 09.06.2012, 10:51:20 »
:) ща заценим!
*

al-x-k

  • Новичок
  • 3
  • 1 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #603 : 09.06.2012, 13:25:55 »
//Параметры изображения категории
define ( 'VM_CAT_IMG', 'yes' );    // Применять картинку к категории
define ( 'VM_CAT_RAND', 'r' );    // Выбор картинки ( r - рандомом, p - первая )

Картинки не присваиваются
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #604 : 09.06.2012, 18:21:07 »
Скажите, родные, а отображается ли у вас на рабочем столе 1с заказ, полученный с сайта?

Я думал-думал и все понял! В настройках узла обмена с сайтом, на вкладке "Обмен заказами"/"Основные настройки обмена заказами", в параметрах создания документа "Заказ клиента", менеджером нужно вставлять того, на чьем рабочем столе должны отображаться эти заказы.
А те, что созданы на имя другого менеджера, отображаются в Продажи --> Заказы клиентов, если очистить поле "менеджер".



Статус заказа на сайте, как я понял, пока не обновляется? А то заказы из 1с стабильно накапливаются в /images/stories/virtuemart/product/ но как-то бестолку.

« Последнее редактирование: 09.06.2012, 20:38:41 от sftacc »
*

sbevza

  • Новичок
  • 2
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #605 : 13.06.2012, 03:52:25 »
Выгрузка перестала работать. В логе пишет
PHP Warning:  Unknown: POST Content-Length of 368263085 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 59768832 bytes) in /home/www/public_html/components/com_virtuemart/1cexport/file.php on line 124

Размер файла выгрузки в районе 350 мб в месте с картинками.
Судя по логам, скрипт кушает много памяти. Кто-нибудь сталкивался с такой проблемой? Что можно сделать?
*

Newageman

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #606 : 13.06.2012, 15:01:50 »
Все выгружается, но к сожалению пишет в 1с: ERROR 10: No file offers.xml
И раньше выгружались товары без учета резервов, а теперь с учетом.
*

Centoff

  • Захожу иногда
  • 244
  • 16 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #607 : 14.06.2012, 11:35:07 »
Выгрузка перестала работать. В логе пишет
PHP Warning:  Unknown: POST Content-Length of 368263085 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 59768832 bytes) in /home/www/public_html/components/com_virtuemart/1cexport/file.php on line 124

Размер файла выгрузки в районе 350 мб в месте с картинками.
Судя по логам, скрипт кушает много памяти. Кто-нибудь сталкивался с такой проблемой? Что можно сделать?

Создай в корне сайта файл .htaccess (или если он есть, то просто вставь вначало его) и внеси следующее
Код
php_value memory_limit 500M
php_value post_max_size 500M
php_value upload_max_filesize 500M

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

LEOPOLD

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #608 : 14.06.2012, 15:58:25 »
VirtueMart 1.1.9
Версия 2.1.0.beta

При выгрузки из УТ 10.3 выдает:
Ответ сервера:
<b>Warning</b>:  XMLReader::read() [<a href='xmlreader.read'>xmlreader.read</a>]: /home/w/webdesigru/public_html/VANNA/public_html/components/com_virtuemart/shop_image/product/import.xml:528: parser error : Extra content at the end of the document in <b>/home/w/webdesigru/public_html/VANNA/public_html/components/com_virtuemart/1cexport/import_xml.php</b> on line <b>143</b><br />
<br />
<b>Warning</b>:  XMLReader::read() [<a href='xmlreader.read'>xmlreader.read</a>]: &lt;/РљРѕРјРјРµСЂС‡РµСЃРєР°СЏР˜РЅС„РѕСЂРјР°С†РёСЏ&gt;п»ї&lt;?xml version=&quot;1.0&quot; encoding=&quot; in <b>/home/w/webdesigru/public_html/VANNA/public_html/components/com_virtuemart/1cexport/import_xml.php</b> on line <b>143</b><br />
<br />
<b>Warning</b>:  XMLReader::read() [<a href='xmlreader.read'>xmlreader.read</a>]:                                                ^ in <b>/home/w/webdesigru/public_html/VANNA/public_html/components/com_virtuemart/1cexport/import_xml.php</b> on line <b>143</b><br />
<br />
<b>Warning</b>:  XMLReader::read() [<a href='xmlreader.read'>xmlreader.read</a>]: An Error Occured while reading in <b>/home/w/webdesigru/public_html/VANNA/public_html/components/com_virtuemart/1cexport/import_xml.php</b> on line <b>143</b><br />
failure\nerror mysql\n

2.09 rev4 работал нормально...


Еще вопрос:
Как увеличить таймаут работы скрипта... большой каталог не выгружает?
« Последнее редактирование: 14.06.2012, 21:26:51 от LEOPOLD »
*

Konstant1n

  • Новичок
  • 6
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #609 : 15.06.2012, 15:55:19 »
Что нужно прописать, чтобы при выгрузке заказов из VirtueMart в 1C прописывался адрес доставки
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #610 : 15.06.2012, 17:46:41 »
Адрес доставки указывается в информации о контрагенте. Соответственно, ковырять createzakaz.php. В принципе, вполне реализуемо даже с учетом того, что адрес покупателя отличается от адреса доставки. Кстати, есть еще поле <Комментарий>, его тоже можно использовать.
*

meU3

  • Новичок
  • 3
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #611 : 18.06.2012, 13:05:47 »
Здравствуйте!
Вопрос по Управлению торговым предприятием для Украины. Как туда прикрутить Битрикс?
И как сделать, чтобы в выборку попадал не весь товар -  признак "публиковать/не публиковать"
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #612 : 18.06.2012, 13:46:35 »
Что нужно прописать, чтобы при выгрузке заказов из VirtueMart в 1C прописывался адрес доставки

В информацию о контрагенте вставить не вышло (за образец я взял пример заказа с Битрикса) — 1с мои элементы проигнорировал, так что пока запихнул в <Комментарий>. Кроме адреса туда еще много всего понакручено, но в принципе понятно.

[spoiler title=createzakaz.php]

Изменения старался выделять и комментировать
Код
<?php
//***********************************************************************
// Назначение: Передача товаров из 1С в virtuemart
// Модуль: createzakaz.php - Создание списка заказов
// Автор оригинала: Дуденков М.В. (email: mihail@termservis.ru)
// Помогали разрабатывать: Alexandr Datsiuk
// Павел Михнев
//                          CALEORT
// Авторские права: использовать, а также распространять данный скрипт
//                  разрешается только с разрешением автора скрипта
//***********************************************************************

if ( !defined( 'VM_1CEXPORT' ) )
{
echo "<h1>Несанкционированный доступ</h1>Ваш IP уже отправлен администратору.";
die();
}
$timechange = time ();

$no_spaces = '<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация ВерсияСхемы="2.04" ДатаФормирования="' . date ( 'Y-m-d', $timechange ). 'T' . date ( 'H:i:s', $timechange ). '"></КоммерческаяИнформация>';

$xml = new SimpleXMLElement ( $no_spaces );

$db->setQuery ( "SELECT * FROM `#__".DBBASE."_orders` WHERE `order_status` LIKE 'P'" );
$list = $db->loadObjectList ();

if (! empty ( $list ))
{
foreach ( $list as $zakazy )
{
$doc = $xml->addChild ( "Документ" );

if (VM_VERVM == '2')
{
$zakazy->order_id = $zakazy->virtuemart_order_id;
$zakazy->user_id = $zakazy->virtuemart_user_id;
$zakazy->vendor_id = $zakazy->virtuemart_vendor_id;
//$zakazy->userinfo_id = $zakazy->virtuemart_userinfo_id;
$zakazy->order_shipping = $zakazy->order_shipment;
$zakazy->ship_method_id = $zakazy->virtuemart_shipmentmethod_id;
$zakazy->mdate = $zakazy->modified_on;
$customer_notes = ''; // Переменная для комментариев заказчика
$dattime = explode(" ", $zakazy->mdate);
$date = $dattime[0];
$time = $dattime[1];

$sql = "SELECT currency_code_3 FROM #__virtuemart_currencies where `virtuemart_currency_id` = '" . $zakazy->order_currency . "'";
$db->setQuery ( $sql );
$val = $db->loadResult ();

}
else
{
$date = date ( 'Y-m-d', $zakazy->mdate );
$time = date ( 'H:i:s', $zakazy->mdate );
$val = ( string ) $zakazy->order_currency;
}
# Валюта документа
switch ($val)
{
case 'руб' :
$val = 'RUB';
break;
case 'RUB' :
$val = 'руб';
break;
case 'EUR' :
$val = 'Евр';
break;
}

$doc->addChild ( "Ид", $zakazy->order_id );
$doc->addChild ( "Номер", $zakazy->order_id );
$doc->addChild ( "Дата", $date );
$doc->addChild ( "ХозОперация", "Заказ товара" );
$doc->addChild ( "Роль", "Продавец" );
$doc->addChild ( "Валюта", $val );
$doc->addChild ( "Курс", $zakazy->order_tax );
$doc->addChild ( "Сумма", $zakazy->order_subtotal );
$doc->addChild ( "Время", $time );

// Контрагенты
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Получаем из базы сразу оба адреса
$db->setQuery ( "SELECT *
FROM `#__".$dba['order_user_info_db']."`
WHERE `".$dba['pristavka']."order_id` =" . $zakazy->order_id . "
AND `".$dba['pristavka']."user_id`=" . $zakazy->user_id ."
ORDER BY `address_type` ASC" );
$clientList = $db->loadObjectList ();
$client = $clientList[0]; // Первым будет "Адрес регистрации"
///////////////////////////////////////////////////////////////////////////////////////////////////////

if (! empty ( $client ) && (VM_CLIENT == 1))
{
$FIO = $client->last_name . " " . $client->first_name . " " . $client->middle_name;

$k1 = $doc->addChild ( 'Контрагенты' );
$k1_1 = $k1->addChild ( 'Контрагент' );

if (!empty($client->company) and VM_VERVM == '1')
{
$client->company = str_replace("\\", "", $client->company);
$k1_2 = $k1_1->addChild ( "Наименование", $client->company );
$k1_2 = $k1_1->addChild ( "Роль", "Покупатель" );
if (VM_USER_SHOP == 'yes')
{
if ($client->vm_fullname == NULL)
{
$k1_2 = $k1_1->addChild ( "ОфициальноеНаименование", $client->company );
}
else
{
$k1_2 = $k1_1->addChild ( "ОфициальноеНаименование", $client->vm_fullname );
}
}
else
{
$k1_2 = $k1_1->addChild ( "ОфициальноеНаименование", $client->company );
}
}
else
{
$k1_2 = $k1_1->addChild ( "Наименование", $FIO );
$k1_2 = $k1_1->addChild ( "Роль", "Покупатель" );
$k1_2 = $k1_1->addChild ( "ПолноеНаименование", $client->title . " " . $FIO );
$k1_2 = $k1_1->addChild ( "Имя", $client->first_name );
$k1_2 = $k1_1->addChild ( "Фамилия", $client->last_name );
$k1_2 = $k1_1->addChild ( "Отчество", $client->middle_name );
}

$k1_2 = $k1_1->addChild ( "Комментарий", "Контрагент с сайта ".$FIO );

}
else
{
$k1 = $doc->addChild ( 'Контрагенты' );
$k1_1 = $k1->addChild ( 'Контрагент' );
$k1_2 = $k1_1->addChild ( "Наименование", "Физ лицо" );
$k1_2 = $k1_1->addChild ( "Роль", "Покупатель" );
$k1_2 = $k1_1->addChild ( "ПолноеНаименование", "Физ лицо" );
$k1_2 = $k1_1->addChild ( "Имя", "лицо" );
$k1_2 = $k1_1->addChild ( "Фамилия", "Физ" );
}


///////////////////////////////////////////////////////////////////////////////////////////////////
// Это в 1с прошло без ошибок, но и без видимого эффекта, так что пока спрятал, может позже будет время разобраться
/*if (isset($client->city)) {
$k1_2 = $k1_1->addChild ( "АдресРегистрации" );
if (isset($client->zip)) {
$k1_3 = $k1_2->addChild ( "АдресноеПоле" );
$k1_4 = $k1_3->addChild ( "Тип", "Индекс" );
$k1_4 = $k1_3->addChild ( "Значение", $client->zip );
}
if (isset($client->city)) {
$k1_3 = $k1_2->addChild ( "АдресноеПоле" );
$k1_4 = $k1_3->addChild ( "Тип", "Город" );
$k1_4 = $k1_3->addChild ( "Значение", $client->city );
}
if (isset($client->address_1)) {
$k1_3 = $k1_2->addChild ( "АдресноеПоле" );
$k1_4 = $k1_3->addChild ( "Тип", "Адрес" );
$k1_4 = $k1_3->addChild ( "Значение", $client->address_1 );
}
if (isset($client->address_2)) {
$k1_3 = $k1_2->addChild ( "АдресноеПоле" );
$k1_4 = $k1_3->addChild ( "Тип", "Дополнительный адрес" );
$k1_4 = $k1_3->addChild ( "Значение", $client->address_2 );
}
if (isset($client->phone_1)) {
$k1_3 = $k1_2->addChild ( "АдресноеПоле" );
$k1_4 = $k1_3->addChild ( "Тип", "Телефон" );
$k1_4 = $k1_3->addChild ( "Значение", $client->phone_1 );
}
if (isset($client->phone_2)) {
$k1_3 = $k1_2->addChild ( "АдресноеПоле" );
$k1_4 = $k1_3->addChild ( "Тип", "Дополнительный телефон" );
$k1_4 = $k1_3->addChild ( "Значение", $client->phone_1 );
}
}
$log->addEntry ( array ('comment' => 'Контрагенты = '.$k1->asXML () ) );*/
///////////////////////////////////////////////////////////////////////////////////////////////////

if (VM_VERVM_S == 'F')
{
$product_db = $dba['product_ln_db'];
}
else
{
$product_db = $dba['product_db'];
}

$db->setQuery ( "SELECT
it.".$dba['pristavka']."product_id as product_id,
it.product_item_price as product_item_price,
it.product_quantity as product_quantity,
it.product_final_price as product_final_price,
it.product_attribute as product_attribute,
it.order_item_sku as order_item_sku,
pd.product_name as product_name,
ps.c_id as c_id
FROM #__".$dba['order_item_db']." AS it
LEFT OUTER JOIN #__".$product_db." AS pd
ON it.".$dba['pristavka']."product_id = pd.".$dba['pristavka']."product_id
LEFT OUTER JOIN #__".$dba['pristavka']."product_to_1c AS ps
ON it.".$dba['pristavka']."product_id = ps.product_id
WHERE it.".$dba['pristavka']."order_id =" . $zakazy->order_id );

$list_z = $db->loadObjectList (); // Массив заказанных товаров

/////////////////////////////////////////////////////////////////////////////////
// Выносим <Товары> из цикла
$t = $doc->addChild ( 'Товары' );
/////////////////////////////////////////////////////////////////////////////////


$customer_notes .= '

--------------- Атрибуты товаров --------------
';
foreach ( $list_z as $razbor_zakaza_t ) // Разбор каждого заказанного товара
{

//////////////////////////////////////////////////////////////////////////////////////////////////////
// Указываем в комментарии выбранные атрибуты товара
if ($customer_notes_array = json_decode($razbor_zakaza_t->product_attribute,true))
{
foreach ($customer_notes_array as $product_attribute)
{
$product_attribute = str_replace('<span class="costumTitle">', '
 '.$razbor_zakaza_t->product_name.' (арт. '.$razbor_zakaza_t->order_item_sku.') ', $product_attribute);
$product_attribute = str_replace('</span><span class="costumValue" >', ': ', $product_attribute);
$product_attribute = str_replace('</span>', '', $product_attribute);
$customer_notes .= $product_attribute;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////

//$t1 = $doc->addChild ( 'Товары' );

$t1_1 = $t->addChild ( 'Товар' );

//$t1_2 = $t1_1->addChild ( "Ид", $razbor_zakaza_t->product_id );
$t1_2 = $t1_1->addChild ( "Ид", $razbor_zakaza_t->c_id ); // Ид товара присваеваем тот, что из 1с

$t1_2 = $t1_1->addChild ( "Наименование", $razbor_zakaza_t->product_name );
if (VM_NDS == 'yes')
{
$t1_2 = $t1_1->addChild ( "ЦенаЗаЕдиницу", $razbor_zakaza_t->product_final_price );
$summ = $razbor_zakaza_t->product_final_price * $razbor_zakaza_t->product_quantity;
}
else
{
$t1_2 = $t1_1->addChild ( "ЦенаЗаЕдиницу", $razbor_zakaza_t->product_item_price );
$summ = $razbor_zakaza_t->product_item_price * $razbor_zakaza_t->product_quantity;
}
$t1_2 = $t1_1->addChild ( "Количество", $razbor_zakaza_t->product_quantity );
$t1_2 = $t1_1->addChild ( "Сумма", $summ );
$t1_2 = $t1_1->addChild ( "ЗначенияРеквизитов" );
$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
$t1_4 = $t1_3->addChild ( "Наименование", "ВидНоменклатуры" );
$t1_4 = $t1_3->addChild ( "Значение", "Товар" );

$t1_2 = $t1_1->addChild ( "ЗначенияРеквизитов" );
$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
$t1_4 = $t1_3->addChild ( "Наименование", "ТипНоменклатуры" );
$t1_4 = $t1_3->addChild ( "Значение", "Товар" );
} // END of foreach ( $list_z as $razbor_zakaza_t )

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// И адрес доставки
foreach ($clientList as $c) {
if ($c->address_type == 'BT') {
$customer_notes .= '


--------------- Адрес Заказчика --------------

'.$c->zip.' '.$c->city.'
'.$c->address_1.'

'.$c->phone_1.'
'.$c->phone_2.'
'.$c->email;
}
elseif ($c->address_type == 'ST') {
$customer_notes .= '


--------------- Адрес Доставки --------------

'.$c->last_name.' '.$c->first_name.' '.$c->middle_name.'
'.$c->zip.' '.$c->city.'
'.$c->address_1.'

'.$c->phone_1.'
'.$c->phone_2.'
'.$c->email;
}
} // END of foreach ($clientList as $c)
/////////////////////////////////////////////////////////////////////////////////////////////////////////

if(!empty($zakazy->order_shipping ) or $zakazy->order_shipping <> '0')
{
if (VM_VERVM == '2')
{
/*$db->setQuery ( "SELECT shipment_name, shipment_cost
FROM #__virtuemart_shipment_plg_weight_countries
WHERE order_number =" . $zakazy->order_number );
$shipment = $db->loadObject ();*/

$sql = "SELECT * FROM #__virtuemart_shipment_plg_weight_countries where `order_number` = '".$zakazy->order_number."'";
$db->setQuery ( $sql );
$shipment = $db->loadObject ();
$name = array();
$name[2] = $shipment->shipment_name;
$name[3] = $shipment->shipment_cost;
$name[2] = str_replace('<span class="vmshipment_name">', '', $name[2]);
$name[2] = str_replace('</span>', '', $name[2]);
}
else
{
$name = explode('|', $zakazy->ship_method_id );
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Вставляем доставку в заказ только если она платная, иначе в заказе 1с она проходит по нулевой цене и не дает провести.
if ($name[3] != '' && $name[3] != 0)
{
//////////////////////////////////////////////////////////////////////////////////////////////////////
$t1 = $doc->addChild ( 'Товары' );
$t1_1 = $t1->addChild ( 'Товар' );
$t1_2 = $t1_1->addChild ( "Ид", '33290518-aeac-11e1-aabe-0016d4d104e7' ); // Ид номенклатуры доставки в 1с //
$t1_2 = $t1_1->addChild ( "Наименование", $name[2] );
if (VM_NDS == 'yes')
{
$t1_2 = $t1_1->addChild ( "ЦенаЗаЕдиницу", $name[3] );
$summ = $name[3];
}
else
{
$t1_2 = $t1_1->addChild ( "ЦенаЗаЕдиницу", $zakazy->order_shipping );
$summ = $zakazy->order_shipping;
}
$t1_2 = $t1_1->addChild ( "Количество", '1' );
$t1_2 = $t1_1->addChild ( "Сумма", $summ );
$t1_2 = $t1_1->addChild ( "БазоваяЕдиница", 'чел.ч' ); // ч/час не по регламенту.
$t1_2 = $t1_1->addChild ( "СтавкиНалогов" );
$t1_3 = $t1_2->addChild ( "СтавкаНалога" );
$t1_4 = $t1_3->addChild ( "Ставка", VM_NDS_SHIP );
$t1_2 = $t1_1->addChild ( "ЗначенияРеквизитов" );
$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
$t1_4 = $t1_3->addChild ( "Наименование", "ВидНоменклатуры" );
$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );

$t1_2 = $t1_1->addChild ( "ЗначенияРеквизитов" );
$t1_3 = $t1_2->addChild ( "ЗначениеРеквизита" );
$t1_4 = $t1_3->addChild ( "Наименование", "ТипНоменклатуры" );
$t1_4 = $t1_3->addChild ( "Значение", "Услуга" );
////////////////////////////////////////////////////////////////////////////////////////////////////
}
////////////////////////////////////////////////////////////////////////////////////////////////////
}
//////////////////////////////////////////////////////////////////////////////////////////
// Вставляем комментарии заказчика
if (isset($zakazy->customer_note) && $zakazy->customer_note != '') {
$customer_notes .= '



--------------- Комментарий от заказчика --------------

'.(string)$zakazy->customer_note;
}

// Создаем элемент <Комментарий>
if ($customer_notes != '') {
$doc->addChild ( "Комментарий", $customer_notes );
}
else {
$log->addEntry ( array ('comment' => "Этап 2) no \$customer_notes" ) );
}
//////////////////////////////////////////////////////////////////////////////////////////
}
}

if (VM_CODING == 'UTF-8')
{
//header ( "Content-type: text/xml; charset=utf-8" );
print iconv ( "utf-8", "windows-1251", $xml->asXML () );
}
else
{
print $xml->asXML ();
}

$log->addEntry ( array ('comment' => 'Этап 2) Успешно'.$xml->asXML () ) );
// unlink ( JPATH_BASE_1C .DS.'login.tmp' );  Комментируем и переносим в vmshop_1c.php, а то локально 1с выдает ошибку

?>
[/spoiler]

Догадываюсь, что получилось кондово, заранее благодарен за замечания. Если будет время, может сделаю более элегантно, а пока главное — чтоб работало)
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #613 : 18.06.2012, 13:49:51 »
Так в итоге что получилось?
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #614 : 18.06.2012, 13:55:08 »
В итоге в структуру заказа добавляется комментарий типа:
[spoiler title=<Комментарий>]
Код
<Комментарий> --------------- Атрибуты товаров --------------

Боди запашное (арт. 1266) Цвет: бело-синий


--------------- Адрес Заказчика --------------

440563 Пенза
Красная площадь, д.1

+74953476096

ant.senin@gmail.com


--------------- Адрес Доставки --------------

Ф И
440154 Ставрополь
Канарская, 17

+778562395729





--------------- Комментарий от заказчика --------------

Всякий разный отзыв</Комментарий>
[/spoiler]

И его видно в 1с, в окне заказа на вкладке "Комментарий": http://imm.io/t7D3
[spoiler title=скриншот][/spoiler]
« Последнее редактирование: 18.06.2012, 14:26:28 от sftacc »
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #615 : 18.06.2012, 13:59:33 »
ну а как быть с тем, что в 1С комментарий строковый?
Имеется в виду одна строка!
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #616 : 18.06.2012, 14:02:22 »
может все таки запихнуть его контрагенту и тогда адрес будет доступен на вкладке Дополнително - Адрес доставки:

а в комментариях оставить только комментарий к заказу
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #617 : 18.06.2012, 14:04:41 »
Да не вопрос... покажи, в какие элементы должен быть завернут адрес, а то мой вариант не прокатил.

[spoiler title=пока так:]

[/spoiler]

« Последнее редактирование: 18.06.2012, 14:23:16 от sftacc »
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #618 : 18.06.2012, 14:08:50 »
Это касается 10.3
Посмотрю, как выглядит ссылка на этот элемент
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #619 : 18.06.2012, 14:11:31 »
У меня 11, но думаю, коллективный разум, если что, поможет довести до ума.
*

sirius_128

  • Новичок
  • 3
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #620 : 20.06.2012, 17:33:30 »
Доброго времени суток!! Есть такая проблема:
При выгрузке полное описание товара дублируется в описание изображения этого же товара (Разбирал файлы выгрузки - там вообще не фигурирует понятие описания изображения)!
При этом  выгрузка происходит без ошибок - в логе тоже все чисто!
1С УТ для Украины редакция 2.3 VirtueMart 2.1Beta (пробовал предыдущие версии скрипта и предыдущие версии VM119)  Проблема повторяется!
Помогите пожайлуста люди добрые)))
*

fenixnow

  • Захожу иногда
  • 89
  • 2 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #621 : 20.06.2012, 17:36:28 »
читай внимательно вроде я писал что нужно убрать пару страниц назад
*

sirius_128

  • Новичок
  • 3
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #622 : 20.06.2012, 17:52:21 »
Спасибо огромное! Еще раз чтобы не искать:
файл product.php
строчки должны быть
//$ins->file_description = (string)$data['description'];
*

neGODnic

  • Захожу иногда
  • 140
  • 4 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #623 : 29.06.2012, 16:09:19 »
Выгрузка работает нормально, но при этом у покупателей и у способов оплаты обнуляется группа
Из-за этого когда покупатель оформляет заказ, стадия выбора "способа оплаты" пропускается. И покупатель не может оформить заказ.
Приходится вручную заходить в каждого покупателя и способ оплаты и пересохранять их.

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

jetonz

  • Захожу иногда
  • 154
  • 9 / 3
  • Помог ответ? Не ленись, ставь [+] !
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #624 : 30.06.2012, 12:01:45 »
 Народ, кто поставил эту сборку и у кого ПОЛНОСТЬЮ ВСЕ работает? Подскажите какую версию 1С брали, какую конфигурацию и версию Virtuemart/Jooomla. Нужно настроить взаимодействие между сайтом и 1С. Начинаю с нуля, потому подходит любой вариант)
 Пробовал VirtueMart 2.0.0 и 1С 8.2 (Управление торговлей для Украины). Результаты огорчили((
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #625 : 30.06.2012, 12:18:54 »
VirtueMart 2.0.6 Final, 1c 8.2
Работает все, включая модификации, которые сделал для себя... Характеристиками не пользуюсь — бухгалтер решила с ними не заморачиваться.
Проверяй настройки, с первого раза еще, по-моему, ни у кого не заработало ;)
*

jetonz

  • Захожу иногда
  • 154
  • 9 / 3
  • Помог ответ? Не ленись, ставь [+] !
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #626 : 30.06.2012, 12:28:56 »
У меня такая интересная штука происходит, когда нажимаешь на просмотр подробной информации, открывается пустая страница с название товара, и больше ничего
« Последнее редактирование: 30.06.2012, 12:36:29 от jetonz »
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #627 : 30.06.2012, 12:47:47 »
Ничего не открылось.
Ты б шаблон дефолтный включил и проверил — скорее всего дело именно в нем.
*

jetonz

  • Захожу иногда
  • 154
  • 9 / 3
  • Помог ответ? Не ленись, ставь [+] !
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #628 : 30.06.2012, 13:04:22 »
не-не, я на шаблолн тож вначале грешил, но с стандартным тоже самое. Сейчас пытаюсь запихгуть VirtueMart 2.0.6. Посмотрю что с этого выйдет
*

sftacc

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
Re: 1C УТ 8.x <-> VirtueMart по протоколу CommerceML
« Ответ #629 : 30.06.2012, 13:07:07 »
В стандартном шаблоне должна быть как минимум шапка и меню навигации. Проверяй, что менял.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как импортировать файл XML в Joomla VirtueMart?

Автор Кот Смюлан

Ответов: 2
Просмотров: 5183
Последний ответ 14.07.2016, 18:40:24
от Berzerker
Обсуждение бесплатного компонента импорта-экспорта товаров VirtueMart "CSV Improved 1.9"

Автор danklassik

Ответов: 14
Просмотров: 17295
Последний ответ 18.02.2016, 10:21:33
от Storm
Перенос товаров с сайта на сайт (оба на joomla+virtuemart)

Автор fedorkit

Ответов: 8
Просмотров: 14309
Последний ответ 31.01.2016, 22:09:30
от Messir
VirtueMart 1.1.3 stable - выгрузка товаров в яндекс.маркет

Автор zufar

Ответов: 690
Просмотров: 172750
Последний ответ 05.02.2015, 16:39:22
от newjey
Описание полей таблиц в базе данных VirtueMart

Автор EmDmAl

Ответов: 39
Просмотров: 39803
Последний ответ 30.01.2015, 16:15:38
от nick71