UMIhelp
Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: Alexey от 20 Января 2013, 13:02:23
-
Всем доброго времени суток!
Возник следующий вопрос. Кастомизирую обмен с сайтом. Необходимо выполнить APIшный код до и после процедуры обмена 1С с сайтом. Cтандартные точки вызова в режимах before и after exchangeOnAddElement и exchangeOnUpdateElement, к сожалению, не подходят, т.к. срабатывают для каждого товара отдельно, а надо отследить обмен 1С с сайтом в целом. Вторгаться в код системного файла auto.php крайне не хотелось бы, а кастомизировать его не представляется возможным. Пока временно сделал standalone файл, периодически запускаю его для достижения нужного эффекта.
Была еще мысль использовать cron для периодичного запуска и исполнения скрипта, но такой вариант не совсем пригоден для нашей ситуации. Хотелось бы привязать код именно к событию обмена 1С с веб-сайтом. Подскажите, пожалуйста, как это лучше сделать.
Наверняка кто-то сталкивался с подобным, не обязательно прям с событием обмена с 1С, а с подобного рода задачей.
В службу заботы отписал, прошло 3 или 4 дня, ответа пока так и не дождался (хотя бы каких-то идей, мыслей или наводящих советов - вообще ничего). Вся надежда на помощь народа. ;)
-
Во-первых, 3-4 дня для СЗ это нормально, думаю, во вторник вам ответят.
Лично я бы не смущаясь переписал системный класс; в конце-концов, cms - это не священная корова, а рабочий инструмент, который должен решать поставленную задачу. Надо только задокументировать изменения, чтобы можно было всегда и откатиться обратно, и повторить изменения, если их случайно затрут.
Тем более, смысл хранить целостнось имеет только если вы намерены регулярно оплачивать поддержку.
-
если говорить конкретно о импорте, то автоматический импорт из 1с происходит с участием splitter файла, указанного параметром exchange.commerceML.splitter, который прописан в config.ini , в секции [modules].
Cам файл лежит в папке /classes/system/subsystems/import/splitters и соответственно называется commerceML2Splitter.php.
Принцип работы такого рода файлов (правила импорта) можно разобрать самому или почитать в статьях типа этой Добавление нового сплиттера для импорта данных (http://wiki.umisoft.ru/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D0%BF%D0%BB%D0%B8%D1%82%D1%82%D0%B5%D1%80%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85).
В итоге, вы можете создать свой сплиттер который легко и просто встраивается в систему и не перезатирается при обновлении.
P.S. Дело осталось за малым, написать свой сплиттер ;)
-
Vladimir, спасибо за совет, именно так и планировал сделать в крайнем случае, если не будет найдено другого решения.
admin, спасибо, что подсказал, в какую сторону можно подумать. Я изучил вопрос более детально и, собственно, решил задачу именно таким образом.