Компонент modImporter. Настройка импорта на сайт.

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

Компонент еще очень далек от конечной версии (хочется добавить в процессе гораздо больше ридеров (CSX, XLS (XLSX уже есть), просто файлы (для импорта статических сайтов) и прочее)). Но сам по себе общий механизм все-таки уже готов и пара кейсов у меня уже имеется. А всем прикупившим пакет я гарантирую свою личную помощь в первичной настройке.

Итак, что же на сегодня имеется? Изначально я ставил перед собой несколько задач, которые обязательно должны были быть выполнены:
1. Пошаговость. Чтобы не было ограничения по таймлимиту 30 секунд, а можно было импортировать этапами.
2. Экономность в потреблении оперативки. Здесь от части зависело от решения первой задачи, но и правильная подборка ридеров тоже имеет значение (к примеру, поточный XMLReader вместо обычного SimpleXML).
3. Расширяемость. Абсолютно универсальными такие вещи маловероятно сделать, потому важно было предусмотреть такой вариант расширяемости, чтобы и базовый функционал не приходилось трогать (чтобы можно было обновления пакета накатывать), и при этом индивидуальный функционал без особых сложностей допиливать.

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

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

Кейс 1. Выгрузка из YML.
Вот здесь обсуждение, картинки, пример полученного кода.
Там просто была базовая обкатка, потому я не писал само создание и обновление товаров в магазине, но как я и писал, это уже меньшая задача, так как когда данные получены, нет проблем проверить наличие товаров в базе и выполнить процессоры resource/create || resource/update.

Кейс 2. Выгрузка из Excel/XLSX.
А вот это уже более полный вариант, созданием/обновлением категорий, товаров, остатков и цен (да-да, здесь не только товары-цены один-к-одному, но и остатки-цены (по несколько на товар)).



На выходе получился вот такой код: gist.github.com/Fi1osof/3ded17bd770303500f3a
Читайте сами код и решайте на сколько там все сложно или не сложно.
В итоге у клиента результат импорта выглядит вот так:





С компонентом импорт ему был записан за 1 день, вот только вот этот файл. Все остальное необходимое идет с самим modImporter.

Плюшки.

А теперь о том, какие, на мой взгляд, интересные плюшки имеются в компоненте.

1. Удаление/создание таблиц для временных данных в момент инициализации импорта.
На мой взгляд нет смысла пытаться продумать универсальную и конечную структуру таблицы под временные данные. Гораздо логичней на лету создавать таблицу с такой структурой, которая максимально вам подойдет (это особенно актуально при импорте десятков тысяч товаров и более). От того, на сколько правильно выбраны типы данных в колонках таблиц, будет зависеть существенно скорость выполнения импорта. А кому-то может и несколько таблиц понадобится. Это все можно. А еще можно легко изменить структуру базовой таблицы способом, предложенным Василием, так что можно добавить в таблицу свои поля (или изменить имеющиеся), не залезая в код компонента.

2. Изменение типов данных некоторых колонок через системные настройки.
Да, я ведь тоже всяко экспериментирую с xPDO, и вот тут сидел такой и думал, а какую же длину задать ключевым колонкам в таблице и какую длину? Ну как тут угадать? У кого-то ключ будет 32 символа MD5-строка, у кого-то 64, у кого-то 255, а у кого-то вообще int(10). И вот тут я подумал, а почему не вынести это в настройки? Вынес. А в map-файл прописал их. Вот что получилось:
<?php

$externalKeyLength = $this->getOption("modimporter.external_key_length", null, 32);
$externalKeyType = $this->getOption("modimporter.external_key_type", null, 'varchar');
$externalKeyPhpType = $externalKeyType == "int" ? "integer" : "string";

$xpdo_meta_map['modImporterObject']= array (
  'package' => 'modImporter',
  'version' => '1.1',
  'table' => 'modimporter_objects',
  'extends' => 'xPDOSimpleObject',
  'fields' => 
  array (
    'tmp_object_type' => NULL,
    'tmp_external_key' => '',
    'tmp_resource_id' => NULL,
    'tmp_parent' => NULL,
	............
  ),
  'fieldMeta' => 
  array (
    'tmp_object_type' => 
    array (
      'dbtype' => 'varchar',
      'precision' => '50',
      'phptype' => 'string',
      'null' => false,
    ),
    'tmp_external_key' => 
    array (
      'dbtype' => $externalKeyType,
      'precision' => $externalKeyLength,
      'phptype' => $externalKeyPhpType,
      'null' => true,
      'index' => 'index',
    ),
    'tmp_resource_id' => 
    array (
      'dbtype' => 'int',
      'attributes' => 'unsigned',
      'phptype' => 'integer',
      'null' => true,
      'default' => null,
      'index' => 'index',
    ),
    'tmp_parent' => 
    array (
      'dbtype' => $externalKeyType,
      'precision' => $externalKeyLength,
      'phptype' => $externalKeyPhpType,
      'null' => false,
      'index' => 'index',
    ),...........
  ),
);
И работает :) То есть изменил системные настройки, запустил импортер, таблицы дропнулась и создалась новая с нужным типом и длиной полей. Основные варианты: varchar|int.

3. Дополнительное поле modResource::externalKey.
Так как курс на универсальность (нет четкой направленности на минишоп, шопмодикс или что-то другое), решил сразу застолбить колонку под артикул в самом документе. На это есть ряд причин против идеи создавать дополнительную таблицу для артикулов или ТВ-поля использовать. Но без проблем под эти цели использовать родные актикул-поля выбранных eCommerce-модулей.

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

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













Есть еще режим debug с записью обращений в MODX-логи (это чтобы дебажить запросы со сторонних сервисов).

Купить в modstore.pro
Fi1osof
11 января 2016, 18:48
modx.pro
3
8 731
+8
Поблагодарить автора Отправить деньги

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

Лев Вербицкий
11 января 2016, 22:10
0
Коля, поправь картинки) Ты их как то криво прилепил)
    Василий Наумкин
    11 января 2016, 22:52
    +1
    Поправил.

    Это какой-то странный баг в Tickets, который я в своё время так и не отловил.
Владимир
11 января 2016, 23:15
0
Интересно. Ждем в магазине.
Павел Карелин
11 января 2016, 23:38
0
Судя по modstore спрос на импорт/экспорт есть. Вопрос в том сможет ли данное решение предложить что то новое. А так конечно же желаю успехов.
    Fi1osof
    12 января 2016, 09:35
    0
    Будьте уверены — сможет. С учетом того, на сколько хорошо я знаю MODX, здесь гарантируется максимальная техническая поддержка. К примеру, на сегодня в каталоге наибольшее количество продаж у компонента mSync/mSklad. Читаем кто что здесь пишет по нему. И вот пример. «Обращался в тех. поддержку, мне не смогли помочь».
    Я уверен, у нас любые подобные вопросы будут решаемы.
      Святослав Тетерин
      13 января 2016, 13:16
      0
      Николай!!! Где же вы раньше были, как говорится)) Кстати, mSync до сих пор через пень колоду работает, 1С постоянно обновляют и все ломается, клиент все мозги выел. Мне немного обидно, что заплатил за бесполезный компонент без поддержки, может обсудить с админами и вами скидку для покупателей msklad, а то и вообще хочется деньги за него вернуть, пришлось сидеть и все доделывать((
        Виталий Дощенко
        13 января 2016, 13:22
        +3
        Здравствуйте, Святослав.

        Я не нашел свежих тикетов в «Тех. поддержке» mSync. Пришлите, пожалуйста, ссылку на вопрос, где автор отказался вам помочь — если это так — примем меры.
          Святослав Тетерин
          13 января 2016, 13:28
          0
          а свежих и нет, я даже не писал… Я установил msklad, все настроил, с версией 1С что была у клиента не заработало, написал в поддержку, мне ответили, давно еще было, но помочь не смогли, тогда самому пришлось допиливать…

          Писал тикет «Пишет „нет авторизации на сайте“» — мне сказали «присылать тз на почту» и «Я с 1С не знаком.», то есть банальные отписки…

          и 7 сентября я написал «Здравствуйте!
          Не могу настроить правильную синхронизацию с сервером, картинки не загружаются. Можете помочь?

          С уважением, Святослав!
          Святослав, 07 сентября 2015, 21:33 » — ответа не поступило, можете проверить modstore.pro/cabinet/tickets/616/1872/

          Думаю, если опросить всех покупателей msklad, то 9 из 10 скажут, что им пришлось все дорабатывать, а при обновлении 1с, снова переделывать и т.п.

          Спасибо за реакцию!
            Виталий Дощенко
            13 января 2016, 13:38
            0
            Святослав, пришлите, пожалуйста, ссылки на тикеты в тех. поддержке или хотя бы название вашего аккаунта, чтобы можно было подробно разобраться в ситуации.

            Думаю, если опросить всех покупателей msklad, то 9 из 10 скажут, что им пришлось все дорабатывать, а при обновлении 1с, снова переделывать и т.п.
            Нет, это не так. Большинство вопросов в тех. поддержке по данному компоненту разрешаются.
              Святослав Тетерин
              13 января 2016, 13:40
              0
              svyatoslavteterin@gmail.com, я прислал ссылки на тикеты, выше видно(отредактировал)… и вот еще один modstore.pro/cabinet/tickets/616/1864/
              Святослав Тетерин
              13 января 2016, 13:44
              0
              Виталий, справедливости ради, я не обновлял компонент после сентября, так как я его допиливал… А в логах смотрю, поправлены ошибки были, может попробовать обновиться просто тогда… То есть проблема была на тот момент, не факт, что сейчас эти проблемы есть.
                Виталий Дощенко
                13 января 2016, 13:54
                0
                Святослав, спасибо.

                Я пока просто попрошу автора повнимательней смотреть за вашими тикетами.

                Виталий, справедливости ради, я не обновлял компонент после сентября, так как я его допиливал… А в логах смотрю, поправлены ошибки были, может попробовать обновиться просто тогда… То есть проблема была на тот момент, не факт, что сейчас эти проблемы есть.
                В любом случае — если обнаружите проблемы и будут разногласия с авторами компонентов — пишите, пожалуйста — будем разбираться!
            mngatoff
            12 февраля 2016, 12:24
            0
            Я в защиту msync скажу, что когда 1С обновилась и имена файлов перестали совпадать, мне ответили быстро, по моей просьбе тут же переписали класс cataloghandler и компонент обновили в репозитории через пару дней.
              Fi1osof
              12 февраля 2016, 14:51
              -1
              Мне вообще не понятно зачем было жестко завязываться на какие-то определенные имена файлов? Разные версии 1С могут присылать разные имена файлов, при чем кто-то один файл, а кто-то и несколько. 1С-ка сама передает название файла и это название и должен использовать компонент.
        Fi1osof
        13 января 2016, 13:30
        0
        Я как обычно, что-то другое полезное пилил :)
        Так или иначе, если у вас проект в связке 1С еще актуален, могу предложить помощь в переводе его на modImporter бесплатно. С вас только приобретение самого пакета. Для меня просто интерес на одном проекте увидеть разницу в сравнении.
          Святослав Тетерин
          13 января 2016, 13:33
          0
          крутое предложение! спасибо, вполне=)) Да, проект актуален, я его сейчас перерабатываю, тогда договоримся о времени.
            Fi1osof
            13 января 2016, 14:41
            0
            Отписался
      Василиса Белозёрова
      13 февраля 2016, 18:20
      -2
      Купила этот компонент — в помощи оказали, послав куда подальше.

      Предложили помощь за сумму в 2 раз большую, чем компонент.
        Воеводский Михаил
        13 февраля 2016, 18:29
        0
        Напишите, какую помощь Вы запросили. Не всякая помощь может быть оказана бесплатно в рамках поддержки.
        Fi1osof
        13 февраля 2016, 19:08
        -1
        Дублирую ответ еще здесь.

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

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

        Вы пришли с вопросом «я не знаю ни php, ни js, как мне его настроить?». Я вам и ответил, что вот вам список статей, пробуйте по ним, но шанс маленький, скорее всего понадобится наша помощь, цена вопроса 2000 рублей (если это вы писали от имени Александра). Сейчас компонент стоит 1990 рублей, и запрошенная сумма всего лишь на 10 рублей больше (если вы не по старой цене купили).

        Я деньги еще не выводил, напишите в modstore со ссылкой на этот комментарий, пусть они вам вернут деньги, вообще не вопрос.

        В описании компонента добавил информацию о платной настройке (руки не доходили написать).
        И там вы писали просто «большую», а тут пишите про «в два раза больше». Это вы когда его покупали? Он уже как месяца два не стоит 990 рублей, а недели две как стоит 1990 (в марте до 2990 подорожает).

        Если вы купите тот же mSearch и сами не сможете его установить, будете искать бесплатную помощь?
        Fi1osof
        13 февраля 2016, 19:12
        -1
        в помощи оказали, послав куда подальше.
        Вы вот это называете послать куда подальше? joxi.ru/eAOqaVNf4ap9Qm
        Василиса (или Александр), когда я посылаю, это видно четко. Я написал подробные статьи, а вам дал ссылки на них. И это вы называет вас послали? Еще раз: запросите в modstore денежки обратно и больше не отвлекайте, пожалуйста.
          Павел Гвоздь
          13 февраля 2016, 19:13
          0
          Послали куда подальше обучаться разным штукам. Ладно тебе, Николай, девушки создания эмоциональные. ;)
            Fi1osof
            13 февраля 2016, 19:15
            -1
            Девушка ли? Тут девушка, а пишет какой-то Александр. Не доверяю я аватаркам. Я ее в глаза не видел. Некоторые девушек на аву вешают, чтобы программисты больше внимания уделяли.
              Павел Гвоздь
              13 февраля 2016, 19:16
              0
              Ну может всегда хотел быть девушкой. :)
                Fi1osof
                13 февраля 2016, 19:17
                -1
                )))))
Марк Валерич
12 января 2016, 10:07
0
Я его тоже купил, пытался прикрутить к сайту, но в автоматическом режиме не получилось, так как 1с имеет более раннюю версию и 1сник не захотел попу поднять и поспособствовать.
Начали работать через импорт через csv, и тут 1сник не смог ничего сделать))
Так что купил и не знаю, что с ним делать))))

Николай, когда ожидается публикация продукта?
хочу с yml, наконец-то, что придумать.
Хожу около этого файла уже полтора года)))
    Fi1osof
    12 января 2016, 10:11
    0
    Модерацию пакет прошел еще вчера, но пока не опубликован. Сказали публикация готовится. Скорее всего сегодня опубликуют. Вот ссылка modstore.pro/packages/import-and-export/modimporter (пока не рабочая, но как заработает, значит опубликовали :))
    Fi1osof
    12 января 2016, 10:13
    0
    А вообще, на будущее: когда согласовываете проект на интеграцию, заручайтесь гарантией клиента о всесторонней помощи в выгрузке данных с его стороны его силами. В большинстве подобных случаев, если заказчик не обеспечивает этого, проект закрываются и деньги не возвращаются.
      Марк Валерич
      12 января 2016, 10:15
      +1
      Полностью согласен, но было принято решение о смене 1сника)))
      Это принесет больше пользы, так как есть толковые люди.
Владимир
12 января 2016, 15:20
0
Купил. Пусть пока поживет на тестовом сайте ))
    Fi1osof
    12 января 2016, 15:35
    0
    ОК. Возникнут вопросы, спрашивайте. Сегодня-завтра еще опубликую более подробный туториал по нему.
      Владимир
      12 января 2016, 15:42
      0
      Установил на тестовый сайт на modhost.pro (MODX 2.4.2-pl)
      При переходе в меню компонента Из CSV, ошибка:
      Could not find action file at: /home/s*****/www/core/components/modimporter/controllers/mgr/import/csv/index.php

      Похожие ошибки при переходе в меню ZIp (.../import/zip/unzip.php ), XLSX (.../xlsx/index.php).
      XML и 1C предлагают загрузить файл, но я планировал опробовать на CSV.
        Fi1osof
        12 января 2016, 19:28
        0
        Сорри за долгий ответ, в разъездах сегодня был.
        Нет, с установкой все ОК. Просто как я и писал в топике, пока выгрузка только из XLSX и XML. Те пункты меню пока пустышки. А контроллеры-заглушки я пока не сделал, чтобы эти ошибки торопили меня написать и эти контроллеры :) Очень скоро они появятся. Сегодня я не успеваю уже написать «быстрый старт», но завтра точно опубликую. Будет описан четкий сценарий добавления собственного импортера.
          Владимир
          12 января 2016, 19:32
          0
          Ок. Подожду все опции, в т.ч. и CSV. И из 1с загружу что нибудь.
          В магазине пакет отключили? Там опять 404-я.
            Fi1osof
            12 января 2016, 19:57
            0
            Да, пока отключили, ошибки же. Но я уже выложил 1.0.1 с контроллерами-заглушками, отписался, скоро активируют.
            CSV на этой неделе выложу, у меня есть наработки. Вообще обновленный пакет будет интересные плюшки иметь, пока не буду раскрывать какие, но они очень полезные будут :) Сразу еще на 500 рэ подорожает))
              Владимир
              12 января 2016, 20:30
              0
              Кстати, поскольку компонент (я так думал) в первую очередь «менагерм» для облегчения жизни предназначен, то будет ли предусмотрено массовое удаление товаров и т.п.?
              Т.е., скорее, вопрос в том, будет ли компонент удовлетворять потребности простых менеджеров сайта? Что бы настроить им его раз под какой то формат ввода ( обновления\удаления) и не переживать вплоть до какого то изменения их задач.
                Лев Вербицкий
                12 января 2016, 21:01
                +1
                Выгрузки у всех разные… Невозможно сделать универсальное решение, либо придется изменять выгрузку, либо модифицировать код =)
                Fi1osof
                12 января 2016, 21:03
                0
                Вообще потенциал у компонента гораздо шире, чем только импорт. В первую очередь, самая сильная его сторона — это именно пошаговость. А это можно использовать для любых повторяющихся или логически управляемых действий (хоть для обновления чего-то, хоть для парсинга, хоть для чего). Со временем, думаю, не мало кейсов я опубликую. Но с целью того, чтобы основная направленность пакета была более понятна целевой аудитории, я его назвал именно так.
      Владимир
      12 января 2016, 15:52
      0
      Не корректно установилось?
      Вроде просто нет директорий csv и т.п.
      mgr/import/csv/index.php

      Переустановил. Все так же.
        Fi1osof
        12 января 2016, 22:07
        0
        Все, опубликована новая версия пакета с заглушками.
          Владимир
          13 января 2016, 11:50
          0
          Ок. Успехов. Жду новых функций.
            Fi1osof
            13 января 2016, 12:01
            +1
            Спасибо.
            Как только что будет, обязательно отпишусь.
              Владимир
              13 января 2016, 12:38
              0
              Кстати, если раздел документации в docs.modx.pro/ для компонента появится, было бы замечательно.
              Замечательно, что многие расширения, платные или бесплатные активно развиваются. Но бывает, что в топике, анонсирующем выход расширения, по комментариям вылавливать актуальные изменения не всегда удобно.
              Понятно, все время занимает, которого всем и всегда не хватает))
                Fi1osof
                13 января 2016, 12:44
                +1
                Спасибо за напоминание, учту.
                  Klike
                  13 января 2016, 14:20
                  0
                  Можно ли будет настроить импорт по крону?
                    Fi1osof
                    13 января 2016, 19:58
                    0
                    Да, безусловно. Для этого предусмотрен публичный коннектор. Только здесь надо сразу смотреть потребуется пошаговость в выполнении или нет. В интеграции с той же 1С, сама 1ска шлет столько запросов на сервер, сколько нужно (то есть она как и наша консоль бесконечна в количестве запросов, пока сервер не вернет окончательный ответ или ошибку). Если по крону надо будет выполнять мультишаговый импорт, то сейчас сразу так гарантировать не могу, ибо не пробовал, но скорее всего возможно задействовать механизм curl+redirect. То есть со стороны сервера отправляем редирект-заголовки, и курл дальше за ними идет bash curl -L. Для этого просто достаточно будет в переопределяющем процессоре добавить отправку заголовков.
Владимир
12 января 2016, 15:41
0
del
Павел Гвоздь
13 января 2016, 19:37
0
Николай, а возможно ли импорт настроить на пакет Tickets? То есть какие-то поля у нас будут TV, и class_key определённый ставить? Если написать по этому поводу в поддержку после приобретения пакета, можно ждать помощи именно в настройке импорта под Tickets?
    Fi1osof
    13 января 2016, 19:52
    0
    Выше я писал, что потенциал у пакета гораздо шире, чем заявляется в его названии. Да, для этих целей его тоже можно использовать. Он годится под все, что рассчитывается на какие-то планируемые шаги. Условно планирование его деятельности можно продумывать так «Взять информацию оттуда-то, подсчитать то-то, обновить то-то, разослать уведомления, сбросить кеш, пережать все картинки и т.д. и т.п.». Все это надо разбивать на логические шаги. В процессоре помимо привычных $this->succes() и $this->failure() появляются $this->nextStep() и $this->process(). Первые два метода окончательные — на них выполнение консоли завершается. nextStep() принимает в качестве первого параметра имя следующего метода, к которому будет выполнен переход (по сути это повторный запрос на сервер, только уже к другому шагу), а $this->process() — это так же повторный запрос, только без изменения параметров, то есть на тот же шаг (к примеру, шаг — обновление товаров, но обновляем мы по сто штук, то есть надо выполнить одно и то же действие несколько раз, пока не будут все товары обновлены). И да, я готов вам помочь в интеграции с Tickets.
      Василий Столейков
      13 января 2016, 22:47
      0
      Ага, круто. Интересует ещё возможность интегрировать его с файлами-картинками тикетов…
Виктор
15 января 2016, 11:40
0
Execel — импорт/экспорт? Или только в одностороннем порядке, в версии доступной в сторе выгрузка с 1С заглушкой?
    Fi1osof
    15 января 2016, 12:20
    0
    В этом топике приводится пример как выгружать из XLSX. Более подробный мануал о системе в общем в новом топике.

    По 1С и остальному. не все сразу. Все, что бесплатно (не считая стоимости пакета), все это будет появляться постепенно по мере того, как будет у кого-то разрабатываться. Если кому-то срочно нужен какой-то определенный функционал или тип выгрузки, то уже будет выполняться за деньги. Из этого массовый функционал будет попадать в компонент.
    Так как у нас довольно много запросов на подобные услуги, то функционал будет довольно активно прокачиваться.

    P.S. Интеграцию с 1С мы уже не раз выполняли, так что 1С довольно скоро появится довольно полная версия.
      Виктор
      15 января 2016, 12:23
      0
      Я наверное подожду под 1С :) в mSync у меня были проблемы с синхронизаций заказов (УТ р.11) и до сих пор пока не решились. Хотелось бы увидеть полноценную работу с 1С и плавный переход с mSync.
        Fi1osof
        15 января 2016, 12:47
        0
        Подождите :) К тому времени модуль «немного подорожает». И бесплатные консультации закончатся.
Григорий
09 марта 2016, 19:37
0
Нужно реализовать импорт, практически как в кейсе 2. Почитал инструкции, купил модуль, поставил, полез сюда дальше читать инструкции…
Так вот — в таком виде этот модуль просто нельзя продавать. Нужно или включить в цену стоимость допила от разработчика, или выкладывать ясные и проверенные инструкции для различных кейсов. Лучше всего было бы дать возможность поиграться с модулем на модхосте.

Господа, если прочитаете этот комментарий, сто раз подумайте, сумеете ли вы самостоятельно настроить этот модуль.

P.S. Было интересно, кто «минусит» комментарии Николая, теперь ясно — это такие же разочарованные покупатели модуля как и я.
    Fi1osof
    09 марта 2016, 19:54
    0
    1. Вы внимательно читали описание к модулю? Там четко написано Если у вас будет не достаточно знаний в php, чтобы настроить это под себя, мы окажем платную помощь в настройке (от 3000 рублей за один источник) joxi.ru/YmEVeE0uZ3RZR2
    Включить эту сумму в стоимость не могу. Во-первых, кому-то знаний хватит чтобы настроить, а я с него должен брать денег как с незнающего. Не справедливо. Во-вторых, у кого-то очень хитрая настройка может потребоваться, там и 10 000 за настройку может не хватить.

    2. Прежде чем покупать, вы могли написать запрос с описанием ваших задач и мы бы ответили подходит вам компонент в таком виде или нет (или с какими оговорками).
    3.
    Господа, если прочитаете этот комментарий, сто раз подумайте, сумеете ли вы самостоятельно настроить этот модуль.
    3.1 Скорее всего правильней было бы писать отзывом именно к компоненту на модсторе? Там бы виднее было бы. Или может вы и не покупали его вовсе?
    3.2 Вы не первый с такого рода отзывом, и могли прочитать этот отзыв и ничего не покупать (если покупали), а пройти дальше. Чем вам не предупреждение.

    4. Вы вообще хоть какой-то запрос в саппорт нам делали? На сколько я понимаю, совершенно нет.
      Григорий
      09 марта 2016, 20:06
      0
      1. Всё читал, знал на что иду, но предупреждение для потенциальных покупателей от такого же покупателя считаю вполне уместным.

      2. Для моей задачи этот модуль то что нужно — если верить первому скриншоту.

      3. Покупал, чесслово. Причем на модуль бюджет выделялся с учетом платной настройки, но куплен модуль был в марте, со всеми вытекающими :)

      4. До саппорта ещё не добрался, пока пытаюсь сам разобраться — желание есть. Если разберусь — похвалю вас и обязательно сделаю инструкцию по своей конкретной задаче и поделюсь с другими пользователями, чего и вам желаю.
        Fi1osof
        09 марта 2016, 20:19
        +2
        Еще никуда не обращался, толком не разбирался, но на всякий случай всех предупрежу :)
        Ну ОК, антиреклама тоже реклама)) Ждем продолжения.
Андрей Копп
10 марта 2016, 18:05
0
Николай, подскажи пожалуйста, если в XLS файле в первом поле будут сохранены изображения, их при импорте можно как-то выгрузить и сохранить в определённую папку? А сами изображения добавить в TV или же в галерею miniShop2 у каждого товара?
    Fi1osof
    10 марта 2016, 18:25
    0
    У меня пока такого кейса не было. Можете прислать подробные требования к импорту (включая предполагаемое количество позиций), я сориентирую по стоимости доработки и настройки импорта под твой проект. Скорее всего в 3-5 тысяч уложимся. В целом, думаю не проблема вообще, но лучше в XLSX файл готовить, так как он распаковывается как архив и там все картинки будут лежать в спецпапке отдельными файлами, что сильно упрощает процесс и требования к хостингу (на большой XLS файл потребуется много пхп-памяти на открытие файла).
Константин
05 апреля 2016, 12:05
+2
))) НЕДОКОМПОНЕНТ
Андрей
26 августа 2016, 16:02
0
Подскажите, при экспорте в xslx на выходе имеем пустой файл, с заполненной первой строкой (id, pagetitle и т.д.)
    Fi1osof
    26 августа 2016, 21:38
    0
    Версия 1.5.0 вышла в статусе альфа, судя по всему не создаются таблицы новые и колонки в режиме обновления, только установки. Вернусь из отпуска, поправлю. Или можно в консоли выполнить код:
    $manager = $modx->getManager();
    
    $objects = array('modImporterExport', 'modImporterImport', 'modImporterObject');
    foreach ($objects as $o) {
        $manager->createObjectContainer($o);
    }
    
    $manager->addField("modResource", "importId");
    $manager->addIndex("modResource", "importId");
    
    $manager->addField("modResource", "externalKey");
    $manager->addIndex("modResource", "externalKey");
    Я так понимаю, вы справились с этим методом сноса и установки пакета с нуля?

    И сразу информация на счет поддержки минишопа:
    По умолчанию этот экспорт пока не выгружает и не обновляет допполя минишопа (тот хранит данные товаров в отдельных таблицах). Вам надо расширить экспорт-импорт процессоры export/pair/xlsx и import/pair/xlsx и прописать в них эти допполя, или подождите когда вернусь из отпуска и выпущу обновленную версию, она будет поддерживать минишоп из коробки (числу к 5-10-ому выпущу).
      Андрей
      26 августа 2016, 21:44
      0
      Я так понимаю, вы справились с этим методом сноса и установки пакета с нуля?
      Да, справился путем сноса пакета и установки заново))
    Fi1osof
    10 сентября 2016, 20:27
    1
    0
    Выкатил свежую версию 1.6.0-beta. Пофиксил косяк с установкой и добавил поддержку минишопа (стандартные поля price, old_price, weight, article) выгружаются и обновляются из коробки.
    Вообще надо будет добавить возможность в настройках перечислять выгружаемые колонки, но пока не нарыли функцию получения наименования колонки в Экселе по порядковому номеру, но или нароем все-таки, или сами напишем. Пока же наглядный кейс как не сложно добавить в выгрузку дополнительные колонки, включая дополнительные опции товаров:
    Добавляем кастомный процессор экспорта: joxi.ru/brRDO4pfQXDZN2
    Там переопределяем метод и добавляем несколько строчек:
    joxi.ru/KAgK9pXIglDBPA
    joxi.ru/LmGVQx0uR6GX0r
      Андрей
      11 сентября 2016, 13:44
      0
      Отлично, спасибо! Попробую, отпишусь!
        Fi1osof
        11 сентября 2016, 13:54
        0
        Не за что!
          Андрей
          11 сентября 2016, 14:23
          0
          все работает отлично из коробки. Но на вкладке товаров один из столбиков не назван. Судя по всему это alias.
          prntscr.com/cgpae0
          Подскажите, где поправить эту штуку?))
            Fi1osof
            11 сентября 2016, 14:25
            +1
            Вообще я это фиксил, но видимо не закоммитилось… Сейчас выгружу новую версию.
            Fi1osof
            11 сентября 2016, 17:51
            0
            Выложил 1.6.1
              Андрей
              11 сентября 2016, 17:56
              0
              Спасибо, все хорошо теперь!
                Fi1osof
                11 сентября 2016, 17:58
                0
                Не за что!
A B
A B
03 сентября 2016, 18:56
0
Используется ли в этом компоненте стандартный процессор resource/update или написан свой процессор?

Интересует исправлен ли в modImporter этот баг:
github.com/modxcms/revolution/issues/5965
    Fi1osof
    05 сентября 2016, 12:44
    0
    В большинстве случаев используется родной процессор resource/update. Хотя на парочке проектов, где каталог очень большой был, для снижения нагрузки использовалось прямое сохранение объекта и вызов плагинов через $modx->invokeEvent().

    Интересует исправлен ли в modImporter этот баг:
    github.com/modxcms/revolution/issues/5965
    Вообще мне эта особенность данного процессора тоже никогда не нравилась, но вряд ли это будут фиксить, как видно тикет просто закрыт. Я в импортере на апдейт обычно в процессор отправляю только ресурс, без TVs=>1 и самих ТВшек, а потом после обновления процессором беру уже объект ресурса и на нем выполняю апдейт нужных ТВшек через $resource->setTVValue(). Вообще там очень много тонкостей, где-то вполне может понадобиться индивидуальный подход.
Артур
20 февраля 2017, 13:49
0
Много коментов по поиску не нашел свое вопроса, только то что вопрос не решон и остался пробелом )))
Меня попросили сюда писать вопросы, пишу ))

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

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

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

Думаю ответы на этот комент решит очень много вопрос от заказчиков :)))

Спасбио за понимаю и благодарю за помощь.

Ответ не получил было сказано что пока не до этого и много работы нужно будет проделать. Подскажите кто с таким сталкивался, если поставить вместо ШрихМ что то типо склад, УТ, бух получиться ето все запустить?

Я думаю этот вопрос очень актуален, так как это нужно большей части магазинов.
    Fi1osof
    20 февраля 2017, 13:51
    0
    Я не просил сюда писать вопросы. Я сказал, что вопросы писать надо сюда. Но там же и написал
    В ближайшие несколько дней вопросы можно не задавать, я занят.
      Артур
      20 февраля 2017, 13:58
      0
      Я на будущее )) вдруг что то всплывет.
      ПРошу прощения если отвлек.
Andrey
23 августа 2017, 12:49
0
Друзья, а где взять то это дополнение? В репозиториях и в modstore нет.
    Андрей
    23 августа 2017, 13:18
    0
    Снятие модулей MODX-Клуба с публикации в modstore

    На нашем сайте Клуба пакеты не сняты, но не советую приобретать, так как нет гарантированной поддержки. То есть если вы купили и не разобрались, мы не сможем оказать поддержку, но и деньги не будут возвращены, так как это цифровой продукт.
      Andrey
      23 августа 2017, 13:22
      0
      А что делать, мне нужен импорт из xls в модификации (msOptionPrice2), по сути всего два поля: артикул и цена.
        Андрей
        23 августа 2017, 13:27
        +1
        msImportExport

        Интеграция:
        msImportExport интегрирован с дополнениями:

        msOptionsPrice2

        Читайте раздел — Импорт для msOptionsPrice2.

        Если у вас установлен компонент msOptionsPrice2 версии 2.2.37 или выше
        то у вас появится возможность импорта модификаций товара.
          Andrey
          23 августа 2017, 13:37
          0
          Получается только msImportExport, к нему бы манул добрый.
          Спасибо за ответы
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
82