[mSklad] 1.0.7 импорт характеристик (CommerceML 2)


Разбирем новую версию на примерах.


Начну с главного нововведения, импорт характеристик. В компоненте добавилась новая вкладка «Настройка импорта свойств»:

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

Здесь мы настраиваем какие характеристики товаров нам нужно импортировать.
Добавляем новую связь или редактируем существующую.

Поля:
  • «источник» — наименование поля характеристики из файлов import.xml и offers.xml, должно 1в1 совпадать
  • «тип поля» — тип поля куда сохраняем полученные данные(возможные значения «поле msProduct» или «tv»)
  • «цель» — наименование поля товара (должно совпадать с названием колонки в базе данных) или наименование тв параметра
  • чекбокс «активный» — использовать или нет связь при импорте

Новые настройки компонента


  • Добавление к псевдониму id товара (msklad_alias_with_id) — решает проблему с однаковыми псевдонимами, дописывая id товара
  • Создавать tv (msklad_create_properties_tv) — автоматически создаст и заполнит tv параметры для всех возможных характеристик товаров
  • Импортировать все цены (msklad_import_all_prices) — необходим когда в выгрузке offers.xml больше одной цены, настраивается через связи
  • Tv параметр цены с учетом характеристики (msklad_price_by_feature_tv) — tv параметр куда будут выгружены цены предложений одного товара в соответсвии с характеристикой
  • Публиковать товар если есть в наличии (msklad_publish_by_quantity) — публикует или отменяет публикацию в зависимости отналичия
  • Сохранять все свойства товара в одно tv (msklad_save_properties_to_tv) — tv параметр типа текст куда будут выгружаться все полученные характеристики в JSON формате

Первоначальная настройка для работы с CommerceML 2


Желательно перед установкой компонента иметь уже созданную и пустую «Категорию с товарами» компонента miniShop2, тогда при установке моего компонента он автоматически настроится на нее.
В настройках системы, по компоненту мы должны увидить следущее

Необходимо чтобы были заполнены следующие настройки «Id категории каталога (msklad_catalog_root_id)», «Шаблон по умолчанию для новых категорий (msklad_template_category_default)» и «Шаблон по умолчанию для новых товаров (msklad_template_product_default)»

Затем настраиваем синхронизацию
Переходим в компонент и открываем вкладку «Реквизиты синхронизации»

Переписываем параметры в 1с или сервис. Логин и пароль можно задать самостоятельно, через системные настройки.
В 1с «Администрирование» -> «Синхронизация данных» -> «Узлы обмена с сайтами»


Для правильной работы синхронизации, чтобы не было перебоев во время работы, желательно в сестемных настройках параметр «Лимит выполнения» (msklad_time_limit) сделать на пару секунд меньше чем лимит выполнения скриптов на сайте.

Важно!

Если не срабатывает авторизация, для FastCGI создайте файл .htaccess в папке /assets/components/msklad/ и добавьте в него следующие строки:
RewriteCond %{HTTP:Authorization} !^$
RewriteRule ^(.*)$ $1?http_auth=%{HTTP:Authorization} [QSA]


Примеры


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

Вариант 1 — автоматическое добавление характеристик

В системных настройках включаем параметр «Создавать tv»
Производим импорт, и наблюдаем созданные связи и новые tv параметры

В данном случае tv параметр «Размер» явно лишний, так как в miniShop2 уже есть соответсвующее поле, перенастраиваем следующим образом:


Характеристику «Производитель» тоже желательно перенастроить в соответствии с полем miniShop2 vendor, но дополнительно отключим дефолтные связи «Изготовитель» и «Бренд», вот так:

Удаляем ненужные tv и запускаем синхронизацию.

Вариант 2 — добавляем характеристики

Все аналогично предыдущему варианту, но не включаем параметр «Создавать tv» при первой синхронизации.
После первого импорта смотрим файл assets/components/msklad/1c_temp/import.xml
Свойства могут быть как отдельным справочником в теге <Свойства>
<Свойства>
      <Свойство>
        <Ид>76221</Ид>
        <Наименование>Количество скрепок</Наименование>
        <ДляТоваров>1</ДляТоваров>
        <ТипЗначений>Строка</ТипЗначений>
      </Свойство>
      <Свойство>
        <Ид>76223</Ид>
        <Наименование>Размер</Наименование>
        <ДляТоваров>1</ДляТоваров>
        <ТипЗначений>Строка</ТипЗначений>
      </Свойство>
    </Свойства>
тогда для связи характеристик берем значение из поля "<Наименование>" и копируем его в «Источник».

Так и непосредственно в теге товара:
<Товар>
        <Ид>000</Ид>
        <Наименование>Скрепки стальные </Наименование>
        <БазоваяЕдиница Код="9" НаименованиеПолное="упаковка" МеждународноеСокращение="PCE">упак.</БазоваяЕдиница>
        <Артикул>0000</Артикул>
        <Группы>
          <Ид>00000</Ид>
        </Группы>
        <Описание>Доп описание</Описание>
        <ЗначенияСвойств>
          <ЗначенияСвойства>
            <Наименование>Количество скрепок</Наименование>
            <Значение>35</Значение>
          </ЗначенияСвойства>
        </ЗначенияСвойств>
        <ЗначенияРеквизитов>
          <ЗначениеРеквизита>
            <Наименование>ВидНоменклатуры</Наименование>
            <Значение>Товар</Значение>
          </ЗначениеРеквизита>
          <ЗначениеРеквизита>
            <Наименование>ТипНоменклатуры</Наименование>
            <Значение>Товар</Значение>
          </ЗначениеРеквизита>
          <ЗначениеРеквизита>
            <Наименование>Полное наименование</Наименование>
            <Значение>Скрепки стальные </Значение>
          </ЗначениеРеквизита>
          <ЗначениеРеквизита>
            <Наименование>Количество скрепок</Наименование>
            <Значение>25</Значение>
          </ЗначениеРеквизита>
        </ЗначенияРеквизитов>
      </Товар>
В этом случае характеристики импортируются из тегов <ЗначенияСвойств> и <ЗначенияРеквизитов> (дубли объединяются), берем значение из поля "<Наименование>" и копируем его в «Источник».

Вариант 3 — импорт характеристик в одно поле

Создаем новый tv параметр и назначаем его шаблону товара.

В системные настройки, в параметр «Сохранять все свойства товара в одно tv» (msklad_save_properties_to_tv) прописываем название созданного tv.
Запускаем импорт и смотрим что получилось.

Используйте по своему усмотрению.

Вариант 4 — импорт цены определенного типа или нескольких цен товара

Бывают ситуации когда нужно импортировать только определенный тип цены, а по умолчанию импортируется только первая цена.
После первого импорта смотрим файл assets/components/msklad/1c_temp/offers.xml
<ТипыЦен>
      <ТипЦены>
        <Ид>111111</Ид>
        <Наименование>Оптовая</Наименование>
        <Валюта>RUR</Валюта>
        <Налог>
          <Наименование>НДС</Наименование>
          <УчтеноВСумме>true</УчтеноВСумме>
        </Налог>
      </ТипЦены>
      <ТипЦены>
        <Ид>2222222</Ид>
        <Наименование>Розничная</Наименование>
        <Валюта>RUR</Валюта>
        <Налог>
          <Наименование>НДС</Наименование>
          <УчтеноВСумме>true</УчтеноВСумме>
        </Налог>
      </ТипЦены>
    </ТипыЦен>
    <Предложения>
      <Предложение>
        <Ид>aaaaaaaa</Ид>
        <Наименование>Скрепки стальные</Наименование>
        <БазоваяЕдиница Код="9" НаименованиеПолное="упаковка" МеждународноеСокращение="PCE">упак.</БазоваяЕдиница>
        <Цены>
          <Цена>
            <Представление>175 RUR за шт.</Представление>
            <ИдТипаЦены>111111</ИдТипаЦены>
            <ЦенаЗаЕдиницу>175</ЦенаЗаЕдиницу>
            <Валюта>RUR</Валюта>
            <Единица>шт.</Единица>
            <Коэффициент>1</Коэффициент>
          </Цена>
          <Цена>
            <Представление>182.5 RUR за шт.</Представление>
            <ИдТипаЦены>2222222</ИдТипаЦены>
            <ЦенаЗаЕдиницу>182.5</ЦенаЗаЕдиницу>
            <Валюта>RUR</Валюта>
            <Единица>шт.</Единица>
            <Коэффициент>1</Коэффициент>
          </Цена>
        </Цены>
        <Количество>12</Количество>
      </Предложение>
Нас интересует только розничная цена, для ее импорта делаем следующее:
  • включаем системную настройку Импортировать все цены (msklad_import_all_prices)
  • переходим на вкладку «Настройка импорта свойств» в компоненте
  • добавляем новую связь
Для нескольких цен настраиваем аналогично, предварительно создав tv или добавив поля в товар miniShop2

Вариант 5 — импорт цен/наличия для нескольких торговых предложений одного товара

Если в системе установлен и настроен компонент msOptionsPrice, то цены автоматически выгрузятся в него в соответсвии с размерами. Необходимо наличие связи источник «Размер», тип «поле miniShop», цель «size».

Если компонента msOptionsPrice нет, то цены выгрузятся в tv параметр указанный в системной настройка «msklad_price_by_feature_tv» формате 110х120==95||200х200==176||300х300==257, при незаполненной настройке цены не выгружаются.

Наличие в соответствии с характеристикой выгружается при настроенной связи с источником «Количество» в аналогичном формате — 110х120==15||200х200==2||300х300==0.

Плагины


Теперь можно использовать собственные плагины во время синхронизации. Добавлены события «mskladOnProductImport» и «mskladOnProductOffers».

Пример плагина на событие «mskladOnProductImport»

Работаем с объектом $resource и массивом параметров $properties
if ($modx->event->name == 'mskladOnProductImport') {
	//fix series
	if(isset($properties['КатегорияБренда'])){
		$resource->set('series', $properties['КатегорияБренда']);
		$resource->save();
	}
}
return;

Пример плагина «mskladOnProductOffers»

Работаем с объектом $resource.
if ($modx->event->name == 'mskladOnProductOffers'){
	$qt = intval($resource->get('quantity'));
	if($qt) {
		$resource->set('instock', 1);
	}
	else {
		$resource->set('instock', 0);
	}
	$resource->save();
}
return;

Убрано всплывающее окно с реквизитами API МойСклад при установке, изменяется при необходимости через системные настройки.
Александр Рахимов
11 ноября 2014, 13:51
modx.pro
1
10 211
+7

Комментарии: 56

Марк Валерич
11 ноября 2014, 16:57
0
Круто. Наконец-то дошли руки до 1с.
    Sergey Leleko
    11 ноября 2014, 19:56
    0
    на самом деле уже давно :)
    Юрий
    11 ноября 2014, 21:59
    0
    возможно глупый вопрос хочу задать, но
    Александр, написал:

    Если в системе установлен и настроен компонент msOptionsPrice, то цены автоматически выгрузятся в него в соответсвии с размерами. Необходимо наличие связи источник «Размер», тип «поле miniShop», цель «size».

    Так вот вопрос: как можно заменить указанное соответствие с размерами, на тоже соответствие, но с другим(ими) аналогичным(ими) полем(ями), например, вес (weight) или цвет (color)?
      Александр Рахимов
      11 ноября 2014, 22:01
      0
      Настроить msOptionsPrice на поле вес или цвет. Работоспособность не гарантирую, не проверял.
        Юрий
        11 ноября 2014, 22:10
        0
        МОжет получится такое, если в модуле msOptionsPrice указать в параметре msoptionsprice_ms_op_options желаемое поле?
      Юрий
      11 ноября 2014, 22:20
      0
      А планируется ли в скором времени при синхронизации использовать REST API «Мой склад», чтобы можно было импортировать со склада все возможные типы цен (не только три цены, которые максимум возможны при синхронизации в формате CommerceML 2)? Например, их (типов цен) на складе 7 штук, при этом возможно передать 3 из них по формату CommerceML 2, а остальных фактически можно взять только по REST API склада (на данный-то момент).
      Алексей Милов
      11 ноября 2014, 22:46
      0
      Очень крутой компонент. Как раз пригодилась функция обмена характеристиками. Большое спасибо за работу
        Александр Рахимов
        11 ноября 2014, 22:47
        0
        Спасибо. Может пожелания есть какие по доработкам?
          Алексей Милов
          11 ноября 2014, 22:48
          0
          Да пока все устраивает. Этого функционала хватает :)
            Александр Рахимов
            11 ноября 2014, 22:49
            0
            Отлично.
              Алексей Милов
              19 ноября 2014, 00:17
              0
              Александр, у меня такой вопрос.
              В 1С есть свойство — Статус товара со значениями Удален или В наличии. Можно ли как то сделать, чтобы при загрузке, если у номенклатуры у данного свойства значение = Удален — отключать его
            Aliaksandr Katlou
            18 ноября 2014, 23:16
            0
            А можно зеленые кнопочки сделать перламутровыми?
          Андрей
          19 декабря 2014, 13:49
          0
          Доброго времени суток! Наблюдая хронологию изменения и выпуски новых дополнений mSklad, заметил, что из первоначального варианта убрали настройку остатков (msklad_quantity_tv), как сказал мне разработчик она устаревшая уже. При импорте товаров с 1с, в структуре xml тоже не заметил такой величины в настройках, как остаток товара на складе.

          Потому вопросы такие:

          Это вообще присутствует в последней версии mSklad (учет остатков)? Если да, то где можно вести учет остатков товаров?
          Где можно редактировать остатки товаров в 1с? С 1с не работаю, плохо знаю потому обращаюсь за помощью к тем, кто знает.
            Александр Рахимов
            19 декабря 2014, 14:49
            0
            Естественно присутствует, надо создать поле минишопа или тв и настроить связь в компоненте.
            По 1С не подскажу.
            mekirile
            11 февраля 2015, 10:26
            0
            Здравствуйте. Использую связки Мой Склад — MS2 — Msync. Не выгружается характеристика Размер.

            Вот как выглядит товар в Мой Склад prntscr.com/63oon6
            Вот параметры синхронизации prntscr.com/63ooqh
            Настройки модуля prntscr.com/63op6u
            Вот что получаю на сайте prntscr.com/63ooul

            Также пробую выгружать все характеристики в TV — ничего не происходит. Там оказывается пусто. если убираю галочку в настройках синхронизации (Выгружать остатки с учетом характеристик), то выгружаются просто товары, размер нигде не учитывается.
              Константин Ильин
              19 марта 2015, 12:25
              0
              Где можно купить или скачать данный компонент?
                Константин Ильин
                19 марта 2015, 19:56
                0
                Ребят его нигде нет, в магазине симпла тоже, msync тоже нет, он больше не поддерживается? его нигде не скачать?
                  Василий Наумкин
                  19 марта 2015, 20:06
                  0
                  Пока отключен, в связи с нареканиями на поддержку.

                  Решают, что с ним делать дальше.
                    Константин Ильин
                    19 марта 2015, 20:24
                    0
                    жаль, очень жаль! и никак его не достать щас??
                      Василий Наумкин
                      19 марта 2015, 20:26
                      0
                      Нет, придётся подождать какое-то время.

                      День-два, я думаю.
                        Константин Ильин
                        19 марта 2015, 20:30
                        0
                        Будет круто!
                        Спасибо Василий за отзывчивость!

                        Очень буду ждать его
                          Константин Ильин
                          30 марта 2015, 18:26
                          0
                          Вот уже 10 дней жду его, когда уже ?)
                          очень надо!
                            Leonid Krylov
                            01 апреля 2015, 13:05
                            0
                            Компонент снова в магазине.
                  Николай Ермошин
                  20 марта 2015, 20:22
                  0
                  А почему этот модуль пропал из магазина? Очень нужный модуль!
                    Александр Рахимов
                    20 марта 2015, 20:25
                    +1
                    Видимо решается дальнейшая судьба компонента. Думаю он скоро вернется в репо.
                    Leonid Krylov
                    01 апреля 2015, 13:06
                    0
                    Были проблемы с поддержкой компонента.
                    Сейчас он вновь доступен в репозитории.
                      Klike
                      29 мая 2015, 07:47
                      0
                      Планируется ли дальнейшее развитие компонента? Есть магазин, где в 1С периодически обновляются фото товара на более свежие. После синхронизации в галерее карточки товара остаются две версии, старая и новая. Но по умолчанию стоит также старая. Можно ли добавить функцию удаления старых фото и синхронизация новых. Соответственно и превью будут уже новые. Важный вопрос, в поддержке сухо отвечают, что такого функционала нет.
                        Александр Рахимов
                        29 мая 2015, 22:44
                        0
                        С моей стороны компонент развивается. Добавлена поддержка новой версии протокола и исправлены ошибки.
                        Но сомневаюсь, что компонент обновится в modstore.
                          Klike
                          29 мая 2015, 22:58
                          0
                          А как можно обновить до свежей версии?)
                            Александр Рахимов
                            29 мая 2015, 23:03
                            0
                            Сложный вопрос.
                            Меня убрали с этого компонента, а в паблик пока не планирую выкладывать.
                              Klike
                              29 мая 2015, 23:06
                              0
                              Даже, если приобретался компонент?)
                                Александр Рахимов
                                29 мая 2015, 23:11
                                0
                                Этот вопрос не в моей компетенции.
                                  Klike
                                  29 мая 2015, 23:12
                                  0
                                  Можно связаться лично,?
                                    Александр Рахимов
                                    29 мая 2015, 23:15
                                    0
                                    Можно, мой контакт был в компоненте, счас низнаю.
                                      Klike
                                      29 мая 2015, 23:17
                                      0
                                      Хорршо, спасибо.
                  Михаил
                  15 июня 2015, 17:04
                  0
                  Некропост конечно, но вдруг тут кто нибудь ещё есть.
                  Подскажите пожалуйста, как запустить синхронизацию без 1С?
                  Дело в том что синхронизировать нужно с 1с77, а там нет стандартного обмена как в 1С8.
                  Программист сделал offers.xml и import.xml, я положил их в 1C_temp
                  а дальше не знаю как запустить 1c_exchange.php
                    Володя
                    15 июня 2015, 17:34
                    0
                    ссылка вида
                    /assets/components/msklad/1c_exchange.php?http_auth=htauth:bVN5bmM6ZWQ3ODgyYmU1NzZhMTJjNWU0MGU1MTE2MWMyNmQ2MGM=&type=catalog&mode=import&filename=import.xml
                    где htauth:bVN5bmM6ZWQ3ODgyYmU1NzZhMTJjNWU0MGU1MTE2MWMyNmQ2MGM=
                    логин пароль через : в base64
                    ну а остальное по логике сообразите
                    Евгений
                    30 июля 2015, 15:47
                    0
                    Добрый день, при тестирование компонента на тестовом сайте хостинга(синхронизация с 1С) — в логах следующая ошибка:
                    Ошибка импорта каталога, передано пустое имя файла (переменная filename)

                    При этом файл от 1С приходит(import0_1.xml)
                    В логах:
                    Array(
                        [REQUEST] => Array(
                                [type] => catalog
                                [mode] => import
                                [filename] => import0_1.xml)
                        [SESSION] => Array([feature_mapping] => Array())
                    )
                    Подскажите что не понравилось компоненту?
                      Егор
                      04 сентября 2015, 18:15
                      0
                      Прошу помощи у разработчика, либо у сообщества!
                      В системных настройках поставил чтобы у импортированных товаров в псевдоним подставлялся id товара (синхронизирую с класс365).
                      Но при выгрузке в псевдоним не подставляется id и получается, что у 10 товаров абсолютно одинаковый псевдоним и все вытекающие из этого проблемы…

                      Что нужно сделать, чтобы в псевдоним подставлялся id товара?!
                        Klike
                        04 октября 2015, 21:58
                        0
                        Как вариант, использовать CustomUrls.
                        Klike
                        04 октября 2015, 21:53
                        0
                        Доброго времени суток!
                        С недавнего времени перестало авторизовывать из 1с (проверьте логин/пароль).
                        Проверка путем
                        http://site.ru/assets/components/msklad/1c_exchange.php?http_auth=htauth:YWRtaW46YWRtaW4=&type=catalog&mode=checkauth
                        Проходит хорошо – в окне браузера выдает SUCCESS…

                        Если на другом домене – всё отлично, Соединение с сайтом установлено.

                        Если в строке Адрес сайта в (Узлах 1С) вставить строчку с логином/паролем в Base64 (как ссылка выше),
                        то Сведение установлено.

                        В чём может быть загвоздка?)
                          Константин Ильин
                          10 октября 2015, 18:18
                          0
                          Доброе время суток!

                          Как я понимаю Компонент может обработать выгрузку из 1С УТ, вопрос, а с изображениями как дело обстоит тоже выгружаются?

                          есть ли обратная синхронизация т.е. с сайта в 1С УТ вместе с характеристиками и изображениями?
                            Дмитрий
                            11 апреля 2016, 21:20
                            0
                            В minishop2 сделано "Расширение модели товара".
                            У товара может быть 3 цены:
                            price
                            price_usd
                            price_euro
                            Соответственно в 1С есть цены в рублях и валюте.
                            <Предложение>
                            	<Ид>9bf7a895-0073-11e5-bef5-28924a4fd90c</Ид>
                            	<Наименование>CAV-72B</Наименование>
                            	<БазоваяЕдиница Код="796 " НаименованиеПолное="Штука">шт</БазоваяЕдиница>
                            	<Цены>
                            		<Цена>
                            			<Представление>321,76 USD за шт</Представление>
                            			<ИдТипаЦены>6fb11424-230c-11e1-8558-00252271fc01</ИдТипаЦены>
                            			<ЦенаЗаЕдиницу>321.76</ЦенаЗаЕдиницу>
                            			<Валюта>USD</Валюта>
                            			<Единица>шт</Единица>
                            			<Коэффициент>1</Коэффициент>
                            		</Цена>
                            	</Цены>
                            </Предложение>
                            Насколько я понимаю мне нужно создать плагин на одно из событий mskladOnProductImport или mskladOnProductOffers.
                            Пожалуйста дайте пример, где отловить <Валюта>USD</Валюта> и перенаправить price в msProductData price_usd.
                            Ну или хотя бы, как получить список свойств $properties и $resource?
                              Дмитрий
                              12 апреля 2016, 03:09
                              0
                              Вообщем сам решил задачу.
                              1. Идем в настройки импорта mSync. Создаем или обновляем «Цена» или «Розничная цена» (у меня розничная) и устанавливаем тип поля -> msProduct и цель -> currency of price.
                              2. Еще создаем настройки импорта с источниками USD, EUR, руб типом msProduct и соответствующими целями price_usd, price_euro, price.

                              3. В файле core/components/msklad/model/msklad/mskladcataloghandler.class.php заменяем
                              //update price
                              $selectedPrice=0;
                              if($this->config['import_all_prices']){
                              	//Импортируем цены согласно связям
                              	$c=0;
                              	foreach($xml->Цены->Цена as $price){
                              		$priceTypeId = addslashes((string) $price->ИдТипаЦены);
                              		$priceTypeName='';
                              		if(isset($_SESSION['price_mapping'][$priceTypeId])) $priceTypeName = $_SESSION['price_mapping'][$priceTypeId];
                              		if(!empty($priceTypeName)){
                              			if(!isset($this->properties[$priceTypeName])) continue;
                              			$priceSum = addslashes((string) $price->ЦенаЗаЕдиницу);
                              			if($c==0) $selectedPrice=$priceSum;
                              
                              			if($this->properties[$priceTypeName]['type']==1){
                              				$processorProps = array(
                              					'id'=>$product_id
                              					,'class_key' => 'msProduct'
                              					,'context_key' => $this->config['catalog_context']
                              				);
                              				$processorProps[$this->properties[$priceTypeName]['target']] = $priceSum;
                              				$this->modx->runProcessor('mgr/extend/updatemsproduct', $processorProps, array('processors_path'=>$this->config['processorsPath']));
                              			}
                              			elseif($this->properties[$priceTypeName]['type']==2){
                              				$product->setTVValue($this->properties[$priceTypeName]['target'], $priceSum);
                              			}
                              		}
                              		++$c;
                              	}
                              }


                              на вот это
                              //update price
                              $selectedPrice=0;
                              if($this->config['import_all_prices']){
                              	//Импортируем цены согласно связям
                              	$c=0;
                              	foreach($xml->Цены->Цена as $price){
                              		
                              		$priceTypeId = addslashes((string) $price->ИдТипаЦены);
                              		$priceTypeName='';
                              		if(isset($_SESSION['price_mapping'][$priceTypeId])) $priceTypeName = $_SESSION['price_mapping'][$priceTypeId];
                              		if(!empty($priceTypeName) AND $this->properties[$priceTypeName]['target'] = 'currency of price'){
                              			if(!isset($this->properties[$priceTypeName])) continue;
                              			$priceTypeName = addslashes((string) $price->Валюта);
                              			$priceSum = addslashes((string) $price->ЦенаЗаЕдиницу);
                              			if($c==0) $selectedPrice=$priceSum;
                              
                              			if($this->properties[$priceTypeName]['type']==1){
                              				$processorProps = array(
                              					'id'=>$product_id
                              					,'class_key' => 'msProduct'
                              					,'context_key' => $this->config['catalog_context']
                              				);
                              				$processorProps[$this->properties[$priceTypeName]['target']] = $priceSum;
                              				$this->modx->runProcessor('mgr/extend/updatemsproduct', $processorProps, array('processors_path'=>$this->config['processorsPath']));
                              			}
                              			elseif($this->properties[$priceTypeName]['type']==2){
                              				$product->setTVValue($this->properties[$priceTypeName]['target'], $priceSum);
                              			}
                              		}
                              		if(!empty($priceTypeName) AND $this->properties[$priceTypeName]['target'] != 'currency of price'){
                              			if(!isset($this->properties[$priceTypeName])) continue;
                              			$priceSum = addslashes((string) $price->ЦенаЗаЕдиницу);
                              			if($c==0) $selectedPrice=$priceSum;
                              
                              			if($this->properties[$priceTypeName]['type']==1){
                              				$processorProps = array(
                              					'id'=>$product_id
                              					,'class_key' => 'msProduct'
                              					,'context_key' => $this->config['catalog_context']
                              				);
                              				$processorProps[$this->properties[$priceTypeName]['target']] = $priceSum;
                              				$this->modx->runProcessor('mgr/extend/updatemsproduct', $processorProps, array('processors_path'=>$this->config['processorsPath']));
                              			}
                              			elseif($this->properties[$priceTypeName]['type']==2){
                              				$product->setTVValue($this->properties[$priceTypeName]['target'], $priceSum);
                              			}
                              		}
                              		++$c;
                              	}
                              }
                              У меня в настройках mSync стоит «импортировать все цены» (msklad_import_all_prices).
                                adminixi
                                20 декабря 2016, 12:24
                                0
                                Скажите, а как к 1с прикрутить. Не очень понимаю…
                                  Дмитрий
                                  20 декабря 2016, 12:42
                                  0
                                  Если есть специалист по 1С, то все очень просто.
                                  Я недавно синхронизировал сайт с 1С, и дело было примерно так. Специалист по 1С настроил товары, настроил в программе выгрузку по CommerceML (где-то тут есть инструкция, как это делать), я же всего лишь связал через админку MODX'а нужные поля с полями товара и все.
                                    adminixi
                                    20 декабря 2016, 12:46
                                    0
                                    Скажите, а он товары сам заносил все или в 1С с сайта информация загрузилась?
                                      Дмитрий
                                      20 декабря 2016, 12:49
                                      0
                                      Ну, так как у нас изначально товары лежали на сайте, но был дикий бардак с артикулами и свойствами, то я выгрузил товары через Excel ему, он их отредактировал и занес в 1С.
                                  Saldorian
                                  05 октября 2017, 10:24
                                  0
                                  Здравствуйте! Может вышлет кто-нибудь модуль мне на почту. it.med.rus@mail.ru. И как он работает на modx evo 1.2, допиливать ничего не нужно?
                                    Никита
                                    20 февраля 2018, 18:45
                                    0
                                    Здравствуйте! Этот модуль уже не поддерживается и исчез из магазина? Можете подсказать альтернативы?
                                      Leonid Krylov
                                      21 февраля 2018, 10:08
                                      0
                                      Да, модуль был полностью переработан и теперь называется mSync.
                                        mekirile
                                        12 марта 2019, 09:12
                                        0
                                        Здравствуйте, при выгрузке заказа с сайта в МойСклад не добавляется его модификация.
                                        В данном случае модификация — это TV параметр размер.

                                        Вот как выглядит при создании заказа в МойСклад — prntscr.com/mwn6jb
                                        Вот как должно быть — prntscr.com/mwn7ck
                                        Вот так выбирается размер на сайте — prntscr.com/mwn7xp

                                        Сами значения размеров (TV-параметры) как раз-таки и берутся из МоегоСклада, поле заполняется модификациями при импорте товаров на сайт.

                                        Подскажите, в каком файле можно добавить указание модификации к товарам в заказе.
                                          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                          56