Обмен 1с и opencart 2.0

1с и web разработка

Есть замечательный плагин для opencart 1.5, который позволяет делать выгрузку номенклатуры из 1С в формате CommerceML.

Пришло время появиться плагину для opencart 2.0.

Предлагаю Вам скачать и ознакомиться с плагином. Это не мой плагин и авторство его я себе не присваиваю. Просто переделал по версию 2.0. Качать тут (только opencart 2.0). Для 2.1 — написал отдельную статью

Обновлено 05.01.2016:

Переписал для opencart 2.1. Теперь банановый на ocmod.

62 комментария

  1. Добрый день, спасибо за доработку модуля под 2.0!
    Отлично работает, почти.

  2. При изменении статуса закза в 1С УТ 10.3, проветси в магазин это не получается. 1С пишет:

    Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.
    Строка 1: Для товара Мотоблок
    цена за единицу ниже порогового значения (цена: 96,00 руб., минимальное значение: 2 486,68 руб.)
    Строка 3: Для товара Вентилятор BINATONE ALPINE 160вт, напольный ,
    цена за единицу ниже порогового значения (цена: 24,00 руб., минимальное значение: 621,67 руб.)
    {Обработка.ОбменССайтом.МодульОбъекта(4288)}: Ошибка при вызове метода контекста (Записать): Не удалось провести «Заказ покупателя ТД000000003 от 01.06.2015 9:39:48»!
    Произошла ошибка: . По причине:

    Не удалось создать/обновить документы.
    Не удалось обработать документы, загруженные с сервера.
    Обмен не выполнен
    Изменения товаров не зарегистрированы. Выгрузка товаров не произведена.
    Строка 1: Для товара Мотоблок
    цена за единицу ниже порогового значения (цена: 96,00 руб., минимальное значение: 2 486,68 руб.)
    Строка 3: Для товара Вентилятор BINATONE ALPINE 160вт, напольный ,
    цена за единицу ниже порогового значения (цена: 24,00 руб., минимальное значение: 621,67 руб.)
    {Обработка.ОбменССайтом.МодульОбъекта(4288)}: Ошибка при вызове метода контекста (Записать): Не удалось провести «Заказ покупателя ТД000000003 от 01.06.2015 9:40:06»!
    Произошла ошибка: . По причине:

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

    ПОМОГИТЕ РАЗОБРАТЬСЯ ПОЖАЛУЙСТА.

  3. {ОбщаяФорма.ФормаВыполненияОбменаДанными.Форма(121)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
    ОбъектНастройки = НастройкаОбменаДанными.ПолучитьОбъект();
    по причине:
    В данной транзакции уже происходили ошибки!

  4. Прошу прощения видемо 1С сбоит. Эта ошибка исчезла.
    Но в любом случае 1с не может изменить статус заказа на сайте. Такой функционал вообще предусмотрен?

    • У меня была задача только с номенклатурой, поэтому по заказам не могу сказать. Надо код ковырять. Если у Вас получиться исправить ошибку с заказами — дайте знать.

      • В принцепи это не такая проблема. Наоборот помогает отследить заказ. Глянул в один с там его провели. Закрыли. Сменил статус на сайте. Всё. Он выгружает заказы в 1с даже на проведённые, им статус не меняет… Но сигнализирует таким образом что ты не сменил статус на сайте. Как только сделал там всё прекратил его лить. Удобный баг)) Спасибо за доработку под 2.0

        А у вас нет модуля оплаты по банковскому счёту под OpenCart 2.0.3
        Очень нужен.

  5. Здравствуй ещё раз!
    Помоги плз. Такой вопрос, какой файл отвечает за отбор данных из выгружаемого XML 1C???, мне необходимо чтобы твой скрипт вместо НАИМЕНОВАНИЕ брал ПОЛНОЕ НАИМЕНОВАНИЕ. Ну и соответственно оно и отображалось на сайте. Помоги разобраться как всё работает.

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

      • Полное наименование записывается в файл и так…

        В общем полное наименование то я научился выдёргивать. Но и его теперь нельзя трогать. В итоге выход у меня только один. Создать новое поле в СВОЙСТВАХ… Назвать его например ИмяНаСайт и вбивать туда уже так сказать маркетинговое имя то которое я и хочу видеть на сайте. Ну не дают мне бухгалтера и кладовщик трогать ни наименование ни полное наименование. Вобщем это самое свойство 1с выгружает в XML, но вот подменить им в php файле Наименование я никак не могу… ((( Если есть хоть какая нибудь идея, подскажите. Я уверен вопрос 1-3 строк. (( Буду очень благодарен.

        • Попробуй так:
          1. (1С) Создай новое свойство номенклатуры «Имя на сайте»
          2. (1С) Заполни его
          3. (Сайт) Вставь следующие строки в файл «/admin/model/tool/exchange1c.php» перед 537 строкой (case ‘Производитель’:). Вот сами строки:
          ———————
          case ‘Имя на сайте’:
          $data[‘name’] = $attribute_value? (string)$attribute_value : ‘не задано’;
          ———————

          • Олег:

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

  6. Роман:

    Добрый день!
    При загрузке заказов с сайт, не меняется их статус. В результате чего одни и те же заказы кочуют в 1С каждый раз. Можете подсказать где это подправить?

  7. Мария:

    Добрый день, Павел, спасибо за вашу доработку модуля.
    Но у меня почему-то возникает такая проблема:
    при первоначальной установке, в 1-ый раз обмен проходит, а далее — нет (пробовала на 2.0.1.1 и 2.0.3.1). Если поставить «сбрасывать товары/категории/производителей……», то товары все сбрасываются и больше не заполняются никаким образом, а категории заполняются как положено.
    В журнале ошибок запись: «PHP Notice: Use of undefined constant exchange1c_order_status — assumed ‘exchange1c_order_status’ in /home/…………../public_html/admin/view/template/module/exchange1c.tpl on line 405»
    что я делаю не так?

    • Попробуйте отключить загрузку заказов. У меня такой цели не было пока. Поэтому загрузку заказов не отлаживал.

      • Доброго дня, Павел, спасибо огромное за ваши труды!
        Может поможет в дальнейшем для доработки. Аналогичная ошибка PHP Notice: Use of undefined constant exchange1c_order_status — assumed ‘exchange1c_order_status’……admin\view\template\module\exchange1c.tpl on line 405 сразу после установки и активации модуля на Opencart 2.0.3.1 и 2.0.2.0 Не работает кнопка Ручной импорт. Делать обмен ещё не пробовал- смутила ошибка в логах. VQmod ставил последней версии…

  8. marand:

    Добрый день. Спасибо за модуль, работает. Планируются ли какие доработки модуля? Почему-то не выгружается производитель, ошибок в логах нет. Такое впечатление что модуль не видит родное поле производителя в 1С. Использую 1С:Управление сервисным центром 1.5. И, действительно, почему-то не работает ручной импорт, версия OC 2.0.3.1.

    • Добрый. Здорово, что моя работа помогла кому-то. Доработки планирую. Но проблема в том, что я столько всего планирую, что ничего не могу обещать 🙂
      По поводу производителя: Алгоритм ищет в свойствах номенклатуры поле «Производитель». Оттуда и берет его.

      • marand:

        Т.е. получается, что он ищет производителя в свойствах, а как его заставить искать производителя не в свойствах, а в закладке «Производитель» у товара?

        • 1с выгружает этот реквизит?

          • marand:

            В том то и дело, что в файле import.xml этого реквизита нет. А как заставить 1С выгрузить родное поле Производитель?

          • Тут 2 варианта:
            1. Написать обработку, которая запишет производителя в свойство и сказать всем, что производителя надо писать в свойства.
            2. Переписать алгоритм выгрузки. Помоему функция «НастроитьПостроитель» и переписать алгоритм загрузки.
            Я бы предпочел первый вариант, но решать Вам.

  9. Олег:

    Здравствуйте. Установил плагин на 1с УТ11 и OC 2.0.1.1. При полной выгрузке товаров все данные из OC стираются, а новые не записываются. В чем может быть проблема?
    Спасибо

  10. Сергей:

    Добрый день!
    Такая проблема: Во вкладке ручной импорт, слово ЗАГРУЗИТЬ голубым цветом при наведении курсора темнеет, но не является кнопкой, то есть при клике ЛКМ нет реакции. Я только учусь и далеко не все понимаю, подскажите что делать. Заранее благодарен.

    • Сергей:

      Забыл добавить версия 2,0,1,1 может в этом проблема?

    • Ручной импорт не делал вообще. Поэтому не удивительно, что он не работает

      • Сергей:

        Извините за возможно глупый вопрос, что это и как лечить:
        Ответ сервера:
        Fatal error: Call to a member function trigger() on null in C:\xampp\htdocs\SITE\admin\model\catalog\category.php on line 4

        • Это хороший вопрос. Думаю, что у многих такая же проблема. У меня были ошибки в xml файле для vqmod. Теперь поправил. Попробуйте заново загрузить плагин. И еще проверьте установлен ли у Вас vqmod.

          • александр:

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

          • На opencart 2.x нет VQMod. Там есть аналог OCMod.
            Попробуйте этот плагин и более свежую версию opencart.
            Этот плагин не требует vqmod — работает с ocmod, который уже стоит в opencart 2.x

          • александр:

            По вашему совету установил новый модуль и обновил opencart до 2.1.0.1, 1с 8.3 вообще не подключается (Нет соединения)…. Подскажите, в чем может быть проблема? сайт на XAMPP 2.5….

          • александр:

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

          • Как Вы устанавливали модуль? Путем копирования или через установку модификаторов?

          • александр:

            Через установку модификаторов, предварительно подключив ftp в настройках.

        • Александр:

          Извините, проблема в моих кривых руках) модуль не устанавливался только на локальном сервере. На арендованном хостинге nic.ru все встало как надо, работает отлично, спасибо.

          • александр:

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

          • александр:

            Не удалось преобразовать формат картинки.

  11. Выгрузку на сайт настроил,все нормально.А вот выгрузка заказов в 1с не могу.Со стороны 1с вырвал ошибку которую возвращает:
    Notice: Error: Could not load model /var/www/v-20060/data/www/test.id-group.pro/admin/model/module/related_options…! in /var/www/v-20060/data/www/test.id-group.pro/vqmod/vqcache/vq2-system_engine_loa.. on line 24

    а файла module/related_options у меня вообще нет,нет даже директротии module в admin.Подскажите как быть.

    • Я толком загрузкой заказов не занимался. Поэтому у Вас есть 2 варианта:
      1. Дописать самому отсутствующие части этого пазла
      2. Подождать пока кто-либо допишет.

      • а когда примерно ориентировочно планируется заняться заказами?

        • У меня на 2.0.3.1 заказы выкидывает в 1с но не меняет статус в ОС. Какую версию Обмен данными с 1C v8.x используете? вижу сайт на 2.0.2.0. Как настраивали выгрузку категорий? каким образом несколько категории отобразились в верхнем меню?(так в 1с забито?) Количество товара на сайте отображается? Дайте, будьте добры свои контакты…

          • skype:wattot
            vk.com:/wattot

          • А ты валюту менял?просто у меня выдает ошибку
            Ошибка в значении узла . документа CML (руб.).
            Обмен не выполнен
            Не удалось обработать значение элемента (Документ.Валюта) = (руб.).
            Не удалось разобрать данные, загруженные с сервера.
            Обмен не выполнен
            Не выгружен ни один заказ.

          • сам же и отвечу на свой вопрос.Данная ошибка возникает в том случае,если валюта выгружаемая из opencart не соответствует валюте в 1с.Что нужно сделать?-:нужно зайти в справочник валюты в 1с,взять символьный код и вставить его в настройки обмена с 1с на сайте,там есть поле :выгружаемая валюта.Для примера данный код выглядит так:RUB.

  12. Все нормально работало, Выгрузка шла без проблем. Сегодня при выгрузке со стороны 1С вылетела такая ошибка:

    Ошибка отображения типов:
    Отображение типа «Null» в тип ‘{http://www.w3.org/20…LSchema}string’

    Что это? Никаких изменений в 1С и файлах экспорта не делал.

    • Я с такой ошибкой не сталкивался. Порекомендовал бы пройти отладчиком в 1С и посмотреть на какой строке выдает ошибку.

      • Разобрался. Это опять все те-же заказы. Сменил статус заказа, а 1С это не поняла. Может обмен заказов подправите, многим это нужно.

  13. Здравствуйте,у меня возникла проблема, установил я 2.0.3.1, все круто,выгружается каталог товаров,есть\нет в наличии,заказы передаются,зато цены нет)))))что может быть?заранее спасибо.PS:тип цен указал,вроде как должно выгружать,но нет

  14. Александр:

    По каким то причинам совсем не проходит даже подключение к сайту. Не выгружаются каталоги. Совсем не работает, почему?

  15. Александр:

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

  16. При загрузке появляется ошибка

    Выгружено товаров в файл обмена : 40
    Выгружено картинок в файл обмена: 24
    Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.
    Обмен не выполнен
    Выгрузка товаров завершена с ошибками!!!
    Обмен заказами успешно завершен

    Подскажите в чем проблема и как исправить
    Выгрузка в версию сайта 1.5. проходит без ошибок

  17. Подскажите, такая проблема. При синхронизации затрагивается поле Отсутствие на складе в карточке товара в админке и сбрасывает. Как сделать чтоб это поле 1С не трогала или же наоборот, прописывала нужное состояние. Где прописывать этот параметр в 1С?

  18. […] не стоят на месте. Ранее я публиковал модуль для обмена между 1с и opencart 2.0. И вот он мне опять […]

  19. Ребят нужна помошь в настройке модуля! 1С Торгговля 11.1 и сайт opencart!

  20. Доброго времени суток. Подскажите. Я хочу написать интеграцию модуля CommerceML с движкем Vamshop. Это OsCommerce только чуть чуть переписан.
    Где бы почитать что умеет модуль и как с ним работать? От него мне нужно будет закидывать заказы с сайта в 1С. Подскажите, где почитать и что писать?
    Спасибо

    • Документацию найти будет сложно. Даже не знаю есть ли она.
      Лучший способ писать такие модули — запуск отладчика в 1С.
      Ходить по строкам в 1С, смотреть что делает 1С и что отвечает сайт.

  21. Антон:

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

    Установил модуль на OpenCart 2.0.1.1
    1С удается установить соединение с сайтом через модуль, здесь все в порядке. Но при выгрузке выдает такое сообщение:
    «Получение данных с сервера: Получен пустой ответ сервера.
    import.xml: Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.»

    В чем может быть проблема? Я так понимаю ошибка на стороне сервера?

  22. Анатолий:

    Добрый день, сразу извиняюсь за глупый вопрос, но как настроить соединение с сайтом в 1с. Может кто-то подсказать, желательно пошагово — как младенцу))

  23. Всем доброго времени суток, помогите настроить цену и количество не могу выгрузить на сайт с 1С, версия Версия ocStore 2.3.0.2.3, версия 1С 8.3. УТ 1.3 для Беларуси.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *