UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: Alexey от 20 Января 2013, 13:02:23

Название: Выполнить код API до и после события обмена 1С с сайтом
Отправлено: Alexey от 20 Января 2013, 13:02:23
Всем доброго времени суток!

Возник следующий вопрос. Кастомизирую обмен с сайтом. Необходимо выполнить APIшный код до и после процедуры обмена 1С с сайтом. Cтандартные точки вызова в режимах before и after exchangeOnAddElement и exchangeOnUpdateElement, к сожалению, не подходят, т.к. срабатывают для каждого товара отдельно, а надо отследить обмен 1С с сайтом в целом. Вторгаться в код системного файла auto.php крайне не хотелось бы, а кастомизировать его не представляется возможным. Пока временно сделал standalone файл, периодически запускаю его для достижения нужного эффекта.

Была еще мысль использовать cron для периодичного запуска и исполнения скрипта, но такой вариант не совсем пригоден для нашей ситуации. Хотелось бы привязать код именно к событию обмена 1С с веб-сайтом. Подскажите, пожалуйста, как это лучше сделать.

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

В службу заботы отписал, прошло 3 или 4 дня, ответа пока так и не дождался (хотя бы каких-то идей, мыслей или наводящих советов - вообще ничего). Вся надежда на помощь народа.  ;)
Название: Re:Выполнить код API до и после события обмена 1С с сайтом
Отправлено: Vladimir от 20 Января 2013, 14:21:17
Во-первых, 3-4 дня для СЗ это нормально, думаю, во вторник вам ответят.

Лично я бы не смущаясь переписал системный класс; в конце-концов, cms -  это не священная корова, а рабочий инструмент, который должен решать поставленную задачу. Надо только задокументировать изменения, чтобы можно было всегда и откатиться обратно, и повторить изменения, если их случайно затрут.
Тем более, смысл хранить целостнось имеет только если вы намерены регулярно оплачивать поддержку.
Название: Re:Выполнить код API до и после события обмена 1С с сайтом
Отправлено: admin от 20 Января 2013, 22:08:03
если говорить конкретно о импорте, то автоматический импорт из 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. Дело осталось за малым, написать свой сплиттер  ;)
Название: Re:Выполнить код API до и после события обмена 1С с сайтом
Отправлено: Alexey от 31 Января 2013, 20:03:15
Vladimir, спасибо за совет, именно так и планировал сделать в крайнем случае, если не будет найдено другого решения.

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