Jump to content
Kirillove

[Поддержка] Модуль обмена для opencart v2.3 с учетной системой по стандарту CommerceML

Recommended Posts

Видимо я немного неправильно про доставку выразился: разумеется никакой карточки товара для нее не было, все шло по стандартному сценарию opencarta, доставка уходила в файл обмена уже на этапе формирования этого самого файла. Решение строго частное, для широкой массы оно не подойдет, тк сильно допиливали сторону 1С чтобы адекватно работало.

 

Все что про модуль написано - в целом верно. Проблема в том, что альтернатив все равно нет :) У того же битрикса те же самые проблемы, у WP WOO вообще на пару порядков хуже дела обстоят, другие платформы я не знаю, но думаю что принципиально лучше дело нигде не обстоит.  Другие готовые плагины для OS тоже не блещут - везде куча косяков и постоянная альфа, только еще за деньги (причем немалые в ракурсе того, что это готовый модуль) и разработчику работать с ними сложнее чем с модулем Виталия.

 

Модуль на данном этапе не для конечника, а для опытного разработчика, который готов долго и упорно пилить индивидуальные решения. Разумеется цена внедрений высока и далеко не каждый владелец готов их оплачивать :)

Edited by indaled

Share this post


Link to post
Share on other sites

Помогите разобрать кусок кода не пойму как формируется картинка мне ее надо записать в таблицу option_value в колонку image.

 

/admin/model/extension/exchange1c.php

Строка 6145

if ($offer->ХарактеристикиТовара) {

                    $this->statStart('parse_options');
                    $this->log("Читаем опции в предложении...");

                    // Читаем опции из файла в том режиме в котором они определены в настройках.
                    $data['options'] = $this->parseProductOptions($offer->ХарактеристикиТовара);

                    // Картинка для характеристики, берется только первая
                    if ($offer->Картинка && $this->config->get('exchange1c_product_images_no_import') != 1) {

                        $feature_image = (string)$offer->Картинка;

                    } else {
                        $feature_image = '';
                }

                    // Сопоставим option_id и option_value_id значеням
                    $this->statStop('parse_options');
                    if ($this->ERROR) return false;

                }

            }

Кусок файла Offers.xml

 

<Предложение>

<Ид>892c7eb7-8403-11e8-ab2e-889ffaebcaab#d46bce5b-88c1-11e8-8691-889ffaebcaab</Ид>

<Штрихкод>1518487486459</Штрихкод>

<Наименование>Магнит квадратный (Большая)</Наименование>

<БазоваяЕдиница МеждународноеСокращение="шт" НаименованиеПолное="Штука" Код="796 ">шт</БазоваяЕдиница>
-<ХарактеристикиТовара>
-<ХарактеристикаТовара>

<Наименование>Упаковка</Наименование>

<Значение>Большая</Значение>

<Картинка>import_files/d4/d46bce5b-88c1-11e8-8691-889ffaebcaab_c7983cb5-88cd-11e8-8691-889ffaebcaab.jpeg</Картинка>

</ХарактеристикаТовара>

</ХарактеристикиТовара>
-<Цены>
-<Цена>

<Представление>150 руб. за шт</Представление>

<ИдТипаЦены>f9796f8a-7f47-11e8-868e-889ffaebcaab</ИдТипаЦены>

<ЦенаЗаЕдиницу>150.00</ЦенаЗаЕдиницу>

<Валюта>руб</Валюта>

<Единица>шт</Единица>

<Коэффициент>1</Коэффициент>

</Цена>

</Цены>

<Количество>1.00</Количество>

</Предложение>

 

Share this post


Link to post
Share on other sites

Вопрос по картинке закрыт все сделал всем спасибо.

Share this post


Link to post
Share on other sites

Для каждого товара и при каждом обновлении добавляет новый unit_id в таблицу unit_to_1c, хотя они все одинаковые у товаров. Кто нибудь сталкивался с таким?

Share this post


Link to post
Share on other sites
20 часов назад, indaled сказал:

Модуль на данном этапе не для конечника, а для опытного разработчика, который готов долго и упорно пилить индивидуальные решения. Разумеется цена внедрений высока и далеко не каждый владелец готов их оплачивать :)

Не знаю, любите ли вы файловые менеджеры, но просто хочется привести в качестве успешного долгоиграющего фриварного проекта с большим участием общественности Far Manager. Работает как часы, периодически обновляется, наполняясь новыми функциями, и дальше работает как часы.

 

Автор же данного модуля, похоже, слышит только себя. Ему не один раз уже чуть ли не на блюдечке приносят готовые правки выявленных у него багов, а он продолжает упорно перетаскивать их в свои новые беты дальше и дальше. Очень странный человек. Либо это такой своеобразный способ привлечь потенциальных клиентов и подсадить их на вечный донат. "Ой, какой классный модуль, как у него много всего! Но у меня почему-то не работает, а надо срочно - поможите? Я заплачу! ... ... Конечно, помогу!" Тогда это не очень красиво, мягко так скажем. И тогда сразу думаешь, а стоит ли как-то помогать в разработке, если человек в этом не только не нуждается, а даже чутка процессу вредит?

Edited by IronMann

Share this post


Link to post
Share on other sites
3 часа назад, rdpv сказал:

Вопрос по картинке закрыт все сделал всем спасибо.

Поделились бы с общественностью, если не жалко, конечно.

Share this post


Link to post
Share on other sites

Не жалко) обкатаю все подводные камни и поделюсь пока есть проблема с подхватом при полной выгрузке, при выгрузке изменений работает на ура.

Share this post


Link to post
Share on other sites

Еще проблема с картинками. При выгрузке на диск, они имеют нормальный размер. Но на сервере уже почему то весят нереально много.

Edited by megrel

Share this post


Link to post
Share on other sites

Если актуально с картинками для характеристик в function setProductOptionValue

вставляем

$this->query("UPDATE `" . DB_PREFIX . "option_value` SET `image` = '" .(string)$data_value['image'] . "' WHERE `option_value_id` = " . (int)$option_value_id);
$this->log("Запись картинки  = " . (string)$data_value['image']);

 

и в function parseProductOptions

добавляем

строка 5838

$feature_image = '';

строка 5860

$feature_image .= ($feature_image) ? ', ' . $image : $image;

строка 5866

$options[$feature_name] = array(
                'value'        => $feature_value,
                'guid'        => '',
                'image'        => $image

строка 5880

$options[$feature_name] = array(
                'value'        => $feature_value,
                'guid'        => '',
                'image'        => $image

 если УТ 10.3 то так же допиливать приходится добавление картинки к характеристике по аналогии как для товара

 

 

2121212.PNG

Edited by rdpv

Share this post


Link to post
Share on other sites

Всем привет. Решил вопрос с доставкой, хотя и не полностью. Что конкретно и где уже правил точно не вспомню, но основные моменты расскажу.

Не полностью - это значит, что не проставляется дата доставки, а также адрес покупателя. Система УНФ 1с Фреш. В ней доставка выглядит так:

0.thumb.png.d79d4b7bf01e8db71542e6e6d7a792b8.png

При этом сумма заказа считается правильно.

 

В синхронизации со стороны 1с проставлено так:

Спойлер

Система управления сайтом: 1-C Битрикс

Статусы заказов и id(Код статуса) указывать как в OC. ID можно получить по аналогии ниже по тексту, только нужно смотреть "id=xx" в редактирование статусов заказов.

1.thumb.png.439316b8cec0971ef6d505debd0edd1a.png

 

Способы доставки указывать так. Т.е. в 'Служба доставки на сайте' указывается название модуля доставки. Посмотреть его можно в OC Дополнения->Дополнения Выбираем из выпадающего списка 'Доставка' и жмём редактировать любую из доставок. В адресной строке будет название.

Пример:  https://xxxxxxxxxxxxxxx.xx/admin/index.php?route=extension/shipping/pickup&token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Берёте название из 'route=extension/shipping/pickup'. Название доставки будет 'pickup'.

Код службы указываете из 1С.

2.thumb.png.8aac4139d3f704e0bf4ea8fd97080bf4.png

 

Ещё нудно будет в номенклатуре создать услугу "Доставка товара".

 

 

Далее по коду. У меня скачена и поставлена версия oc2.3-exchange1c_1.6.4.4b34.ocmod.

Там такое кол-во косяков... Короче модуль из коробки не заработает и править его вам придётся пару дней.

По поводу доставки. Нус начнём +)

 

Фаил admin/model/extension/exchange1c.php.

Первая правка кода :

Спойлер

	/**
	 * ver 12
	 * update 2018-04-08
	 * Выгружает заказы в торговую систему
	 */
	public function queryOrders() {

		$this->log("==== Выгрузка заказов ====",2);
		$this->log('model_sale_order->getOrder():', 2);

		$orders_export = $this->queryOrdersExport();

		// Валюта документа
		$currency = $this->config->get('exchange1c_order_currency') ? $this->config->get('exchange1c_order_currency') : 'руб.';
		$document = array();
		
		if(!empty($orders_export)) {
			$this->log("==== Найдены новые заказы к выгрузке ====",2);

			$document_counter = 0;

			$this->load->model('customer/customer_group');
			$this->load->model('sale/order');
			//$this->load->model('catalog/unit');

			foreach ($orders_export as $order_id => $order_status_id) {

				$order = $this->model_sale_order->getOrder($order_id);
				$this->log('model_sale_order->getOrder():', 2);
				$this->log($order, 2);

				$this->getCustomerInfo($order);

				$this->log("> Выгружается заказ #" . $order['order_id']);

				$order['date'] = date('Y-m-d', strtotime($order['date_added']));
				$order['time'] = date('H:i:s', strtotime($order['date_added']));
				$customer_group = $this->model_customer_customer_group->getCustomerGroup($order['customer_group_id']);

				// Шапка документа
				$document['Документ' . $document_counter] = array(
					 'Ид'          => $order['order_id']
					,'Номер'       => $order['order_id']
					,'Дата'        => $order['date']
					,'Время'       => $order['time']
					,'Валюта'      => $currency
					,'Курс'        => 1
					,'ХозОперация' => 'Заказ товара'
					,'Роль'        => 'Покупатель'
					,'Сумма'       => $order['total']
					,'Комментарий' => $order['comment']
					//,'Соглашение'  => $customer_group['name'] // the agreement
				);

				// Первая буква должна быть заглавной и убираем лишние пробелы сдева и справа
				// ТОЛЬКО ДЛЯ САЙТА РАБОТАЮЩЕГО НА КОДИРОВКЕ UTF-8
				$order['lastname'] = mb_convert_case(trim($order['lastname']), MB_CASE_TITLE, "UTF-8");
				$order['firstname'] = mb_convert_case(trim($order['firstname']), MB_CASE_TITLE, "UTF-8");
				if (isset($order['middlename']))
					$order['middlename'] = mb_convert_case(trim($order['middlename']), MB_CASE_TITLE, "UTF-8");
				else
					$order['middlename'] = '';

				// Собираем полное наименование покупателя, ФИО
				$order['username'] =  $order['lastname'] . ' ' . $order['firstname'] . ($order['middlename'] ? ' ' . $order['middlename'] : '');

				// ПОКУПАТЕЛЬ (КОНТРАГЕНТ)
				$document['Документ' . $document_counter]['Контрагенты']['Контрагент'] = $this->setCustomer($order);
				if ($this->ERROR) return false;

				// ТОВАРЫ ДОКУМЕНТА
				$products = $this->model_sale_order->getOrderProducts($order_id);

				$product_counter = 0;
				foreach ($products as $product) {
					$product_guid = $this->getGuidByProductId($product['product_id']);
					$document['Документ' . $document_counter]['Товары']['Товар' . $product_counter] = array(
						'Ид'             => $product_guid,
						'Наименование'   => $product['name'],
						'БазоваяЕдиница' => array(
							'ATTRIBUTES' => array( 
								'Код' => '796',
								'НаименованиеПолное' => 'Штука',
								'МеждународноеСокращение' => 'PCE'
							),
							'CODE' => 'шт'
						),
						'ЦенаЗаЕдиницу'  => $product['price'],
						'Количество'     => $product['quantity'],
						'Сумма'          => $product['total'],
						'Скидки'         => array(
							'Скидка' => array(
								'УчтеноВСумме' => 'false',
								'Сумма' => 0
							)
						),
						'ЗначенияРеквизитов' => array(
							'ЗначениеРеквизита' => array(
								'Наименование' => 'ТипНоменклатуры',
								'Значение' => 'Товар'
							)
						),
						'ЗначенияРеквизитов' => array(
							'ЗначениеРеквизита' => array(
								'Наименование' => 'ВидНоменклатуры',
								'Значение' => 'Товар'
							)
						),
						
					);
					$current_product = &$document['Документ' . $document_counter]['Товары']['Товар' . $product_counter];
					// Резервирование товаров
					if ($this->config->get('exchange1c_order_reserve_product') == 1) {
						$current_product['Резерв'] = $product['quantity'];
					}

					// Характеристики
					$feature_guid = $this->getFeatureGuid($product['order_product_id'], $order_id);
					if ($feature_guid) {
						$current_product['Ид'] .= "#" . $feature_guid;
					}

					$product_counter++;
				}
				
				// Доставка в комментарий
				$query = $this->query("SELECT `title`, `value` FROM `" . DB_PREFIX . "order_total` WHERE `order_id` = " . $order_id . " AND `code` = 'shipping'");
				if($query->num_rows) {
					$document['Документ' . $document_counter]['Товары']['Товар' . $product_counter] = array(
						'Ид'             => 'ORDER_DELIVERY',
						'Наименование'   => 'Доставка заказа',
						'БазоваяЕдиница' => array(
							'ATTRIBUTES' => array( 
								'Код' => '796',
								'НаименованиеПолное' => 'Штука',
								'МеждународноеСокращение' => 'PCE'
							),
							'CODE' => 'шт'
						),
						'ЦенаЗаЕдиницу'  => $query->row['value'],
						'Количество'     => 1,
						'Сумма'          => $query->row['value'],
						'ЗначенияРеквизитов' => array(
							'ЗначениеРеквизита' => array(
								'Наименование' => 'ТипНоменклатуры',
								'Значение' => 'Услуга'
							)
						),
						'ЗначенияРеквизитов' => array(
							'ЗначениеРеквизита' => array(
								'Наименование' => 'ВидНоменклатуры',
								'Значение' => 'Услуга'
							)
						),
					);
					$document['Документ' . $document_counter]['Комментарий'] .= "Доставка: " . $query->row['title'] . ". Сумма доставки: " . $query->row['value'] . "\n";
				}
				
				// Доставка в комментарий
				
				// РЕКВИЗИТЫ ДОКУМЕНТА
				$requisites = array();
				$requisites['Метод оплаты'] = $order['payment_method'];
				
				$shipping_code = explode('.', $order['shipping_code']);
				$requisites['Способ доставки'] = $shipping_code[1];
				
				$requisites['Заказ оплачен'] = 'false';
				
				$requisites['Доставка разрешена'] = 'true';
				
				$requisites['Дата разрешения доставки'] = '' . $order['date'] . ' ' . $order['time'] . '';
				
				$requisites['Финальный статус'] = 'false';
				
				
				$document['Документ' . $document_counter]['ЗначенияРеквизитов'] = $this->setDocumentRequisites($order, $document, $requisites);
				if ($this->ERROR) return false;				
				// 
				
				//$document['Документ' . $document_counter]['Контрагенты']['Контрагент'] = $this->setCustomer($order);

				$document_counter++;

			}  // foreach ($query->rows as $orders_data)

		} // if (count($orders_export))
		//$this->log($document, 2);
		// Формируем заголовок
		$root = '<?xml version="1.0" encoding="utf-8"?><КоммерческаяИнформация ВерсияСхемы="2.07" ДатаФормирования="' . date('Y-m-d', time()) . '" />';

		$root_xml = new SimpleXMLElement($root);
		$xml = $this->array_to_xml($document, $root_xml);

		// Проверка на запись файлов в кэш
		$cache = DIR_CACHE . 'exchange1c/';
		if (@is_writable($cache)) {
			// запись заказа в файл
			$f_order = @fopen($cache . 'orders.xml', 'w');
			if (!$f_order) {
				$this->log("Нет доступа для записи в папку: " . $cache);
			} else {
				fwrite($f_order, $xml->asXML());
				fclose($f_order);
			}
		} else {
			$this->log("Папка " . $cache . " не доступна для записи, файл заказов не может быть сохранен!",1);
		}

		return $xml->asXML();

	} // queryOrders()

 

И тут же ещё 1-но изменение, т.к. затрагивается функция $this->setDocumentRequisites()

Спойлер

	/**
	 * ver 2
	 * update 2017-06-03
	 * Формирует реквизиты документа
	 */
	private function setDocumentRequisites($order, $document, $dop = array()) {

		$requisites = array();
		// Счетчик
		$counter = 0;

		$requisites['Дата отгрузки'] 				= $order['date'];
		$requisites['Статус заказа'] 				= $this->getOrderStatusName($order['order_status_id']);
		$requisites['Вид цен'] 						= $this->getPriceTypeName($order['customer_group_id']);
		$requisites['Контрагент'] 					= $order['username'];
//		$requisites['Склад'] 						= $this->getWarehouseName($order['warehouse_id']);
//		$requisites['Организация'] 					= 'Наша фирма';
//		$requisites['Подразделение'] 				= 'Интернет-магазин';
//		$requisites['Сумма включает НДС'] 			= 'true';
//		$requisites['Договор контрагента'] 			= 'Основной договор';
//		$requisites['Метод оплаты'] 				= 'Заказ по телефону';

		// Для 1С:Розница
//		$requisites['ТочкаСамовывоза'] 				= 'Название магазина';
//		$requisites['ВидЦенНаименование'] 			= 'Розничная';
//		$requisites['СуммаВключаетНДС'] 			= 'true';
//		$requisites['НаименованиеСкидки'] 			= 'Скидка 5%';
//		$requisites['ПроцентСкидки']				= 5;
//		$requisites['СуммаСкидки']					= 1000;
//		$requisites['СкладНаименование']			= 'Основной склад';
//		$requisites['ПодразделениеНаименование']	= 'Основное подразделение';
//		$requisites['Склад']						= 'Основной склад'

		// Для УНФ XML 2.08
//		$requisites['ВидЦен'] 						= 'Розничная';
//		$requisites['СкладДляПодстановкиВЗаказы'] 	= 'Склад основной';

		
		// Добавлено мной!!!


		$data = array();
		foreach ($requisites as $name => $value) {

			// Пропускаем пустые значения
			if (!$value) continue;

			$data['ЗначениеРеквизита'.$counter]	= array(
				'Наименование'		=> $name,
				'Значение'			=> $value
			);

			$counter ++;

		} // foreach
		
		if(!empty($dop)){
			foreach ($dop as $name => $value) {

				// Пропускаем пустые значения
				if (!$value) continue;

				$data['ЗначениеРеквизита'.$counter]	= array(
					'Наименование'		=> $name,
					'Значение'			=> $value
				);

				$counter ++;

			} // foreach			
		}

		return $data;

	} // setDocumentRequisites()

 

И ещё одно изменение, данный код вызывается самым последним запросом с 1С. И там лезла ошибка 2101 и после "return false;". Ошибка самого модуля OC. Чо это я хз. Разбираться стало лень, ибо просто её закоментировав всё норм работает.

Спойлер

	/**
	 * ****************************** ФУНКЦИИ ДЛЯ ЗАГРУЗКИ ЗАКАЗОВ ******************************
	 */

	/**
	 * ver 6
	 * update 2018-03-10
	 * Меняет статусы у новых заказов заказов
	 *
	 * @param	int		exchange_status
	 * @return	bool
	 */
	public function queryOrdersChangeStatus($orders) {
		
		// Если статус новый пустой, тогда не меняем, чтобы не породить ошибку
		$new_status = $this->config->get('exchange1c_order_status_exported');
		if (!$new_status) {
			//$this->errorLog(2101, $new_status);	
			$this->Log("Я закоментировал после '$this->errorLog(2101, $new_status);' строку '//return false;'", $new_status);
			//return false;
		}

		// Уведомление при смене статуса
		$notify = 0;

		if ($orders) {

			$this->NOW = date('Y-m-d H:i:s');

			foreach ($orders as $order_id => $order_status_id) {

				// Пропускаем те у кого статус не равен "Статус для выгрузки"
				if ($order_status_id != $this->config->get('exchange1c_order_status_export')) {
					$this->log("> Cтатус заказа #" . $order_id . " не менялся.", 2);
					continue;
				}

				// Меняем статус
				$query = $this->query("UPDATE `" . DB_PREFIX . "order` SET `order_status_id` = " . (int)$new_status . " WHERE `order_id` = " . (int)$order_id);
				$this->log("> Изменен статус заказа #" . $order_id);

				// Добавляем историю в заказ
				$query = $this->query("INSERT INTO `" . DB_PREFIX . "order_history` SET `order_id` = " . (int)$order_id . ", `comment` = 'Заказ выгружен в учетную систему', `order_status_id` = " . (int)$new_status . ", `notify` = " . $notify . ", `date_added` = '" . $this->NOW . "'");
				$this->log("> Добавлена история в заказ (изменен статус) #" . $order_id, 2);
			}
		}

		return true;

	}  // queryOrdersStatus()

 

 

Ещё изменения в функиции queryOrdersExport(), при чем почему это не учтено было сразу, я не понимаю. Ну можно же по аналогии с уже похожими функциями сделать. Короче, изначально, когда покупатель доходит до подтверждения заказа, но не нажимает кнопку подтвердить, заказ всё ровно создаётся, но его статус 0. И ОС такие заказы игнорирует, но вот наш модуль исправно грузил их в 1С...

Короче вот код изменённый:

Спойлер

	/**
	 * ver 1
	 * update 2018-03-10
	 * Получает список заказов на экспорт
	 */
	public function queryOrdersExport() {
		$orders_export = array();

		$this->log("==== Формирование заказов для экспорта в УС ====", 2);

		// Выгрузка измененных заказов
		if ($this->config->get('exchange1c_orders_export_modify')) {
			
			// По текущую дату и время
			$to_date = date('Y-m-d H:i:s');

			$this->log($this->config->get('exchange1c_order_date'), 2);
			if ($this->config->get('exchange1c_order_date')) {
				$from_date = str_replace('T',' ',$this->config->get('exchange1c_order_date')) . ":00";
			} else {
				// При первом обмене это поле будет пустым, если не изменено вручную. Для пустого поля зададим начало столетия
				$from_date = '2001-01-01 00:00:00';
			}
			$this->log($from_date , 2);
			
			$this->log(" > Выгружаю заказы с " . $from_date . " по " . $to_date, 2);

			// Этот запрос будет использовать индексы поля date_modified
			$query = $this->query("SELECT o.order_id, o.order_status_id FROM " . DB_PREFIX . "order o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.date_modified BETWEEN STR_TO_DATE('" . $from_date . "', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('" . $to_date . "', '%Y-%m-%d %H:%i:%s') AND o.order_status_id > '0'");

			if ($query->num_rows) {
				foreach ($query->rows as $row) {
					$orders_export[$row['order_id']] = $row['order_status_id'];
				}
			}
		}

		// Выгрузка заказов со статусом
		if ($this->config->get('exchange1c_order_status_export') != 0) {

			$query = $this->query("SELECT o.order_id, o.order_status_id FROM " . DB_PREFIX . "order o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.order_status_id = " . (int)$this->config->get('exchange1c_order_status_export')) . " AND o.order_status_id > '0'";

			if ($query->num_rows) {

				foreach ($query->rows as $row) {

					// Пропускаем если такой заказ уже выгружается
					if (isset($orders_export[$row['order_id']])) {
						continue;
					}

					$orders_export[$row['order_id']] = $row['order_status_id'];
				}
			}
		}

		$this->log('queryOrdersExport():', 2);
		$this->log($orders_export, 2);
		return $orders_export;

	} // queryOrdersExport()

 

Изначально не было условия:

o.order_status_id > '0'

И не проверялись статусы вообще:

"SELECT order_id, order_status_id FROM " . DB_PREFIX . "order ..."

Т.е. LEFT JOIN не было!!!

 

И я просто не понимаю, как это можно было проигнорировать. Толи автор не понимает, как вообще работает ОС, толи я вообще хз...

 

Вроде что-то ещё правил в контроллере...

 

Прилагаю архив с папкой admin, ибо реально не помню, что там ещё правил, что бы модуль начал нормально работать +)

admin.rar

 

Добавлю, что 1с-ка без всяких допилов. Вес и всё остальное даже не копал, ибо не надо. Мне проще, чтобы всё это рассчиталось на сайте, а в 1с-ку пришла просто сумма, а также кому и куда. Если кому надо, могу полностью весь модуль по файлам скинуть, как руки дойдут =).

 

Так же если кто-то разберётся с адресом доставки и датой напишите.

  • +1 1

Share this post


Link to post
Share on other sites

Коллега, вы УНФ с Битриксом через этот модуль дружите? Разве у Битрикса нет своего модуля интеграции? Вроде недавно вышло обновление, которое довольно пристойно работает.

 

Радует ваш подход ничего не трогать в 1С. Для данной задачи обмена вовсе не нужно менять код конфигурации и не нужно менять структуру базы 1С и структуру таблиц опенкарта. Дополнительные таблицы можно и нужно создавать, для хранения связей, но менять структуру полей штатного магазина - не нужно. Автор же данного модуля со времен царя гороха зачем-то крячит дефолтные таблицы, с одному ему известным целями, тем самым потенциально разрушая совместимость с другими модулями.

 

По поводу доставки. Я уже писал чуть ранее, что в 1С начали плотно заниматься этим вопросом интегрировали функционал отвечающий за теги доставки в CommerceML, а еще раньше - сделали её отдельной закладкой в форме заказа покупателя в УНФ (остальные конфигурации не смотрел). Наворотили там конечно будь здоров, я же со времен УНФ 1.4 продолжаю держать отдельную группу справочника номенклатуры с несколькими услугами доставки для покупателя и проставляю эти услуги в заказ. Реализовать эту схему даже для полностью двунаправленного обмена данными заказов достаточно легко - было бы желания, а его у автора нет. Вопрос с доставкой было поднят мной еще два года назад, в апреле-мае я ему прислал законченное ТЗ - реакция была нулевая. Поздравил меня с наступающими праздниками...

 

7 часов назад, DROND сказал:

Там такое кол-во косяков... Короче модуль из коробки не заработает и править его вам придётся пару дней.

...

И я просто не понимаю, как это можно было проигнорировать. Толи автор не понимает, как вообще работает ОС, толи я вообще хз...

 

В свое время, достаточно долго, целых два года, пока я слежу за этой темой, у меня зрел вопрос - почему автор упорно игнорит практически все советы и доработки участников-энтузиастов и так же упорно продолжает тащить непофиксенные глюки во все свои новые версии? Это при том, что модуль в исходном состоянии не работает даже на примитивном наборе данных и чистой установке магазина. Если считать, что автор от чистого сердца делится своими наработками на благо людям, то рационального объяснения игнорированния исправлений я найти не могу. Если же предположить, что автор просто ждет донат за доделки, а этот модуль, вовсе не ставит своей целью работать, а только поражает количеством закладок с огромным количеством потенциальных возможностей и даже местами чуть-чуть шуршит изображая, что пытается работать, разжигая этим большой интерес у публики - это тогда всё объясняет.

 

Хотелось бы ошибаться, но боюсь, ваши труды, как и ряда других участников, автором не будут востребованы.

Edited by IronMann

Share this post


Link to post
Share on other sites
В 20.07.2018 в 14:32, DROND сказал:

Прилагаю архив с папкой admin, ибо реально не помню, что там ещё правил, что бы модуль начал нормально работать +)

admin.rar

 

Добавлю, что 1с-ка без всяких допилов. Вес и всё остальное даже не копал, ибо не надо. Мне проще, чтобы всё это рассчиталось на сайте, а в 1с-ку пришла просто сумма, а также кому и куда. Если кому надо, могу полностью весь модуль по файлам скинуть, как руки дойдут =).

 

Поставил чистую ocStore 2.3, на неё oc2.3-exchange1c_1.6.4.4b34.ocmod, поверх ваши файлы.

При выгрузке из 1с выдаёт ошибку 3001 (Файл не был загружен на сайт, проверьте права на запись в папке /system/storage/cache/exchange1c.)

В логе

2018-07-22 13:09:13 - (M) НАЧАЛО ЗАГРУЗКИ ДАННЫХ
2018-07-22 13:09:13 - (M) SELECT `language_id` FROM `oc_language` WHERE `code` = 'ru-ru'
2018-07-22 13:09:13 - (M) Язык загрузки, id: 1
2018-07-22 13:09:13 - (M) Читается XML файл: 'import.xml'
2018-07-22 13:09:13 - Строка ошибки: 8320 - error_3001_log
2018-07-22 13:09:13 - ОШИБКА 3001. Смотрите описание ошибки в справке модуля обмена.
2018-07-22 13:09:13 - 2524(C) Удален файл: /.../system/storage/cache/exchange1c/import.xml
2018-07-22 13:09:13 - 0049(C) failure
2018-07-22 13:09:13 - 0052(C) ERROR: 3001
2018-07-22 13:09:13 - Ошибка при загрузке файла: /.../system/storage/cache/exchange1c/import.xml

Притом, что версия от автора товары выгружает, но перед загрузкой offers.xml пишет

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Обмен не выполнен
Ответ сервера:
Successfully processed file: /.../system/storage/cache/exchange1c/import.xml

Выгрузка товаров завершена с ошибками!!!

 

Share this post


Link to post
Share on other sites

решил чисто для интереса поставить на чистый магаз, только что установленный Осторе 2.3 

версию opencart2.3-exchange1c_1.6.3.12.ocmod 

 

 

 

Fatal error: Uncaught Error: Call to a member function installUnits() on null in /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/admin/controller/extension/module/exchange1c.php:1073 Stack trace: #0 /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/system/storage/modification/system/engine/action.php(51): ControllerExtensionModuleExchange1c->install(Array) #1 /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/system/storage/modification/system/engine/loader.php(24): Action->execute(Object(Registry), Array) #2 /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/admin/controller/extension/extension/module.php(25): Loader->controller('extension/modul...') #3 /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/system/storage/modification/system/engine/action.php(51): ControllerExtensionExtensionModule->install() #4 /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/admin/controller/startup/router.php(26): Action->execute(Object(Registry), Array) #5 /var/www/u0302539/data/www/xn--b1aceb4aencbodx in /var/www/u0302539/data/www/xn--b1aceb4aencbodx.xn--p1ai/admin/controller/extension/module/exchange1c.php on line 1073

Share this post


Link to post
Share on other sites

Вот эта версия встала без ошибок) вечером протестирую из УТ как он в дефолте выгружает 

 

oc2.3-exchange1c_1.6.4.4b35.ocmod

Share this post


Link to post
Share on other sites
В 20.07.2018 в 20:04, IronMann сказал:

Коллега, вы УНФ с Битриксом через этот модуль дружите? Разве у Битрикса нет своего модуля интеграции? Вроде недавно вышло обновление, которое довольно пристойно работает.

 

Вы меня не правильно поняли. В настройке синхронизации выбран битрикс, а подружить я пытаюсь УНФ и ОС.

3.thumb.png.91ad34bba5b791658cfb175bf0250fe3.png

 

 

 

21 час назад, ironzorin2 сказал:

Поставил чистую ocStore 2.3, на неё oc2.3-exchange1c_1.6.4.4b34.ocmod, поверх ваши файлы.

При выгрузке из 1с выдаёт ошибку 3001 (Файл не был загружен на сайт, проверьте права на запись в папке /system/storage/cache/exchange1c.)

В логе


2018-07-22 13:09:13 - (M) НАЧАЛО ЗАГРУЗКИ ДАННЫХ
2018-07-22 13:09:13 - (M) SELECT `language_id` FROM `oc_language` WHERE `code` = 'ru-ru'
2018-07-22 13:09:13 - (M) Язык загрузки, id: 1
2018-07-22 13:09:13 - (M) Читается XML файл: 'import.xml'
2018-07-22 13:09:13 - Строка ошибки: 8320 - error_3001_log
2018-07-22 13:09:13 - ОШИБКА 3001. Смотрите описание ошибки в справке модуля обмена.
2018-07-22 13:09:13 - 2524(C) Удален файл: /.../system/storage/cache/exchange1c/import.xml
2018-07-22 13:09:13 - 0049(C) failure
2018-07-22 13:09:13 - 0052(C) ERROR: 3001
2018-07-22 13:09:13 - Ошибка при загрузке файла: /.../system/storage/cache/exchange1c/import.xml

 

 

 

В чем у вас проблема может быть, я сказать затрудняюсь. Проверьте разрешения на папки. У меня 0776 и всё работает нормально.

Share this post


Link to post
Share on other sites

Да, я вас понял. На вскидку не помню, там кроме битрикса что еще выбирается. UMI там есть? С настройками для UMI проверяли?

 

Надо понять, насколько серьезно отличается протокол обмена для Битрикса и всего прочего. Либо это печальная ситуация, когда протокол не универсален и требует разных тегов для разных CMS, либо, что более оптимистично, протокол универсален, а этой настройкой задается пресет, определяющий выгружать или не выгружать тот или иной состав данных для той или иной CMS.

Share this post


Link to post
Share on other sites
3 часа назад, IronMann сказал:

Да, я вас понял. На вскидку не помню, там кроме битрикса что еще выбирается. UMI там есть? С настройками для UMI проверяли?

 

Надо понять, насколько серьезно отличается протокол обмена для Битрикса и всего прочего. Либо это печальная ситуация, когда протокол не универсален и требует разных тегов для разных CMS, либо, что более оптимистично, протокол универсален, а этой настройкой задается пресет, определяющий выгружать или не выгружать тот или иной состав данных для той или иной CMS.

 

С другими настройками не проверял, но там убирается некоторый функционал. На выбор всего три пункта: UMI, bitrix, другая. Вот, что написано в описании:

4.thumb.png.75809d518a5d5837c89380de26637e78.png

 

Думаю скорее всего второй вариант, хотя тут можно долго гадать, нужно смотреть парсер со стороны 1С.

Share this post


Link to post
Share on other sites

Когда я игрался с сервисом UMI.CMS, я ставил в отладчике точку останова, где УНФ получает распакованный orders.xml. Там все рабочие теги на блюдечке. Оформляю на сайте заказ с как можно большим количеством интересующих данных, а потом смотрю, каким тегами те или иные данные передаются. Можно так все новые теги, которые реально работают, выцепить. А дальше - дело техники.

Edited by IronMann

Share this post


Link to post
Share on other sites

Вот вам ссылочка на забавную историю)) как монополия работает

 

 

1)Сегодня решил обновиться на новую 132 релиз, посмотрел, лицензия закончилась, продлил за 899 рублей на форуме 

image.png.12deb049f779c228602101300637c536.png

 

Продлеваю, скачиваю 132 релиз, обновляюсь, но не хера не работает еще и сайт упал, товары не открываются, пишется нет лицензии. Хотя все куплено

Пишу в пооддержку 

 

image.png.9b79ac1dfbdc9f041e38d0114963a428.png

 

 

 

Я говорю как так то, продление куплено, в чем проблема 

 

 

 

 

image.png.805b26ef4eb61da6a251b73bc88952a5.png

 

Те по факту я обновился, лицензию анулировали))) Продление 10 тыс стоит, 

 

Share this post


Link to post
Share on other sites

 

Цитата

 


1)Сегодня решил обновиться на новую 132 релиз, посмотрел, лицензия закончилась, продлил за 899 рублей на форуме 

Продлеваю, скачиваю 132 релиз, обновляюсь, но не хера не работает еще и сайт упал, товары не открываются, пишется нет лицензии. Хотя все куплено

...

Те по факту я обновился, лицензию анулировали))) Продление 10 тыс стоит, 

 

 

Это вы про модуль товарища из Донецка? По крайней мере, если не путаю, начиналось это как модуль от Alexdev из Донецка. и буквально еще полтора года назад, он свой модуль в бессрочном виде за 1800 рублей продавал. Потом, он/они/оно стало целое студио NeoSeo из Киева и Львова и в начале модуль стал стоить пятак, а теперь и целых 10 000 за него просят. Большое головокружение от успехов у студио, особенно на фоне того, что в этой теме с этим бесплатным модулем происходит. :) В начале, полагаю, тревожно и грустно было, когда тут такая движуха пошла - по функциональности заявленной местный модуль их модуль раза в четыре превосходил, и при этом еще и бесплатно! Но потом, когда человек/ребята убедились, что опасности отсюда никакой не исходит и исходить не будет, решил(и) дать волю своим желаниям, которые, судя по ценнику, не слабые. :)

 

Цитата

Вот вам ссылочка на забавную историю)) как монополия работает

 

Даже удивительно, здесь уж точно несколько сильных PHP программистов в теме побывало и сейчас даже есть. Взяли бы и реально допили этот несчастный модуль до рабочего состояния. Вплоть до отдельной независимой темы. А то здесь тоже своего рода монополия, когда автор все ошибки, замечания и даже готовы рабочие исправления в упор не замечает либо делает вид, что не замечает.

 

Edited by IronMann

Share this post


Link to post
Share on other sites

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

$filesize = file_put_contents($uplod_file, $data, FILE_APPEND | LOCK_EX);

Убрал "FILE_APPEND", все ок стало.

Share this post


Link to post
Share on other sites

Выгрузка товаров завершена с ошибками!!!
Выгружено товаров: 72
Выгружено картинок: 0
Выгружено файлов: 0
Выгружено предложений: 72
Получен расширенный статус успешного завершения сеанса
Ответ сервера:
Successfully import catalog 

Получен расширенный статус успешного завершения сеанса
Ответ сервера:
Successfully import catalog 

Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Обмен не выполнен
Ответ сервера:
ERROR: 3000

Выгрузка товаров завершена с ошибками!!!

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

У меня тоже никак не взлетает. Автор, помогите пожалуйста.

Вот что происходит:

На стороне 1С:

Интерактивный обмен 16.07.2018 16:05:30
Запуск выгрузки товаров 16.07.2018 16:05:30
Завершено формирование файлов выгрузки товаров
Выгружено товаров: 8 предложений: 1 картинок: 3 файлов: 0
В том числе для каталога Основной каталог товаров: товаров: 8 предложений: 1 картинок: 3 файлов: 0
16.07.2018 16:05:33 Выгрузка на сайт завершилась с ошибками.
Отправка файла на сервер:
Получен пустой ответ сервера. import.xml:
Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Ответ сервера:
16.07.2018 16:05:33 Завершена выгрузка товаров
На стороне сервера в логах следующее:
ошибка ОШИБКА! Файл не является стандартом XML или обрезан
я вручную сжал файлы в zip. При попытке загрузить в ручную:
Internal Server Error Internal Server Error
Вот мой файл:
 
При некоторых других настройках сервера ошибки были такие (похоже на тему выше, через одну):
2018-07-14 12:31:59 - 2300(C) POST_MAX_SIZE: 8388608 2018-07-14 12:31:59 - 2059(C) PHP Version: 50445 2018-07-14 12:31:59 - 2060(C) client_max_body_size: 2018-07-14 12:31:59 - 1995(C): 2018-07-14 12:31:59 - Array ( [0] => zip=no [1] => file_limit=8388608 ) 2018-07-14 12:31:59 - 1996(C) Mode Catalog Init 2018-07-14 12:31:59 - 1997(C): 2018-07-14 12:31:59 - Array ( [0] => zip=no [1] => file_limit=8388608 ) 2018-07-14 12:31:59 - 2361(C) upload file: /home/admin/web/mag1.gu.ru/public_html/system/storage/cache/exchange1c/import.xml 2018-07-14 12:31:59 - 2369(C) file size: 78045 2018-07-14 12:31:59 - 0042(C) success 2018-07-14 12:31:59 - 0045(C) Successfully import catalog 2018-07-14 12:31:59 - 2361(C) upload file: /home/admin/web/mag1.gu.ru/public_html/system/storage/cache/exchange1c/offers.xml 2018-07-14 12:31:59 - 2369(C) file size: 2541 2018-07-14 12:31:59 - 0042(C) success 2018-07-14 12:31:59 - 0045(C) Successfully import catalog 2018-07-14 12:31:59 - 2361(C) upload file: /home/admin/web/mag1.gu.ru/public_html/image/import_files/49/49c513c2586111e8960c00001cd77723_26f0b7655f3411e8960c00001cd77723.jpg 2018-07-14 12:32:00 - 2369(C) file size: 62445 2018-07-14 12:32:00 - 0042(C) success 2018-07-14 12:32:00 - 0045(C) Successfully import catalog 2018-07-14 12:32:00 - 2361(C) upload file: /home/admin/web/mag1.gu.ru/public_html/image/import_files/49/49c513c2586111e8960c00001cd77723_26f0b7665f3411e8960c00001cd77723.jpg 2018-07-14 12:32:00 - 2369(C) file size: 101107 2018-07-14 12:32:00 - 0042(C) success 2018-07-14 12:32:00 - 0045(C) Successfully import catalog 2018-07-14 12:32:00 - 2361(C) upload file: /home/admin/web/mag1.gu.ru/public_html/image/import_files/49/49c513c2586111e8960c00001cd77723_e7662d3f592911e8960c00001cd77723.jpg 2018-07-14 12:32:00 - 2369(C) file size: 55540 2018-07-14 12:32:00 - 0042(C) success 2018-07-14 12:32:00 - 0045(C) Successfully import catalog 2018-07-14 12:32:01 - 2488(C) modeImport 2018-07-14 12:32:01 -
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2018-07-14 12:32:01 - 8190(M) НАЧАЛО ЗАГРУЗКИ ДАННЫХ 2018-07-14 12:32:01 - 8195(M) Язык загрузки, id: 1 2018-07-14 12:32:01 - 8209(M)
Читается XML файл: 'import.xml' 2018-07-14 12:32:01 - 0106(M)
Время обработки xml_load: 0.0041041374206543 сек
2018-07-14 12:32:01 - PHP Unknown: Object of class LibXMLError could not be converted to string in /home/admin/web/mag1.gu.ru/public_html/admin/model/extension/exchange1c.php on line 8218
2018-07-14 12:32:01 - Строка ошибки: 8218 - error_3000_log
2018-07-14 12:32:01 - PHP Unknown: Object of class LibXMLError could not be converted to string in /home/admin/web/mag1.gu.ru/public_html/admin/model/extension/exchange1c.php on line 8219
2018-07-14 12:32:01 - 8219(M)
2018-07-14 12:32:01 - ОШИБКА 3000. Смотрите описание ошибки в справке модуля обмена.
2018-07-14 12:32:01 - 0049(C) failure 2018-07-14 12:32:01 - 0052(C) ERROR: 3000
2018-07-14 12:32:01 - Ошибка при загрузке файла: /home/admin/web/mag1.gu.ru/public_html/system/storage/cache/exchange1c/import.xml
2018-07-14 12:32:01 - 6706(M) ==== Выгрузка заказов ====
2018-07-14 12:32:01 - 6646(M) ==== Формирование заказов для экспорта в УС ====
2018-07-14 12:32:01 - 6651(M) 2000-01-01T00:00
2018-07-14 12:32:01 - 6658(M) 2000-01-01 00:00:00
2018-07-14 12:32:01 - 6692(M) queryOrdersExport():
2018-07-14 12:32:01 - 6693(M):
2018-07-14 12:32:01 - Array ( [1] => 1 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 )

Share this post


Link to post
Share on other sites

Ребята, добрый день! Подскажите пожалуйста, нет ли инструкции от этого модуля или демо-доступ какой? Все перепробовал, ну не загружаются у меня характеристики и все тут(без характеристик норм). Писал автору, не отвечает пока, видимо занят. Готов заплатить за настройку! Помогите ответом люди добрые) или вариантом каким..

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By SergeyPechenyuk
      Скачать/Купить дополнение


      OC-Store: OCMOD Hack (Opencart 2.x)
      Хак для Opencart 2.x, который добавляет функционал применения модификаций по версии Opencart в OCMOD.
      Для примера, в Opencart 2.1.x в системной библиотеке language.php есть такой замечательный метод all(), который отдает все значения языкового файла, но данного метода нет в Opencart 2.0.x. Вот тут нам и может помочь этот модуль, который вводит для XML-тега "operation" два новых аттрибута:
      min-version - минимальная версия Opencart, для которой применяется данная модификация
      max-version - максимальная версия Opencart, для которой применяется данная модификация

      Пример Вашего файла install.xml, который вносит изменения в системную библиотеку language.php, чтобы был доступен метод all() на Opencart 2.0.x
      <?xml version="1.0" encoding="utf-8"?><modification> <name>Add language method all() for Opencart 2.0.x</name> <version>1.0</version> <author>Sergey Pechenyuk (http://oc-store.com)</author> <code>language_method_add</code> <file path="system/library/language.php"> <operation min-version="2.0.0" max-version="2.0.3.1"> <search trim="true"><![CDATA[public function load($filename) {]]></search> <add position="before" trim="true"><![CDATA[ public function all() { return $this->data; } ]]></add> </operation> </file></modification>
      Добавил SergeyPechenyuk Добавлено 24.02.2016 Категория Прочее Системные требования Метод активации Ioncube Loader OpenCart ocStore OpenCart.Pro, ocShop Обращение к серверу разработчика Старая цена  
    • By pashast
      Скачать/Купить дополнение


      Карта Украины в админке ocmod
      Отображает в админке ocstore 2.x карту Украины, вместо карты мира. Установка ocmod через установку дополнений.

      Тем у кого не работает, проверьте коды регионов https://opencartforum.com/topic/57219-карта-украины-в-админке-ocmod/?do=findComment&comment=554231
      Добавил pashast Добавлено 19.02.2016 Категория Прочее Системные требования Метод активации Ioncube Loader OpenCart ocStore OpenCart.Pro, ocShop Обращение к серверу разработчика Старая цена  
    • By Waha
      Скачать/Купить дополнение


      Мультиязычный заголовок - модуль Рекомендуемые
      Данная модификация добавляет возможность в модуле Рекомендуемые задавать произвольный заголовок для каждого языка.
      При смене языка покупателем - заголовок модуля выводиться из настроек, если заголовок не задан, то выводиться заголовок по-умолчанию из языкового файла.
      Вся прелесть в том, что можно публиковать множество таких модулей с разным заголовком и разными товарами.
      Enjoy !
       
      Также рекомендую:
      - СМС уведомления для админа, клиента
      - Акционные товары с таймером
      - Товары из категорий
      - Все товары магазина
      Добавил Waha Добавлено 23.02.2016 Категория SEO, карта сайта, оптимизация Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Старая цена  
    • By photocritic
      1 300.00 руб
      Скачать/Купить дополнение


      Multioptions (добавляет связанные опции к товару)
      Возможности Multioptions:
      Это расширение ocmod для opencart 2.1.0.1 не vQMod!

      Позволяет связать стандартные опции в различные их комбинации (до 3 уровней вложенности).
      Для связи опции вы можете использовать "Список" (select), "Переключатель" (radio) и "Изображение" (image)
      Позволяет ограничить выбор покупателя только доступными сочетаниями опций
      Можно выбирать связанные опции в любом порядке
      Визуальный контроль повторяющихся комбинаций опций в карточке товара

      КАК УСТАНОВИТЬ?

      Распакуйте multi_options_ru.zip в любую папку на вашем компьютере.
      В административной части opencart выберите "Extension installer" (Установка расширений).
      Нажмите на кнопку "Upload" и выберите файл multi_options_1.ocmod.xml с вашего компьютера.
      Нажмите на кнопку "Upload" и выберите файл multi_options_2.ocmod.xml с вашего компьютера.
      В административной части opencart перейдите в "Modification" (Модификации) и нажмите кнопку "Refresh" (Обновить).

      Это все!
      Добавил photocritic Добавлено 05.11.2015 Категория Опции  
    • By D1mich
      Требуется видоизменить шапку шаблона Feelmart в соответствии с данным прототипом: https://esk.one/p/cJFJWItB
      Правки необходимо вносить при помощи модификаторов ocmod.
      Сайт новый. Шаблон только установили. 
       
      Интересует стоимость вашей работы, качество и сроки.
      Ищем специалиста для долгосрочного сотрудничества. 
       
      Ждем ваших предложений в л.с.
       
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.