Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Здравствуйте. Подскажите, пожалуйста, будет ли модуль работать, 1с у нас розница 8.3 версия 2.1, opencart 2.1.0.1?

И будет ли работать с модулем Связанные опции, у нас идет связь цвет-размер?

Надіслати
Поділитися на інших сайтах


22 часа назад, SoundMonster сказал:

Пожалуйста!

Screenshot_1.png

В личку киньте файл .cf я проверю у себя сначала, так быстрее найду ошибку

  • +1 1
Надіслати
Поділитися на інших сайтах

6 часов назад, Dobromila сказал:

Здравствуйте. Подскажите, пожалуйста, будет ли модуль работать, 1с у нас розница 8.3 версия 2.1, opencart 2.1.0.1?

И будет ли работать с модулем Связанные опции, у нас идет связь цвет-размер?

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

Надіслати
Поділитися на інших сайтах


16 часов назад, SoundMonster сказал:

Ребята, что у вас за проблемы, вы либо шаблоны кривые используете, либо модули кривые, покупайте все качественное, зря тему засоряете!

1С УНФ 1.6. OCstore 2.3 стоковая, вообще без изменений, модули отсюда. 

Надіслати
Поділитися на інших сайтах


В 02.06.2017 в 16:11, abadrozadub сказал:

Еще такая ошибка пошла, но не уверен что это с обновлением связано. Ни у кого не встречалась?

Screenshot_17.jpg

Screenshot_16.jpg

Коды у единиц измерений имеют международный стандарт или с потолка забиты в 1С?

  • +1 1
Надіслати
Поділитися на інших сайтах

52 минуты назад, abadrozadub сказал:

Уточню.

Для версии 2.3 найдена ошибка при выводе общего остатка по всем складам...

Возможно это она вылезла. Уже исправлена 1.6.3.11

  • +1 1
Надіслати
Поділитися на інших сайтах

В 02.06.2017 в 15:36, abadrozadub сказал:

Аналогично как у Furious

 Растет в прогрессии 

 

Screenshot_15.jpg

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

  • +1 1
Надіслати
Поділитися на інших сайтах

В 03.06.2017 в 00:20, Dobromila сказал:

Здравствуйте. Подскажите, пожалуйста, будет ли модуль работать, 1с у нас розница 8.3 версия 2.1, opencart 2.1.0.1?

И будет ли работать с модулем Связанные опции, у нас идет связь цвет-размер?

То есть у Вас два свойства у характеристики?

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

  • +1 1
Надіслати
Поділитися на інших сайтах

В 02.06.2017 в 18:57, SusereN сказал:

Доброго дня.

Обновился на 1.6.3.10, выгрузка не проходит. Гружу вручную, получаю ошибку

 

Снимок.JPG

 

Откатился на 3.9 - всё успешно

Ошибка была, потом исправил... поторопился после переделки заказов не все проверил...

Проверил у себя для версии 2.3, функция есть, если у Вас в файле model/extension/exchange1c.php есть такая функция, проверьте public она или private. Она должна быть public.

  • +1 1
Надіслати
Поділитися на інших сайтах

	/**
	 * ver 3
	 * update 2017-06-04
	 * Удаляет в кэше эту картинку
	 */
	private function deleteCacheImage($image_info) {

		if (!$image_info) {
			// Нечего удалять
			return false;
		}

		// Путь в папке кэш к картинке
		$path = str_replace(DIR_IMAGE, DIR_IMAGE . "cache/" , $image_info['dirname']);

		// Откроем папку для чтения
		$delete_files = array();
		$dh = @opendir($path);

		// Если каталог не открывается
		if (!$dh) {
			$this->log("Каталог не существует: " . $path);
			return false;
		}

		while(($file = readdir($dh)) !== false) {
			$find = strstr($file, $image_info['filename']);
			if ($find != "") {
				$delete_files[] = $find;
			}
		}
		closedir($dh);

		if ($delete_files) {
			foreach ($delete_files as $filename) {
				unlink($path . "/" . $filename);
				$this->log("Удалена картинка из кэша: " . $filename);
			}
		}

		return true;

	} // deleteCacheImage()

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Обновленный модификатор для opencart 2.3 для модуля версий 1.6.3

Скрытый текст

<modification>
	<name>Exchange Module for OpenCart 2.3</name>
	<version>1.6.3.11_oc2.3</version>
	<id>OpenCart Exchange</id> 
	<author>KirilLoveVE</author>
	<link>https://github.com/KirilLoveVE/opencart2-exchange1c</link>
	<code>exchange1c</code>
	<file path="admin/controller/common/menu.php">
		<operation>
			<search><![CDATA[$data['text_option'] = $this->language->get('text_option');]]></search>
			<add position="after"><![CDATA[$data['text_warehouse'] = $this->language->get('text_warehouse');]]></add>
		</operation>
		<operation>
			<search><![CDATA[$data['module'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');]]></search>
			<add position="after"><![CDATA[$data['exchange1c'] = $this->url->link('module/exchange1c', 'token=' . $this->session->data['token'], 'SSL');]]></add>
		</operation>
		<operation>
			<search><![CDATA[$data['option'] = $this->url->link('catalog/option', 'token=' . $this->session->data['token'], 'SSL');]]></search>
			<add position="after"><![CDATA[$data['warehouse'] = $this->url->link('catalog/warehouse', 'token=' . $this->session->data['token'], 'SSL');]]></add>
		</operation>
	</file>

	<file path="admin/view/template/common/menu.tpl">
		<operation>
			<search><![CDATA[<li><a href="<?php echo $modification; ?>"><?php echo $text_modification; ?></a></li>]]></search>
			<add position="after"><![CDATA[      <li><a href="<?php echo $exchange1c; ?>">Exchange 1C 8.x</a></li>]]></add>
		</operation>
		<operation>
			<search><![CDATA[<li><a href="<?php echo $option; ?>"><?php echo $text_option; ?></a></li>]]></search>
			<add position="after"><![CDATA[      <li><a href="<?php echo $warehouse; ?>"><?php echo $text_warehouse; ?></a></li>]]></add>
		</operation>
	</file>

	<file path="admin/language/russian/common/menu.php">
		<operation>
			<search><![CDATA[$_['text_option']          					= 'Опции';]]></search>
			<add position="after"><![CDATA[$_['text_warehouse']        					= 'Склады';]]></add>
		</operation>
	</file>

	<file path="admin/language/english/common/menu.php">
		<operation>
			<search><![CDATA[$_['text_option']                      = 'Options';]]></search>
			<add position="after"><![CDATA[$_['text_warehouse']        					= 'Warehouses';]]></add>
		</operation>
	</file>

	<file path="system/library/image.php">
		<operation>
			<search><![CDATA[$mime = $this->info['mime'];]]></search>
			<add position="replace"><![CDATA[$info = getimagesize($image);
		$mime = isset($info['mime']) ? $info['mime'] : '';]]></add>
		</operation>
		<operation>
			<search><![CDATA[imagecopy($this->image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, 120, 40);]]></search>
			<add position="replace"><![CDATA[imagecopy($this->image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height);]]></add>
		</operation>
	</file>

	<file path="catalog/controller/product/product.php">
		<operation>
			<search><![CDATA[if ($product_info['quantity'] <= 0) {]]></search>
			<add position="before"><![CDATA[			// +++ TESLA-CHITA
			$product_id = (int)$this->request->get['product_id'];
			// Характеристики
			$product_option_values = array();
			$sql = "SELECT `pfv`.`product_feature_id`, `pov`.`product_option_id`, `pfv`.`product_option_value_id` FROM `" . DB_PREFIX . "product_feature_value` `pfv` LEFT JOIN `" . DB_PREFIX . "product_option_value` `pov` ON (`pfv`.`product_option_value_id` = `pov`.`product_option_value_id`) LEFT JOIN `" . DB_PREFIX . "option` `o` ON (`pov`.`option_id` = `o`.`option_id`) WHERE `pfv`.`product_id` = " . $this->request->get['product_id'] . " ORDER BY `o`.`sort_order`";
			$query = $this->db->query($sql);
			$features = $query->rows;
			foreach ($features as $feature_value) {
				if (empty($product_option_values[$feature_value['product_option_value_id']])) {
					$product_option_values[$feature_value['product_option_value_id']] = array();
				}
       			foreach ($features as $feature_value1) {
       				if ($feature_value1['product_feature_id'] == $feature_value['product_feature_id'] && $feature_value1['product_option_value_id'] <> $feature_value['product_option_value_id']) {

       					$product_option_values[$feature_value['product_option_value_id']][] = $feature_value1['product_option_value_id'];
       				}
				}

	        }
        	unset($query);

			$customer_group_id = $this->customer->isLogged()? $this->customer->getGroupId() : $this->config->get('config_customer_group_id');
			$product_features_price = array();
			$query = $this->db->query("SELECT `product_feature_id`, `price` FROM `" . DB_PREFIX . "product_price` WHERE `product_id` = " . (int)$this->request->get['product_id'] . " AND `customer_group_id` = " . $customer_group_id);
			$data['currency_data'] = array(
				'symbol'  => $this->currency->getSymbolRight($this->session->data['currency']),
				'decimal' => $this->currency->getDecimalPlace($this->session->data['currency']),
				'value'	  => $this->currency->getValue($this->session->data['currency'])
			);
			$product_features_price = array();
			$product_features_options = array();
			$product_features_options_values = array();
			foreach ($query->rows as $query_price) {
				$product_features_price[$query_price['product_feature_id']] = array(
					'value' => $query_price['price'] * $data['currency_data']['value'],
					'tax'	=> $this->tax->calculate($query_price['price'], $product_info['tax_class_id'], $this->config->get('config_tax')) * $data['currency_data']['value']
				);
				foreach ($features as $feature) {
					if ($feature['product_feature_id'] == $query_price['product_feature_id']) {
						if (!isset($product_features_options[$feature['product_feature_id']])) {
							$product_features_options[$feature['product_feature_id']] = array();
						}
						$product_features_options[$feature['product_feature_id']][$feature['product_option_id']] = $feature['product_option_value_id'];
						$product_features_options_values[$feature['product_option_value_id']] = $feature['product_feature_id'];
					}
				}
			}
			$data['product_features_price'] = $product_features_price;
			$data['product_features_options'] = $product_features_options;
			$data['product_features_options_values'] = $product_features_options_values;

			// Остатки в базовой единице
			$product_quantity = array();
			$product_units = array();
			$quantity_total = 0;
			if ($this->config->get('config_stock_display') && !empty($product_features_options)) {

				$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "product_quantity` WHERE `product_id` = " . (int)$this->request->get['product_id']);
				foreach ($query->rows as $query_quantity) {

					if (!isset($product_quantity[$query_quantity['product_feature_id']])) {
						$product_quantity[$query_quantity['product_feature_id']] = array();
					}
					$quantity = &$product_quantity[$query_quantity['product_feature_id']];

					if (!isset($quantity[$query_quantity['warehouse_id']])) {
						$quantity[$query_quantity['warehouse_id']] = $query_quantity['quantity'];
						$quantity_total += $query_quantity['quantity'];
					}

					$query = $this->db->query("SELECT `u`.`name`, `u`.`rus_name1`, `pu`.`ratio`, `pu`.`product_feature_id`, `u`.`unit_id` FROM `" . DB_PREFIX . "product_unit` `pu` LEFT JOIN `" . DB_PREFIX . "unit` `u` ON (`pu`.`unit_id` = `u`.`unit_id`) WHERE `pu`.`product_id` = " . $product_id);
					if ($query->num_rows) {
						foreach ($query->rows as $row) {
							if (isset($product_units[$row['unit_id']]))
								continue;
							$product_units[$row['unit_id']] = array(
								'rus_name'				=> $row['rus_name1'],
								'name'					=> $row['name'],
								'ratio'					=> $row['ratio'],
								'product_feature_id'	=> $row['product_feature_id']
						  );
						}
					}
				}
			}
			$product_quantity[0] = $quantity_total;
			$data['product_quantity'] = $product_quantity;
			$data['product_units'] = $product_units;

			// Список складов
			$sql = "SELECT * FROM `" . DB_PREFIX . "warehouse`";
			$query = $this->db->query($sql);
			$data['warehouses'] = array();
			foreach ($query->rows as $query_warehouse) {
				$data['warehouses'][$query_warehouse['warehouse_id']] = $query_warehouse['name'];
			}
			// --- TESLA-CHITA
]]></add>
		</operation>
		<operation>
			<search><![CDATA[$product_option_value_data[] = array(]]></search>
			<add position="before"><![CDATA[						// +++ TESLA-CHITA
						$class = "";
						foreach ($product_option_values[$option_value['product_option_value_id']] as $value) {
							if (empty($class)) {
								$class = $value;
							} else {
								$class .= " " . $value;
							}
						}
						// --- TESLA-CHITA

]]></add>
		</operation>

		<operation>
			<search><![CDATA['product_option_value_id' => $option_value['product_option_value_id'],]]></search>
			<add position="after"><![CDATA[							// +++ TESLA-CHITA
							'price_prefix'            => $option_value['price_prefix'],
							'class'                   => $class,
							// --- TESLA-CHITA]]></add>
		</operation>
	</file>

	<file path="catalog/model/catalog/product.php">
		<operation>
			<search><![CDATA[public function getTotalProductSpecials() {]]></search>
			<add position="before"><![CDATA[	// +++ TESLA-CHITA
	public function getProductFeaturesPrice($product_id, $product_feature_id, $customer_group_id=0, $unit_id=0) {
		$str_customer_group_id  = $customer_group_id ? " AND customer_group_id = " . $customer_group_id : "";
		$str_unit_id  = $unit_id? " AND unit_id = " . $unit_id : "";
		$sql = "SELECT price FROM " . DB_PREFIX . "product_price WHERE product_id = " . $product_id . " AND product_feature_id = " . $product_feature_id . $str_customer_group_id . $str_unit_id;
		$this->log->write($sql);
		$query = $this->db->query($sql);

		if ($query->num_rows) {
			return $query->rows;
		} else {
			return 0;
		}
	}
	// --- TESLA-CHITA
]]></add>
		</operation>
	</file>

	<file path="admin/model/sale/order.php">
		<operation>
			<search><![CDATA['order_id'                => $order_query->row['order_id'],]]></search>
			<add position="after"><![CDATA[				// +++ TESLA-CHITA
				'payment_inn'             => isset($order_query->row['payment_inn']) ? $order_query->row['payment_inn'] : "",
				'shipping_kpp'            => isset($order_query->row['shipping_inn']) ? $order_query->row['shipping_inn'] : "",
				'patronymic'              => isset($order_query->row['patronymic']) ? $order_query->row['patronymic'] : "",
				'payment_patronymic'      => isset($order_query->row['payment_patronymic']) ? $order_query->row['payment_patronymic'] : "",
				'shipping_patronymic'     => isset($order_query->row['shipping_patronymic']) ? $order_query->row['shipping_patronymic'] : "",
				// --- TESLA-CHITA]]></add>
		</operation>
	</file>

  	<file path="system/library/cart.php">
		<operation>
			<search><![CDATA[$price = $product_query->row['price'];]]></search>
			<add position="replace"><![CDATA[// +++ TESLA-CHITA
				//-$price = $product_query->row['price'];
				$cart_option = json_decode($cart['option']);
				$product_feature_id = $this->getProductFeatureId($cart_option);
				if ($product_feature_id) {
					$customer_group_id = $this->customer->isLogged()? $this->customer->getGroupId() : $this->config->get('config_customer_group_id');
					$price = $this->getProductFeaturesPrice($cart['product_id'], $product_feature_id, $customer_group_id);
				} else {
					$price = $product_query->row['price'];
				}
				// --- TESLA-CHITA]]></add>
		</operation>

	  	<operation>
			<search><![CDATA[	public function getProducts() {]]></search>
			<add position="before"><![CDATA[	// +++ TESLA-CHITA
	private function getProductFeaturesPrice($product_id, $product_feature_id, $customer_group_id=0, $unit_id=0) {
		$str_customer_group_id  = $customer_group_id ? " AND customer_group_id = " . $customer_group_id : "";
		$str_unit_id  = $unit_id? " AND unit_id = " . $unit_id : "";
		$sql = "SELECT price FROM " . DB_PREFIX . "product_price WHERE product_id = " . $product_id . " AND product_feature_id = " . $product_feature_id . $str_customer_group_id . $str_unit_id;
		$query = $this->db->query($sql);

		if ($query->num_rows == 1) {
			return $query->row['price'];
		} else {
			return 0;
		}
	}

	private function getProductFeatureId($options) {
		$where = "";
		foreach ($options as $product_option_value_id) {
			$where .= $where ? ",".$product_option_value_id : $product_option_value_id;
		}
		if (!$where)
			return 0;

		$sql = "SELECT product_feature_id FROM " . DB_PREFIX . "product_feature_value WHERE product_option_value_id IN (" . $where . ") GROUP BY product_feature_id";
		$query = $this->db->query($sql);

		if ($query->num_rows == 1) {
			return $query->row['product_feature_id'];
		}
		return 0;
	}
	// --- TESLA-CHITA

]]></add>
		</operation>

	  	<operation>
			<search><![CDATA[if ($option_value_query->row['price_prefix'] == '+') {]]></search>
			<add position="replace"><![CDATA[if ($option_value_query->row['price_prefix'] == 'off+') {]]></add>
		</operation>
  
	  	<operation>
			<search><![CDATA[} elseif ($option_value_query->row['price_prefix'] == '-') {]]></search>
			<add position="replace"><![CDATA[} elseif ($option_value_query->row['price_prefix'] == 'off-') {]]></add>
		</operation>

  </file>

	<file path="catalog/view/theme/*/template/product/product.tpl">
		<operation>
			<search><![CDATA[<li><?php echo $text_stock; ?> <?php echo $stock; ?></li>]]></search>
			<add position="replace"><![CDATA[<li id="stock"><?php echo $text_stock; ?> <?php echo $stock; ?></li>]]></add>
		</operation>
		<operation>
			<search><![CDATA[<h2><?php echo $price; ?></h2>]]></search>
			<add position="replace"><![CDATA[<h2 id="price"><?php echo $price; ?></h2>]]></add>
		</operation>
		<operation>
			<search><![CDATA[<li><?php echo $text_tax; ?> <?php echo $tax; ?></li>]]></search>
			<add position="replace"><![CDATA[<li id="tax"><?php echo $text_tax; ?> <?php echo $tax; ?></li>]]></add>
		</operation>
		<operation>
			<search><![CDATA[<li><?php echo $text_points; ?> <?php echo $points; ?></li>]]></search>
			<add position="replace"><![CDATA[<li id="points"><?php echo $text_points; ?> <?php echo $points; ?></li>]]></add>
		</operation>
		<operation>
			<search><![CDATA[<option value="<?php echo $option_value['product_option_value_id']; ?>">]]></search>
			<add position="replace"><![CDATA[<option class="<?php echo $option_value['class']; ?>" value="<?php echo $option_value['product_option_value_id']; ?>">]]></add>
		</operation>
		<operation>
			<search><![CDATA[<input type="radio" name="option[<?php echo $option['product_option_id']; ?>]"]]></search>
			<add position="replace"><![CDATA[<input class="<?php echo $option_value['class']; ?>" type="radio" name="option[<?php echo $option['product_option_id']; ?>]"]]></add>
		</operation>
		<operation>
			<search><![CDATA[<input type="checkbox" name="option[<?php echo $option['product_option_id']; ?>][]"]]></search>
			<add position="replace"><![CDATA[<input class="<?php echo $option_value['class']; ?>" type="checkbox" name="option[<?php echo $option['product_option_id']; ?>]"]]></add>
		</operation>
		<operation>
			<search><![CDATA[<input type="hidden" name="product_id" value="<?php echo $product_id; ?>" />]]></search>
			<add position="after"><![CDATA[              <input type="hidden" name="product_feature_id" value="0" />
              <input type="hidden" name="unit_id" value="0" />
]]></add>
		</operation>
		<operation>
			<search><![CDATA[$(document).ready(function() {]]></search>
			<add position="before"><![CDATA[var text_stock = "<?php echo $text_stock; ?>";
var text_tax = "<?php echo $text_tax; ?>";
<?php
if (isset($warehouses)) {
	echo "var \$warehouses = {";
	foreach ($warehouses as $warehouse_id => $name) {
		echo "'" . $warehouse_id . "':'" . $name . "',";
	}
	echo "}\n";
}
?>
<?php if ($options) {?>
//------------------------------------------------------------------------------------------------------------------------------
// Определение переменных для характеристик
var $options_type = {<?php foreach ($options as $option) { echo $option['product_option_id'].":'".$option['type']."',"; }?>};
var options_order = [<?php foreach ($options as $option) { echo $option['product_option_id'].","; }?>];
var $options_required = {<?php foreach ($options as $option) { echo $option['product_option_id'].":true,"; }?>};
var $options = {<?php
	foreach ($product_features_options as $product_feature_id => $feature) {
		$str_value = $product_feature_id.":{";
		foreach ($feature as $product_option_id => $product_option_value_id) {
			$str_value .= $product_option_id.":".$product_option_value_id.",";
		}
		$str_value .= "},";
		echo $str_value;
	}
	echo "};\n";?>
// Тут хранится id выбранной характеристики
var product_feature_id = 0;
var unit_id = 0;
<?php

	$str_features =  "var \$features = {";
	$str_price =  "var \$price = {";
	$str_quantity = "// quantity{product_feature_id:{warehouse_id:{unit_id:quantity}}}\n";
	$quantity_total =  0;
	$str_quantity .=  "var \$quantity = {";
	foreach ($product_features_options as $product_feature_id => $feature_option) {
		// Цены
		$str_price .= "'" . $product_feature_id . "':{'value':" . $product_features_price[$product_feature_id]['value'] . ",'tax':" . $product_features_price[$product_feature_id]['tax'] . "},";
		// Характеристики
		$str_features .= "'" . implode("_", $feature_option) . "':" . $product_feature_id . ",";
		// Остатки
		$quantity_array = isset($product_quantity[$product_feature_id]) ? $product_quantity[$product_feature_id] : array();
		$str_quantity .= "'" . $product_feature_id . "':";

		$str_quantity .= "{";
		foreach ($quantity_array as $warehouse_id => $quantity) {
			$str_quantity .= "'" . $warehouse_id . "':" . $quantity . ",";
			$quantity_total += $quantity;
		}
		$str_quantity .= "},";

	}
	echo $str_features . "};\n";
	echo $str_price . "};\n";
	echo $str_quantity . "};\n";
	echo "var quantity_total = " . $quantity_total . ";\n";
	echo "var \$product_units = {";
	$num = 1;
	foreach ($product_units as $unit_id => $unit) {
		if ($unit['ratio'] == 1) {
			echo "0:{'unit_id':'" . $unit_id . "','name':'" . $unit['rus_name'] . "','ratio':".$unit['ratio']."},";
		} else {
			echo $num . ":{'unit_id':'" . $unit_id . "','name':'" . $unit['rus_name'] . "','ratio':".$unit['ratio']."},";
			$num++;
		}
	}
	echo "};\n";
	echo "var \$currency_data = {'symbol':'".$currency_data['symbol']."','decimal':".$currency_data['decimal']."};\n";
?>


//------------------------------------------------------------------------------------------------------------------------------
// Функция отображает остатки по складам
// Возвращает строковую переменную в которой перечислены названия всех складов с остатками и единицами измерений
function displayQuantity() {

	if ($.type($quantity[product_feature_id]) == "string") {

		// Если переменная строка, то есть нет складов, возвращается только количество
		return $quantity[product_feature_id];

	} else {

		var str = "";
		var quantity_warehouse = 0;
		var str_war = "";

		// Базовая единица
		if ($product_units[0]['name']) {
			str_unit = " ("+$product_units[0]['name']+")";
		} else {
			str_unit = "";
		}

		// Перебираем все остатки по складам
		$.each($quantity[product_feature_id],function(warehouse_id, product_quantity) {

			// Нет складов, если warehouse_id = 0
			if (warehouse_id == "0") {

				// Перебираем все единицы измерений
				$.each(product_quantity,function(unit_id, quantity) {
					//str += quantity+" ("+$product_units[unit_id]+"),";
					str += "\n" + quantity;
				});
			}
			// Остатки в выбранной единице
			else if (unit_id != 0) {

				// Название склада
				str_war = " Склад: "+$warehouses[warehouse_id]+": ";

			} else {
				if (product_quantity > 0) {
					quantity_warehouse++;
					str_war += " "+$warehouses[warehouse_id]+" = "+product_quantity+str_unit;
				}
			}
		});
		if (quantity_warehouse > 0) {
			str = " "+quantity_total+str_unit+" в "+quantity_warehouse+" магазинах: ("+str_war+")";
		} else if (quantity_total > 0) {
			str = " "+quantity_total+str_unit+" по опциям: " + $quantity[product_feature_id][0];
		} else {
			str = " нет в наличии";
		}
		return str;
	}
} // displayQuantity()

//------------------------------------------------------------------------------------------------------------------------------
// Функция отображает на странице цену, налоги, остатки,
// а также, для передачи в корзину, устанавливает значение product_feature_id
function displaySelect() {
	if (product_feature_id){
		$('#price').text(Math.round($price[product_feature_id]['value']).toFixed($currency_data['decimal'])+$currency_data['symbol']);
		$('#tax').text(text_tax+" "+Math.round($price[product_feature_id]['tax']).toFixed($currency_data['decimal'])+$currency_data['symbol']);
		$('#stock').text(text_stock+" "+displayQuantity());
		$('input[name=\'product_feature_id\']').val(product_feature_id);
		//$('input[name=\'unit_id\']').val($product_units[unit_id]);
	} else {
		$('#price').text("");
		$('#tax').text("");
		$('#stock').text(text_stock+" "+quantity_total+" ("+$product_units[0]['name']+")");
		$('input[name=\'product_feature_id\']').val(0);
		//$('input[name=\'unit_id\']').val(0);
	}
} // displaySelect()

//------------------------------------------------------------------------------------------------------------------------------
// Функция очищает все опции и разблокирует их, сбрасывает ид характеристики, а также обновляет надписи на страничке
function clearOptions() {

	// Перебираем все опции
	$.each($options_type,function(product_option_id, value) {

		if (value == "select") {

			// Делаем доступным опцию
			$('select[name="option['+product_option_id+']"]').attr("disabled",false);

			// Сбрасываем выбор, по-умолчанию будет выбран первый элемент
			$('select[name="option['+product_option_id+']"]').val('');

			// Делаем доступным все значения опции
			$('select[name="option['+product_option_id+']"] option').each(function(){
				$(this).removeAttr("disabled");
			});
		} else {

			// Делаем доступным опцию
			$('input[name="option['+product_option_id+']"]').attr("disabled",false);

			// Снимаем выбор со всех значений
			$('input[name="option['+product_option_id+']"]').attr('checked', false);
		}
		$options_required[product_option_id] = true;
	});

	// Проверка на обязательные опции
	checkRequired();

	// Сбрасываем выбранную характеристику
	product_feature_id = 0;

	// Обновляем надписи на страничке
	displaySelect();

} // clearOptions()

//------------------------------------------------------------------------------------------------------------------------------
// Функция проверяет и устанавливает какие опции обязательные, бывает что некоторые характеристики имеют разное количество опций
function checkRequired() {

	// Перебираем все опции
	$.each($options_required,function(product_option_id, required) {

		if ($options_type[product_option_id] == "select") {

			// Получаем элемент в котором устанавливается класс обязательной опции
			$form = $('select[name="option['+product_option_id+']"]').parents("div.form-group");

			// Если опция должна быть обязательной, а она не содержит класс "required", устанавливает этот класс или наоборот убираем его
			if (required && !$form.hasClass("required")) {
				$form.addClass("required");
			} else if (!required && $form.hasClass("required")) {
				$form.removeClass("required");
			}

		} else {

			// Получаем элемент в котором устанавливается класс обязательной опции
			$form = $('input[name="option['+product_option_id+']"]').parents("div.form-group");

			// Если опция должна быть обязательной, а она не содержит класс "required", устанавливает этот класс или наоборот убираем его
			if (required && !$form.hasClass("required")) {
				$form.addClass("required");
			} else if (!required && $form.hasClass("required")) {
				$form.removeClass("required");
			}
		}
	});
} // checkRequired()

//------------------------------------------------------------------------------------------------------------------------------
// Функция возвращает выбранные опции значений в виде объекта
// Возвращает $option_values - объект с опция и значениями
function getOptionValues() {
	var $option_values = {};

	// Перебираем опции в том порядке в каком они заданы на сайте
	$.each(options_order,function(index, product_option_id) {

		if ($options_type[product_option_id] == 'select') {
			// Если опция типа select
			$option_values[product_option_id] = $('select[name="option['+product_option_id+']"] :selected').val();

		} else {
			// Если опция типа input
			$option_values[product_option_id] = $('input[name="option['+product_option_id+']"]:checked').val();
		}
	});
	return $option_values;
} // getOptionValues()

//------------------------------------------------------------------------------------------------------------------------------
// Функция по выбранным опциям возвращает product_feature_id
// $option_values - объект с опциями и значений
// Возвращает ид характеристики, если вариант выбранныхопций не существует ни в одной характеристики, то вернет 0
function getProductFeature($option_values) {
	var new_product_feature_id = 0;
	$.each($options,function(feature_id, $product_options) {

		// Количество совпадений
		var matches = 0;

		// Перебираем все опции характеристики
		$.each($product_options,function(product_option_id, product_option_value_id) {

			// Ищем совпадение значений
			if ($option_values[product_option_id] == product_option_value_id) {
				matches ++;
			}
		});

		// Если совпали все опции
		if (matches == options_order.length) {

			// Сохраним значение характеристики где совпали все опции
			new_product_feature_id = feature_id;

			// Прервем цикл
			return false;
		}
	});

	return new_product_feature_id;
} // getProductFeature()

//------------------------------------------------------------------------------------------------------------------------------
// Функция устанавливает доступность опции типа input и ее значения
// current_product_option_value_id - текущее выбранное значение опции
// current_option_id - текущая опция в которой выбрано значение
// $option_values - объект в котором заданы все значения опций текущей характеристики
// Возвращает значение текущей опции
function setAccessInputOption(current_option_id, current_product_option_value_id, $option_values) {
	var val = 0;
	var required = false;

	// Перебираем все значения опций
	$('div#input-option'+current_option_id+' div label input').each(function(index){

		// Если в классе не содержится значение выбранной опции, то отключаем эту опцию и снимаем флажок
		if (!$(this).hasClass(current_product_option_value_id) && (current_product_option_value_id)) {
			$(this).attr("disabled",true);
			$(this).prop("checked",false);

		} else {

			required = true;

			// Включаем,если была отключена ранее
			$(this).attr("disabled",false);

			// Если есть в варианте текущее значение опции
			if ($option_values[current_option_id] == $(this).val()) {

				// И еще не выбрано значение
				if (!val) {
					val = $(this).val();
					$(this).prop("checked",true);
				} else {
					// Если значение уже было установлено, то с других опций снимаем выбор
					$(this).prop("checked",false);
				}
			} else {
				// Если вариант не содержит значение, снимаем выбор
				$(this).prop("checked",false);
				//$(this).attr("disabled",true);
			}
		}

	});
	$options_required[current_option_id] = required;
	return val;
} // setAccessSelectOption()

//------------------------------------------------------------------------------------------------------------------------------
// Функция устанавливает доступность опции типа select и ее значения
// current_product_option_value_id - текущее выбранное значение опции
// current_option_id - текущая опция в которой выбрано значение
// $option_values - объект в котором заданы все значения опций текущей характеристики
// Возвращает значение текущей опции
function setAccessSelectOption(current_option_id, current_product_option_value_id, $option_values) {
	var val = 0;
	var required = false;

	// Перебираем все значения опций
	$('select#input-option'+current_option_id+' option').each(function(index){

		// Если в классе не содержится значение выбранной опции,
		// и есть само значение и не первое, тогда отключаем эту опцию и снимаем флажок
		if (!$(this).hasClass(current_product_option_value_id) && (current_product_option_value_id) && index > 0) {
			$(this).attr("disabled",true);
			$(this).prop("selected",false);
		} else {

			required = true;

			// Значение содержится в классе, значит разблокируем если был заблокирован
			$(this).attr("disabled",false);

			// Если не было ранее выбрано значение, и не первое,
			// и в варианте для этой опции есть текущее значение
			if (!val && index > 0 && $option_values[current_option_id] == $(this).val()) {

				// Записываем выбранное значение
				val = $(this).val();

				// Выбираем его в селекте
				$(this).prop("selected",true);
			}
		}
	});
	$options_required[current_option_id] = required;
	return val;
} // setAccessSelectOption()

//------------------------------------------------------------------------------------------------------------------------------
// Функция устанавливает доступность опций и их значений
// current_product_option_value_id - текущее выбранное значение опции
// current_option_id - текущая опция в которой выбрано значение
// $option_values - объект в котором заданы все значения опций текущей характеристики
// Возвращает объект $option_values, теоретически он не меняется, оставлено временно для тестирования
function setAccessOptions(current_product_option_value_id, current_option_id, $option_values) {

	// Выберем опции по варианту
	$.each(options_order,function(index, product_option_id) {

		if (current_option_id == product_option_id) {
			$option_values[product_option_id] = current_product_option_value_id;
		} else {
			if ($options_type[product_option_id] == 'select') {

				// Установим доступность значений в опции типа select
				//$option_values[product_option_id] = setAccessSelectOption(product_option_id, current_product_option_value_id, $option_values);
				setAccessSelectOption(product_option_id, current_product_option_value_id, $option_values);
			} else {

				// Установим доступность значений в опции типа input
				//$option_values[product_option_id] = setAccessInputOption(product_option_id, current_product_option_value_id, $option_values);
				setAccessInputOption(product_option_id, current_product_option_value_id, $option_values);
			}
		}
	});

	return $option_values;
} // setAccessOptions()

//------------------------------------------------------------------------------------------------------------------------------
// Функция получает первый вариант опция по выбранному значению одной из опций
// product_option_value_id - значение выбранной опции
// Возвращает объект (index = product_option_id, value = product_option_value_id)
function getRightOption(product_option_value_id) {

	// Тут хранится вариант опций выбранной характеристики
	var $option_values = {};

	// Перебирем все опции
	$.each($options, function(sel_product_feature_id, $product_options) {

		// Прервем цикл, если ид характеристики уже определена
		if (product_feature_id) {
   			return false;
   		}

		// Перебираем все опции характеристики
		$.each($product_options, function(option_id, sel_product_option_value_id) {

			// Если значение неопределено, берем первую попавшуюся характеристику
			if (product_option_value_id == undefined) {

				// Запишем id характеристики, чтобы потом передать ее в корзину
				product_feature_id = sel_product_feature_id;

				// Получим вариант опций и значений этой характеристики
				$option_values = $product_options;

				// Прервем цикл
				return false;
			}

			// Если совпало значение опции в первой попавшейся характеристики, тогда выбираем ее, и получаем остальные значения опций
    		else if (sel_product_option_value_id == product_option_value_id) {

				// Запишем id характеристики, чтобы потом передать ее в корзину
				product_feature_id = sel_product_feature_id;

				// Получим вариант опций и значений этой характеристики
				$option_values = $product_options;

				// Прервем цикл
				return false;
    		}
   		});

	});

	return $option_values;
} // getRightOption()

//------------------------------------------------------------------------------------------------------------------------------
// Функция вызывается при изменении любой опции
// current_option_id - это номер опции в которой выбрано значение
// selected - выбранное значение опции, product_option_value_id
// type - тип опции, может иметь значение: select, input, radio, image
function selectOption(current_option_id, selected, type) {

	// Объект опций с выбранными значениями (index = опция, value = значение)
	var $option_values = {};

	// Получим существующие значения опций
	$option_values = getOptionValues();

	// Проверим вариант и получим id характеристики, если вариант неверный, тогда id = 0
	product_feature_id = getProductFeature($option_values);

	// Если опции не соответствуют ни одной характеристики, выставляем другие опции по первому совпадению в первой найденой характеристики
	if (!product_feature_id) {

		// Получим вариант опции по выбранному значению одной из опций
		// option_values это объект index = product_option_id, value = product_option_value_id
		$option_values = getRightOption(selected);

		// Устанавливает доступность значений всех опций
		setAccessOptions(selected, current_option_id, $option_values);
	}

	// Проверим опции на обязательные
	checkRequired();

	// Отображает выбранные данные
	displaySelect();
}

<?php } ?>
]]></add>
		</operation>
	  
		<operation>
			<search><![CDATA[$(document).ready(function() {]]></search>
			<add position="after"><![CDATA[<?php if ($options) {?>
	// Кнопки очистки опций, под каждый шаблон возможно придется править
	//$('select[name="option[9]"]').parent('div').before('<div class="form-group"><a href="#" id="clear_options">Очистить опции</a></div>');
	$('div#input-option7').parent('div').after('<div class="form-group"><a href="#" id="clear_options">Очистить опции</a></div>');
	//$('div#form-group').parent('div').after('<div class="form-group"><a href="#" id="clear_options">Очистить опции</a></div>');

	$('#product').find('h3').after('<div class="form-group"><a href="#" id="clear_options">Очистить опции</a></div>');

<?php foreach ($options as $option) { ?>
	//------------------------------------------------------------------------------------------------------------------------------
	// Функция обрабатывает значение при выборе опции
<?php
	$select_type = $option['type'] == "select" ? "select" : "input";
	$html = "	$('".$select_type."[name=\"option[".$option['product_option_id']."]\"]').change(function(){\n";
	$html .= "		var selected = ".($select_type  == "select" ? "$(':selected', this).val();" : "this.value;") . "\n";
	$html .= "		selectOption(".$option['product_option_id'].",selected,'".$select_type."');\n";
	$html .= "	});\n\n";
	echo $html;
	} ?>
	$('#product').on('click', '#clear_options', function(e){
		e.preventDefault();
		clearOptions();
	});

	selectOption();

<?php } ?>
]]></add>
		</operation>
  </file>

</modification>

 

 

  • +1 2
Надіслати
Поділитися на інших сайтах

Kirillove, затираются картинки товаров если не ставлю галочки "выгружать картинки" в 1с, это недочет моей версии 1.6.3.6  или так задумано?
В последней версии модуля это исправлено? если да, то какие примерно строки нужно заменить

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

Отправлено с моего Power Five Evo через Tapatalk

  • +1 2
Надіслати
Поділитися на інших сайтах

13 hours ago, Kirillove said:

Для версии 2.3 найдена ошибка при выводе общего остатка по всем складам...

Возможно это она вылезла. Уже исправлена 1.6.3.11

Но у меня версия 2.1.0.2 (rs.1)

Надіслати
Поділитися на інших сайтах


13 hours ago, Kirillove said:

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

Попробую, но опять же, обмен минимальный.

 

А вот собственно ошибка которая заполняет файл error.log

2017-06-03 19:18:13 - PHP Notice:  Undefined variable: dir in /admin/model/tool/exchange1c.php on line 3091
2017-06-03 19:18:13 - PHP Warning:  readdir() expects parameter 1 to be resource, null given in /admin/model/tool/exchange1c.php on line 3091

 

Надіслати
Поділитися на інших сайтах


В 02.06.2017 в 18:57, SusereN сказал:

Доброго дня.

Обновился на 1.6.3.10, выгрузка не проходит. Гружу вручную, получаю ошибку

 

Снимок.JPG

 

Откатился на 3.9 - всё успешно

Нашел ошибку, перед этой строчкой вставь :
для opencart 2.1:

		$this->load->model('tool/exchange1c');

для opencart 2.3

		$this->load->model('extension/exchange1c');

И там далее в этой функции есть такая же строчка, ее удалите

  • +1 1
Надіслати
Поділитися на інших сайтах

Большое спасибо за проделанную работу. Настроил выгрузку из Управление производственным предприятием 1.3 (1.3.89.1). Версия модуля 1.6.3.10.

Почему-то не всегда вставляются описания к товарам. Методом проб и ошибок нашел нижеприведенный код. 

Вывел в лог $this->log($this->ERROR) - пустое значение, но SEO был сгенерирован.

В чем ошибка не разобрался, просто закомментировал //if ($this->ERROR) return false;


		// SEO формируем когда известен product_id и товар записан
		$update = $this->seoGenerateProduct($data);
		//if ($this->ERROR) return false;

		if ($update || $new) {
			// Обновляем описание товара после генерации SEO
			$this->setProductDescription($data, $new);
		}

 		return true;

 	} // setProduct()

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

 

Надіслати
Поділитися на інших сайтах


Всем доброго дня.

Автору огромное спасибо за проделанную работу!! 

Теперь, собственно вопрос:

ocStore 2.1.0.2 скачал и поставил  opencart2.1-exchange1c_1.6.3.10.ocmod. После установки открыл товары и сразу получил ошибку

Undefined index: affiliate_commission in /var/www/admin/www/dev2.ru/vqmod/vqcache/vq2-system_storage_modification_admin_controller_catalog_product.php on line 486

 

Почистил кэш vqmod/vqcache. Не помогло

 

Пожалуйста, подскажите, в чем может быть проблема?

Змінено користувачем uvers
Надіслати
Поділитися на інших сайтах


Виталий, добрый день, нужна помощь

что эначит эта ошибка ?

версия последняя 1.6.3.10

1С Управление нашей фирмой, редакция 1.6 (1.6.10.43) 

 

2017-06-05 15:43:42 - 3.830 Mb | 7121 | >>>>>>>>>>>>>>>>>>>> НАЧАЛО ЗАГРУЗКИ ДАННЫХ <<<<<<<<<<<<<<<<<<<<
2017-06-05 15:43:42 - PHP Unknown:  Object of class LibXMLError could not be converted to string in /var/www/*******/data/www/**********.ru/admin/model/tool/exchange1c.php on line 7137
2017-06-05 15:43:42 - 3.832 Mb | 7138 | Ошибка при загрузке файла: /var/www/*******/data/www/***********.ru/system/storage/cache/exchange1c/import.xml
2017-06-05 15:43:42 - 3.832 Mb | 0036 | Файл не является стандартом XML, подробности в журнале

2017-06-05 15:43:42 - modeImport(): Ошибка загрузки файла: /var/www/form/data/www/test.form-m.ru/system/storage/cache/exchange1c/import.xml

Змінено користувачем Blade
  • +1 1
Надіслати
Поділитися на інших сайтах


Здравствуйте!

Очень нужна помощь!

При установке модуля 1.6.3.10 выдает ошибку!

Модуль был установлен, но после обновления все пошло наперекосяк, решил снести и установить снова, результат плачевный.... теперь вообще не могу установить модуль!

Движок 2.3 

вот лог сайта

[Mon Jun 05 19:43:14.234928 2017] [:error] [pid 8896] [client 78.29.9.4:34940] PHP Fatal error:  Uncaught exception 'Exception' with message 'Error: Duplicate column name 'product_feature_id'<br />Error No: 1060<br />ALTER TABLE  `oc_cart` ADD  `product_feature_id` INT( 11 ) NOT NULL DEFAULT 0 AFTER  `option`' in /home/c/xxx/public_html/system/library/db/mysqli.php:40\nStack trace:\n#0 /home/xxx/xxx/public_html/system/library/db.php(16): DB\\MySQLi->query('ALTER TABLE  `o...', Array)\n#1 /home/c/xxx/public_html/admin/controller/extension/module/exchange1c.php(812): DB->query('ALTER TABLE  `o...')\n#2 [internal function]: ControllerExtensionModuleExchange1c->install(Array)\n#3 /home/c/xxx/public_html/vqmod/vqcache/vq2-system_storage_modification_system_engine_action.php(51): call_user_func_array(Array, Array)\n#4 /home/c/xxx/public_html/vqmod/vqcache/vq2-system_storage_modification_system_engine_loader.php(24): Action->execute(Object(Registry), Array)\n#5 /home/c/xxx/public_html/admin/contro in /home/c/xxx/public_html/system/library/db/mysqli.php on line 40, referer: http://xxx/admin/index.php?route=extension/extension&token=3bmKhu87YSMU5NFbaAY2ceApVUb7Wo1j

Помогите кто знает как решить, буду очень признателен!

Надіслати
Поділитися на інших сайтах


1 час назад, rutskoifp сказал:

Здравствуйте!

Очень нужна помощь!

При установке модуля 1.6.3.10 выдает ошибку!

Модуль был установлен, но после обновления все пошло наперекосяк, решил снести и установить снова, результат плачевный.... теперь вообще не могу установить модуль!

Движок 2.3 

вот лог сайта

[Mon Jun 05 19:43:14.234928 2017] [:error] [pid 8896] [client 78.29.9.4:34940] PHP Fatal error:  Uncaught exception 'Exception' with message 'Error: Duplicate column name 'product_feature_id'<br />Error No: 1060<br />ALTER TABLE  `oc_cart` ADD  `product_feature_id` INT( 11 ) NOT NULL DEFAULT 0 AFTER  `option`' in /home/c/xxx/public_html/system/library/db/mysqli.php:40\nStack trace:\n#0 /home/xxx/xxx/public_html/system/library/db.php(16): DB\\MySQLi->query('ALTER TABLE  `o...', Array)\n#1 /home/c/xxx/public_html/admin/controller/extension/module/exchange1c.php(812): DB->query('ALTER TABLE  `o...')\n#2 [internal function]: ControllerExtensionModuleExchange1c->install(Array)\n#3 /home/c/xxx/public_html/vqmod/vqcache/vq2-system_storage_modification_system_engine_action.php(51): call_user_func_array(Array, Array)\n#4 /home/c/xxx/public_html/vqmod/vqcache/vq2-system_storage_modification_system_engine_loader.php(24): Action->execute(Object(Registry), Array)\n#5 /home/c/xxx/public_html/admin/contro in /home/c/xxx/public_html/system/library/db/mysqli.php on line 40, referer: http://xxx/admin/index.php?route=extension/extension&token=3bmKhu87YSMU5NFbaAY2ceApVUb7Wo1j

Помогите кто знает как решить, буду очень признателен!

Решено!

Удалил все устанавливаемые модулем таблицы, и изменил изменяемые им значение! модуль установился!

Пробуем работать дальше...))))

Единственное, модуль не прописался в админке-во вкладке дополнение!

Выгрузка идет порядка 20 мин, выкрузилось все кроме товаров! (УНФ 1.6.10.44) Для справки товаров около 1000

Змінено користувачем rutskoifp
Надіслати
Поділитися на інших сайтах


Доброго времени суток. А когда планируете 1.6.3.11?

установил 1.6.3.10. обновил на модификатор 1.6.3.11 вами выложенный (не знаю можно ли так :) )

Ошибка та же:

2017-06-05 22:24:30 - PHP Warning:  opendir(/home/***/test/image/cache/import_files/23): failed to open dir: No such file or directory in /home/***/test/admin/model/extension/exchange1c.php on line 3091
2017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 3092
2017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 3092
2017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 3092
2017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 3092
2017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in 

1с УТ3.1 Украина

OcStore ocStore 2.3.0.2.2 Шаблон Демо

Стабильно работает 1.6.3.9 но без присвоения атрибутов

Надіслати
Поділитися на інших сайтах


Решено!
Удалил все устанавливаемые модулем таблицы, и изменил изменяемые им значение! модуль установился!
Пробуем работать дальше...))))
Единственное, модуль не прописался в админке-во вкладке дополнение!
Выгрузка идет порядка 20 мин, выкрузилось все кроме товаров! (УНФ 1.6.10.44) Для справки товаров около 1000

Многовато для 1000 товаров, на моем сервере вроде было не дольше 5 мин, сегодня вечером уже точно выложу 1.6.3.11 и проверим ещё раз вместе. А лог есть? Очень интересно посмотреть что он там долго делает.

Отправлено с моего Power Five Evo через Tapatalk

Надіслати
Поділитися на інших сайтах

Доброго времени суток. А когда планируете 1.6.3.11?
установил 1.6.3.10. обновил на модификатор 1.6.3.11 вами выложенный (не знаю можно ли так [emoji4] )
Ошибка та же:
2017-06-05 22:24:30 - PHP Warning:  opendir(/home/***/test/image/cache/import_files/23): failed to open dir: No such file or directory in /home/***/test/admin/model/extension/exchange1c.php on line 30912017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 30922017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 30922017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 30922017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in /home/***/test/admin/model/extension/exchange1c.php on line 30922017-06-05 22:24:30 - PHP Warning:  readdir() expects parameter 1 to be resource, boolean given in 

1с УТ3.1 Украина
OcStore ocStore 2.3.0.2.2 Шаблон Демо
Стабильно работает 1.6.3.9 но без присвоения атрибутов


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

Отправлено с моего Power Five Evo через Tapatalk

  • +1 1
Надіслати
Поділитися на інших сайтах

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

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.