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

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


Recommended Posts

10 минут назад, Maximis сказал:

 

А проблема собственно в чем, ну не используется эта таблица ну и бог с ней?

 

То есть для того что бы сформировать ссылки ЧПУ у производителей, нужно что бы таблица manufacturer_to_1c содержала "Имя Производителя" верно размышляю ?

 

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


Только что, Espresso.Doktor сказал:

 

То есть для того что бы сформировать ссылки ЧПУ у производителей, нужно что бы таблица manufacturer_to_1c содержала "Имя Производителя" верно размышляю ?

 

 

Не верно, эта таблица существует только для взаимосвязи производителя в 1с с производителем на сайте, в ранних xml использовалась эта таблица, в более поздних версиях она не используется. Собственно, она к ЧПУ и ссылкам никакого отношения не имеет.

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


3 минуты назад, Maximis сказал:

 

Не верно, эта таблица существует только для взаимосвязи производителя в 1с с производителем на сайте, в ранних xml использовалась эта таблица, в более поздних версиях она не используется. Собственно, она к ЧПУ и ссылкам никакого отношения не имеет.

 

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

     * ver 7
     * update 2018-10-14
     * Устанавливаем производителя
     * Ид производителя нужен для XML 2.09 и выше

 

Ну не суть, она не для ЧПУ нужна...

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


Все ЧПУ ссылки находятся в таблице dda_url_alias, функция в которой они генерируются и добавляются для производителей, называется: private function setSeoURL($url_type, $element_id, $element_name, $old_element) 

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

А так все это пальцем в небо,.

 

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


3 години назад, Espresso.Doktor сказав:

 

А в 1С-ке как это реализовано ? 

Можно скрин?

Выгружается Минимальное количество или может Минимальное количество + цена по количеству ?

( например 10 шт по цене 2 монеты/ 25 шт по цене 1,75 монет/ 50 шт по цене 1,5 монет/ 100 шт по 1,25 монет)

Выгружается только минимальное количество, в 1с задано реквизит, "минимальное количество для заказа", которое передается в opencart в соответствующее поле.

В private function parseProductAttributes($xml, &$data) добавлено код, который закомментирован. Это не совсем верно, но меня устраивает

Прихований текст

private function parseProductAttributes($xml, &$data) {

		$product_attributes = array();

		//$this->log($data, 2);
		

		if (empty($this->ATTRIBUTES)) {
			$this->ATTRIBUTES = $this->getAttributes(true);
			$this->ATTRIBUTE_GROUPS = $this->getAttributeGroups();
		}

		// Название элемента с производителем
		$manufacturer_tag = 'Производитель';
		if ($this->config->get('exchange1c_product_manufacturer_tag'))
			$manufacturer_tag = $this->config->get('exchange1c_product_manufacturer_tag');

		foreach ($xml->ЗначенияСвойства as $property) {

			// Ид объекта в 1С
			$attribute_guid 	= (string)$property->Ид;
			$attribute_value 	= htmlspecialchars(trim((string)$property->Значение));

			$this->log('attribute_guid = ' . $attribute_guid, 2);
			$this->log('attribute_value = ' . $attribute_value, 2);

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

			// Загружаем только те что в классификаторе
			if (!isset($this->ATTRIBUTES[$attribute_guid])) {

				$this->log("[i] Свойство не было загружено в классификаторе, Ид = " . $attribute_guid, 2);
				continue;

			} else {

				$attribute = $this->ATTRIBUTES[$attribute_guid];
				$attribute_values = $this->getAttributeValues($attribute['attribute_id']);

				// Проверим, является ли значение Ид, проверим его по связям
				if (isset($attribute_values[$attribute_value])) {
					$attribute_value_guid = $attribute_value;
					$attribute_value 	= $attribute_values[$attribute_value_guid]['name'];
					$attribute_value_id = $attribute_values[$attribute_value_guid]['attribute_value_id'];
				} else {
					$attribute_value_id = 0;
				}
			}

			// Фильтруем по таблице свойств
			$import = true;
			$attributes_filter = $this->config->get('exchange1c_properties');
			if (is_array($attributes_filter)) {

				foreach ($attributes_filter as $attr_filter) {

					if ($attr_filter['name'] != $attribute['name']) {
						continue;
					}

					if (!isset($attr_filter['import'])) {
						$import = false;
					}

					if ($attr_filter['product_field_name'] == '') {

						$this->log("Свойство отключено: '" . $attr_filter['name'] . "'", 2);
						break;

					} // $attr_filter['product_field_name'] == ''

				} // foreach

			} // is_array($attributes_filter)

			switch ($attribute['name']) {
				
				case 'Производитель':
					$this->log("Производитель из свойства: 'Производитель'");

					// Устанавливаем производителя из свойства если только он не был ранее прочитан
					if ($this->config->get('exchange1c_product_manufacturer_no_change') != 1 && empty($data['manufacturer'])) {

						$data['manufacturer_name']	= $attribute_value;
						$data['manufacturer_id'] 	= $this->setManufacturer($data['manufacturer_name']);

					}
				break;

				case $manufacturer_tag:
					$this->log("Производитель из свойства: '" . $manufacturer_tag . "'");

					// Устанавливаем производителя из свойства если только он не был ранее прочитан
					if ($this->config->get('exchange1c_product_manufacturer_no_change') != 1 && empty($data['manufacturer'])) {

						$data['manufacturer_name']	= $attribute_value;
						$data['manufacturer_id'] 	= $this->setManufacturer($data['manufacturer_name']);

					}
				break;

				case 'Вес':
					$this->log("Вес из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['weight'] = str_replace($search, $replace, $attribute_value);
				break;

				case 'Длина':
					$this->log("Длина из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['length'] = str_replace($search, $replace, $attribute_value);
				break;

				case 'Ширина':
					$this->log("Ширина из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['width'] = str_replace($search, $replace, $attribute_value);
				break;

				case 'Высота':
					$this->log("Высота из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['height'] = str_replace($search, $replace, $attribute_value);
				break;
				// 'Мінімальне замовлення'- заменить на то значение которое задано у Вас в 1с
				//case 'Мінімальне замовлення':
				//	$this->log("Минимальный заказ из свойства");
				//	$search = array(',', ' ');
				//	$replace = array('.', '');
				//	$data['minimum'] = str_replace($search, $replace, $attribute_value);
				//break;

				default:
					if ($import) {
						$product_attributes[] = array(
							'attribute_id'			=> $attribute['attribute_id'],
							'value'					=> $attribute_value
						);
						$this->log("Свойство '" . $attribute['name'] . "' = '" . $attribute_value . "'", 2);
					}
			}
		} // foreach

		$data['attributes'] = $product_attributes;

	} // parseProductAttributes()

 

 

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


8 часов назад, yaroslav_29 сказал:

Выгружается только минимальное количество, в 1с задано реквизит, "минимальное количество для заказа", которое передается в opencart в соответствующее поле.

В private function parseProductAttributes($xml, &$data) добавлено код, который закомментирован. Это не совсем верно, но меня устраивает

  Скрыть контент


private function parseProductAttributes($xml, &$data) {

		$product_attributes = array();

		//$this->log($data, 2);
		

		if (empty($this->ATTRIBUTES)) {
			$this->ATTRIBUTES = $this->getAttributes(true);
			$this->ATTRIBUTE_GROUPS = $this->getAttributeGroups();
		}

		// Название элемента с производителем
		$manufacturer_tag = 'Производитель';
		if ($this->config->get('exchange1c_product_manufacturer_tag'))
			$manufacturer_tag = $this->config->get('exchange1c_product_manufacturer_tag');

		foreach ($xml->ЗначенияСвойства as $property) {

			// Ид объекта в 1С
			$attribute_guid 	= (string)$property->Ид;
			$attribute_value 	= htmlspecialchars(trim((string)$property->Значение));

			$this->log('attribute_guid = ' . $attribute_guid, 2);
			$this->log('attribute_value = ' . $attribute_value, 2);

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

			// Загружаем только те что в классификаторе
			if (!isset($this->ATTRIBUTES[$attribute_guid])) {

				$this->log("[i] Свойство не было загружено в классификаторе, Ид = " . $attribute_guid, 2);
				continue;

			} else {

				$attribute = $this->ATTRIBUTES[$attribute_guid];
				$attribute_values = $this->getAttributeValues($attribute['attribute_id']);

				// Проверим, является ли значение Ид, проверим его по связям
				if (isset($attribute_values[$attribute_value])) {
					$attribute_value_guid = $attribute_value;
					$attribute_value 	= $attribute_values[$attribute_value_guid]['name'];
					$attribute_value_id = $attribute_values[$attribute_value_guid]['attribute_value_id'];
				} else {
					$attribute_value_id = 0;
				}
			}

			// Фильтруем по таблице свойств
			$import = true;
			$attributes_filter = $this->config->get('exchange1c_properties');
			if (is_array($attributes_filter)) {

				foreach ($attributes_filter as $attr_filter) {

					if ($attr_filter['name'] != $attribute['name']) {
						continue;
					}

					if (!isset($attr_filter['import'])) {
						$import = false;
					}

					if ($attr_filter['product_field_name'] == '') {

						$this->log("Свойство отключено: '" . $attr_filter['name'] . "'", 2);
						break;

					} // $attr_filter['product_field_name'] == ''

				} // foreach

			} // is_array($attributes_filter)

			switch ($attribute['name']) {
				
				case 'Производитель':
					$this->log("Производитель из свойства: 'Производитель'");

					// Устанавливаем производителя из свойства если только он не был ранее прочитан
					if ($this->config->get('exchange1c_product_manufacturer_no_change') != 1 && empty($data['manufacturer'])) {

						$data['manufacturer_name']	= $attribute_value;
						$data['manufacturer_id'] 	= $this->setManufacturer($data['manufacturer_name']);

					}
				break;

				case $manufacturer_tag:
					$this->log("Производитель из свойства: '" . $manufacturer_tag . "'");

					// Устанавливаем производителя из свойства если только он не был ранее прочитан
					if ($this->config->get('exchange1c_product_manufacturer_no_change') != 1 && empty($data['manufacturer'])) {

						$data['manufacturer_name']	= $attribute_value;
						$data['manufacturer_id'] 	= $this->setManufacturer($data['manufacturer_name']);

					}
				break;

				case 'Вес':
					$this->log("Вес из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['weight'] = str_replace($search, $replace, $attribute_value);
				break;

				case 'Длина':
					$this->log("Длина из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['length'] = str_replace($search, $replace, $attribute_value);
				break;

				case 'Ширина':
					$this->log("Ширина из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['width'] = str_replace($search, $replace, $attribute_value);
				break;

				case 'Высота':
					$this->log("Высота из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['height'] = str_replace($search, $replace, $attribute_value);
				break;
				// 'Мінімальне замовлення'- заменить на то значение которое задано у Вас в 1с
				//case 'Мінімальне замовлення':
				//	$this->log("Минимальный заказ из свойства");
				//	$search = array(',', ' ');
				//	$replace = array('.', '');
				//	$data['minimum'] = str_replace($search, $replace, $attribute_value);
				//break;

				default:
					if ($import) {
						$product_attributes[] = array(
							'attribute_id'			=> $attribute['attribute_id'],
							'value'					=> $attribute_value
						);
						$this->log("Свойство '" . $attribute['name'] . "' = '" . $attribute_value . "'", 2);
					}
			}
		} // foreach

		$data['attributes'] = $product_attributes;

	} // parseProductAttributes()

 

 

 

Сделал согласной Вашему коду, получилось следующее:

 

Спойлер

957ed02718.jpg

 

А мне нужно загнать данную цифру в закладку дата:

Спойлер

e861166f5b.jpg

 

То есть мне нужно что бы записало это значение в таблицу oc_product в 'minimum'

 

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


9 часов назад, Maximis сказал:

 

Понятно, что ничего не понятно. 

Можно по пунктам?

1. Появился заказ на сайте, он выгрузился в 1С.

2. Модифицировали заказ на сайте, ...

 

и т.д. 

 

1. Появился заказ на сайте, либо старый заказ модифицировали. У заказа по идее меняется дата последней модификации. К примеру, был заказ от 01.01.21. Сегодня внесли изменения, у него дата последней модификации стала к примеру 12.03.21. 

2. В модуле стоят настройки. Выгружать измененные. Выставлена определенная дата. Скрины настроек прикрепляю. К примеру стоит изначально выгружать заказы с 01.03.21

3. После выгрузки заказов в 1с, все заказы, которые были созданы или модифицированы после 01.03.21 улетают в 1с. Выгрузка происходит нормально, тут вопросов нет.

4. По идее в модуле в настройках дата стартовая для выгрузки должна поменяться на дату последнего обмена, к примеру сделал обмен 12.03.21, дата должна стать 12.03.21, и если в промежутке с 12.03.21 до 14.03.21 будут созданы или модифицированы еще заказы, то модуль должен выгружать заказы только с 12.03.21. Но дата не меняется, она как стоит 01.03.21, так и стоит. И получается модуль выгружает по кругу все заказы начиная с этой даты, даже если они не были модифицированы. А это сказывается на времени каждой выгрузки.

 

Я не знаю в чем причина, возможно я не так понимаю эту настройку модуля.

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


34 минуты назад, stelstima сказал:

 

1. Появился заказ на сайте, либо старый заказ модифицировали. У заказа по идее меняется дата последней модификации. К примеру, был заказ от 01.01.21. Сегодня внесли изменения, у него дата последней модификации стала к примеру 12.03.21. 

2. В модуле стоят настройки. Выгружать измененные. Выставлена определенная дата. Скрины настроек прикрепляю. К примеру стоит изначально выгружать заказы с 01.03.21

3. После выгрузки заказов в 1с, все заказы, которые были созданы или модифицированы после 01.03.21 улетают в 1с. Выгрузка происходит нормально, тут вопросов нет.

4. По идее в модуле в настройках дата стартовая для выгрузки должна поменяться на дату последнего обмена, к примеру сделал обмен 12.03.21, дата должна стать 12.03.21, и если в промежутке с 12.03.21 до 14.03.21 будут созданы или модифицированы еще заказы, то модуль должен выгружать заказы только с 12.03.21. Но дата не меняется, она как стоит 01.03.21, так и стоит. И получается модуль выгружает по кругу все заказы начиная с этой даты, даже если они не были модифицированы. А это сказывается на времени каждой выгрузки.

 

Я не знаю в чем причина, возможно я не так понимаю эту настройку модуля.

 

Извиняюсь, у Вас сделанный и отправленный заказ покупателем, покупатель может редактировать заказ, после того как он вылетел в 1С-ку ? :oops:  

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


22 минуты назад, Espresso.Doktor сказал:

 

Извиняюсь, у Вас сделанный и отправленный заказ покупателем, покупатель может редактировать заказ, после того как он вылетел в 1С-ку ? :oops:  

 

Не покупателем, менеджер может редактировать заказ. Удалить позицию, добавить, цену поменять и тд. Модуль Orderpro. 

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


47 минут назад, stelstima сказал:

 

Не покупателем, менеджер может редактировать заказ. Удалить позицию, добавить, цену поменять и тд. Модуль Orderpro. 

 

А почему менеджер не редактирует заказ в 1С-ке, и потом выгрузить измененный заказ на сайт ? 

 

Я вот тоже голову ломаю, над разными сценариями "редактирования заказа", правда еще пытаюсь CRM прикрутить в этот процесс, и голова идет кругом.

 

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


3 часа назад, stelstima сказал:

Забыл скрины

выгрузка заказов.jpg

выгрузка заказов 2.jpg

 

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

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

На сколько это будет корректно исходя из логики модуля, не совсем понятно.

Рекомендую для начала использовать эти статусы, что в итоге получится?

 

А так вот в этом файле admin\controller\extension\module\exchange1c.php

есть функция public function modeOrdersChangeStatus()

В этой функции есть вот такие вот строки(комментированные строки, это мои пояснения для вашего понимания):

 

        // В этом месте вызывается функция, которая меняет статусы у новых заказов и возвращает результат в виде булево:

        // Ложь - когда статус выгруженных заказов не используется.

        // Истина - когда все отработало.

        $result = $this->model_extension_exchange1c->queryOrdersChangeStatus($orders_export);

 

        // А вот в этом месте, как раз идет проверка результата отработанной выше функцией

        // если Истина, тогда условие проходит проверку и дата модификации в настройках меняется на текущую дату

        // если Лож, тогда дата модификации в настройках не меняется.         

        if($result){

            $this->load->model('setting/setting');
            $config = $this->model_setting_setting->getSetting('exchange1c');
            $config['exchange1c_order_date'] = date('Y-m-d H:i:s');
            $this->model_setting_setting->editSetting('exchange1c', $config);
            $config['exchange1c_order_date'] = $this->config->get('exchange1c_order_date');
        }

 

Соответственно, если закомментировать условие, тогда дата модификации будет меняться всегда, после выгрузки:

        //if($result){

            $this->load->model('setting/setting');
            $config = $this->model_setting_setting->getSetting('exchange1c');
            $config['exchange1c_order_date'] = date('Y-m-d H:i:s');
            $this->model_setting_setting->editSetting('exchange1c', $config);
            $config['exchange1c_order_date'] = $this->config->get('exchange1c_order_date');
        //}

 

Надеюсь объяснил понятно...

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


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

И соответственно очень мало документации.

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

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


7 годин назад, Espresso.Doktor сказав:

 

Сделал согласной Вашему коду, получилось следующее:

 

  Приховати вміст

957ed02718.jpg

 

А мне нужно загнать данную цифру в закладку дата:

  Приховати вміст

e861166f5b.jpg

 

То есть мне нужно что бы записало это значение в таблицу oc_product в 'minimum'

 

а розкоментувалы код который я сбросил?

Прихований текст

// 'Мінімальне замовлення'- заменить на то значение которое задано у Вас в 1с
				case 'Мінімальне замовлення':
					$this->log("Минимальный заказ из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['minimum'] = str_replace($search, $replace, $attribute_value);
				break;

 

 

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


В 08.03.2021 в 16:20, Espresso.Doktor сказал:

 

Вопрос, как правильно прописать, на хостинге парень на суппорте не осилил.

 

Я сам нгесколько дней мучался.
В результате запустилось вот так.
На хостинге убираем перенаправление на https, потому что оно перенаправляет абсолютно все запросы на https.
Дальше нам нужно в .htaccess сделать перенаправление всего сайта на https, кроме папки /export/
Куча вариантов давали постоянное перенаправление в браузере. заработал реально только вот такой код
 

------
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/


RewriteCond %{ENV:HTTPS} !on
RewriteCond %{THE_REQUEST} !/export/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]



RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
--------

Все что выше RewriteEngine On и ниже RewriteBase / обрезал - это стандартный .htaccess
Ну и на всякий случай в .htaceess в папке /export/ добавил строки
 

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}

После этого весь сайт открывается по https а обмер запускается по http

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


Буду благодарен если подскажете почему может не импортировтаься в 1С список заказов из сайта.
При этом из 1С все товары выгрузились, но в 1С пишет что
"Ответ сервера:
modeFileSale (): no XML files
Обмен заказами завершен с ошибками!!"
При этом в логах вот такое
 

2021-03-12 11:27:41 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:27:41 - site.ru/export/exchange1c.php?type=sale&mode=checkauth
2021-03-12 11:27:42 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:27:42 - site.ru/export/exchange1c.php?type=sale&mode=query
2021-03-12 11:27:42 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:27:42 - site.ru/export/exchange1c.php?type=sale&mode=success
2021-03-12 11:27:42 - Строка ошибки: 5946 - error_2101_log
2021-03-12 11:31:28 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:31:28 - site.ru/export/exchange1c.php?type=sale&mode=checkauth
2021-03-12 11:31:29 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:31:29 - site.ru/export/exchange1c.php?type=sale&mode=init
2021-03-12 11:31:35 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:31:35 - site.ru/export/exchange1c.php?type=sale&mode=file&filename=1cbitrix-a5a4e335-39c4-49e5-9b95-4e3fc892e877.xml

Первый раз настраиваю обмен.
У заказчика на старом сайте (опенкарт 1.5.4) обмен проходит нормально, значит, по-идее, в самой 1С все настроено нормально.
Скорее всего что-то не так в настройках модуля включил.
 

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


37 минут назад, yvv75 сказал:

Буду благодарен если подскажете почему может не импортировтаься в 1С список заказов из сайта.
При этом из 1С все товары выгрузились, но в 1С пишет что
"Ответ сервера:
modeFileSale (): no XML files
Обмен заказами завершен с ошибками!!"
При этом в логах вот такое
 


2021-03-12 11:27:41 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:27:41 - site.ru/export/exchange1c.php?type=sale&mode=checkauth
2021-03-12 11:27:42 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:27:42 - site.ru/export/exchange1c.php?type=sale&mode=query
2021-03-12 11:27:42 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:27:42 - site.ru/export/exchange1c.php?type=sale&mode=success
2021-03-12 11:27:42 - Строка ошибки: 5946 - error_2101_log
2021-03-12 11:31:28 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:31:28 - site.ru/export/exchange1c.php?type=sale&mode=checkauth
2021-03-12 11:31:29 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:31:29 - site.ru/export/exchange1c.php?type=sale&mode=init
2021-03-12 11:31:35 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-03-12 11:31:35 - site.ru/export/exchange1c.php?type=sale&mode=file&filename=1cbitrix-a5a4e335-39c4-49e5-9b95-4e3fc892e877.xml

Первый раз настраиваю обмен.
У заказчика на старом сайте (опенкарт 1.5.4) обмен проходит нормально, значит, по-идее, в самой 1С все настроено нормально.
Скорее всего что-то не так в настройках модуля включил.
 

 

Там где лог строки с ошибкой, вызывается функция public function modeOrdersChangeStatus() из контролера.

Описание функции: * Изменение статусов заказов с момента последней выгрузки и после подтверждения получения торговой системы.

Скорей всего в этой функции по каким то причинам вываливается ошибка и далее мешает обмену.

 

Попробуйте поиграться с этими настройками, что то явно с этим связано:

Screenshot_1.png.14ec53d3cddbe4f191fef79f19c4d473.png

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


8 часов назад, Maximis сказал:

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

И соответственно очень мало документации.

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

 

Если быть честным, то я вообще не встречал документацию относительно ни этого модуля обмена и предыдущего с которого этот мод создавался! :cry:

Пока в теме принимал активное участие Автор Kirillove, было куда веселей читать.

Реально только тут на форуме, есть подсказки где что поправить и что подпилить.  :oops:

 

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


  

6 минут назад, Espresso.Doktor сказал:

 

Если быть честным, то я вообще не встречал документацию относительно ни этого модуля обмена и предыдущего с которого этот мод создавался! :cry:

Пока в теме принимал активное участие Автор Kirillove, было куда веселей читать.

Реально только тут на форуме, есть подсказки где что поправить и что подпилить.  :oops:

 

 

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

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

Что касается развития модуля, вот тут интересно, автор поднял свой свой сайт и на эту ветку походу забил, ну его право..

Тут тоже хватает людей, которые хотят чтоб все взлетело по щелчку пальца не разбираясь и еще требовать от автора им все сделать(Яб охренел от такой наглости).. :D

Грубо говоря слежу за этой веткой в течении нескольких лет и читаю каждое сообщение, просто интересно наблюдать.

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

Я щас на больничном сижу дома, от нечего делать и скуки пытаюсь помочь, надеюсь помог кому-нибудь, ну если не помог, извините.

Тут какой плюс, что для обмена не нужно что-то писать на стороне 1с, но есть в этом и минус, что встроенный обмен в 1с очень ограничен.

Мне все это очень жутко интересно, поэтому вечерами, открываю ветку и читаю:)

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


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

а розкоментувалы код который я сбросил?

  Скрыть контент


// 'Мінімальне замовлення'- заменить на то значение которое задано у Вас в 1с
				case 'Мінімальне замовлення':
					$this->log("Минимальный заказ из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['minimum'] = str_replace($search, $replace, $attribute_value);
				break;

 

 

 

У меня так прописано в файле :

 

//Мінімальна кількість в упаковці (замовлення на сайте), кількість задаємо у 1С;

			    case 'Кількість в упаковці':
					$this->log("Мінімальна кількість в упаковці из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['minimum'] = str_replace($search, $replace, $attribute_value);
				break;

 

А ось так выглядит в файле import.xml :

 

<ЗначенияСвойств>
					<ЗначенияСвойства>
						<Ид>f4bbb133-81de-11eb-8219-06255c25ce9f</Ид>
						<Значение>5</Значение>
					</ЗначенияСвойства>
				</ЗначенияСвойств>

 

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


У вас в 1с свойство называется "Кількість в упаковці" ?

Смысл в том, что в 1С свойство должно называться точно так же, как вы прописываете его в названии в коде 

case 'Кількість в упаковці':
Змінено користувачем Maximis
  • +1 1
Надіслати
Поділитися на інших сайтах


1 годину назад, Espresso.Doktor сказав:

 

У меня так прописано в файле :

 


//Мінімальна кількість в упаковці (замовлення на сайте), кількість задаємо у 1С;

			    case 'Кількість в упаковці':
					$this->log("Мінімальна кількість в упаковці из свойства");
					$search = array(',', ' ');
					$replace = array('.', '');
					$data['minimum'] = str_replace($search, $replace, $attribute_value);
				break;

 

А ось так выглядит в файле import.xml :

 


<ЗначенияСвойств>
					<ЗначенияСвойства>
						<Ид>f4bbb133-81de-11eb-8219-06255c25ce9f</Ид>
						<Значение>5</Значение>
					</ЗначенияСвойства>
				</ЗначенияСвойств>

 

case 'Кількість в упаковці' Замените на case 'Минимальное количество для заказа'

Должно быть название которое указано у Вас в 1с

 

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


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

case 'Кількість в упаковці' Замените на case 'Минимальное количество для заказа'

Должно быть название которое указано у Вас в 1с

 

Отлично прилетело куда нужно :-o

У меня есть еще админке в карточке товара поле:

 

Спойлер

3ca7afeeac.jpg

 

Как сделать, что при указанном количестве в 1С, по умолчанию прилетало и устанавливало значение '1' в поле 'multipleminimumqty' ? :oops:

 

P.S. Почему-то на форуме нету смайла с пивом :?

 

 

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


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

case 'Кількість в упаковці' Замените на case 'Минимальное количество для заказа'

Должно быть название которое указано у Вас в 1с

 

Исправил, я в 1С-ке это свойство раз 5, если не больше переименовал :grin:

 

2 часа назад, Maximis сказал:

У вас в 1с свойство называется "Кількість в упаковці" ?

Смысл в том, что в 1С свойство должно называться точно так же, как вы прописываете его в названии в коде 


case 'Кількість в упаковці':

 

Уже исправил, уже правильно прилетает в карточку товара :-o

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


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

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

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

Что касается развития модуля, вот тут интересно, автор поднял свой свой сайт и на эту ветку походу забил, ну его право..

Тут тоже хватает людей, которые хотят чтоб все взлетело по щелчку пальца не разбираясь и еще требовать от автора им все сделать(Яб охренел от такой наглости).. :D

Грубо говоря слежу за этой веткой в течении нескольких лет и читаю каждое сообщение, просто интересно наблюдать.

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

Я щас на больничном сижу дома, от нечего делать и скуки пытаюсь помочь, надеюсь помог кому-нибудь, ну если не помог, извините.

Тут какой плюс, что для обмена не нужно что-то писать на стороне 1с, но есть в этом и минус, что встроенный обмен в 1с очень ограничен.

Мне все это очень жутко интересно, поэтому вечерами, открываю ветку и читаю:)

 

Я тоже читаю время от времени, данную тему обмена, что-то пришлось подпилить, что-то нужно будет пилить под свои задачи, а у каждого эти задачи свои.

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

Даже пробовал две цены выгружать, вот только не помню на каком модуле ( старый к 1.5.6 или уже в этом ), на битриксе данная опция только на тарифе Бизнес :grin:

 

Вчера попробовал допилить выгрузку из 1С минимального количества заказа ( кратно упаковки ).

Благодаря подсказке yaroslav_29 уже прилетает из 1С-ки.

В процессе понимаю, что нужно что бы еще активировалась из 1С-ки прилетало и правило кратно количества упаковки.

 

Цитата

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

 

Даже Битрикс из коробки за бОлшие деньги, такого Чуда не делает, нужно наладку делать тоже за бОльшие деньги, по этому лучше самому вникнуть в свободный модуль обмена, потратить время, но вникнуть в суть настроек, понять процесс и усовершенствовать обмен под свои задачи.

Истина всегда где-то рядом, и помним о правиле Осилит дорогу идущий!

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

 

У меня пару дней назад появилась идея перевыложить модуль на GitHub, что бы можно было редактировать как общий форумный проект.

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


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

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

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

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

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

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

Вхід

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

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

Important Information

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