Персональный блог Игоря Антонова aka "spider_net"

ImageCMS. Ошибка во время выгрузки заказов в 1С:Предприятие


Рубрика: Программирование -> Без рамки
Метки: | | | | | |
Просмотров: 4831
ImageCMS. Ошибка во время выгрузки заказов в 1С:Предприятие

Совсем недавно я рассказывал о выборе CMS для интернет магазина. Помимо рассмотрения определенных решений, в той заметке я поведал о негативном опыте, связанном с использованием ImageCMS. На этой CMS у меня остался один проект (он в стадии перевода на Diafan.CMS) и как назло сегодня с ним случилась проблема. Позвонил мой клиент и сообщил, что не может загрузить сформированные заказы из интернет магазина в «1С:Управление торговлей». Зная, что модуль выгрузки нам «допиливали» до работоспособного состояния уже на боевом сервере, я рискнул предположить, что проблема именно в нем. Оказалось, что я не ошибся.

Практически все популярные CMS, ориентированные на создание интернет магазинов, из коробки поддерживают обмен данными с конфигурациями 1С. Разработчики CMS поступают в большинстве случае правильно – не пытаются изобретать собственный механизм обмена, а используют формат CommerceML. Он хорошо документирован и со многими конфигурациями 1C поставляется обработка, позволяющая сразу же выгрузить данные на сайт (например, номенклатуру). Если производители CMS не поленились и реализовали в должном объеме поддержку этого формата, то обмен работает из коробки.

Разработчики ImageCMS не стали отступать от хороших традиций и снабдили свой продукт поддержкой CommerceML. Снабдить, то снабдили, но обработать элементарные ситуации, видимо забыли. Не буду вдаваться в нюансы реализации, скажу лишь, что разработчики не удосужились предусмотреть экранирование недопустимых для XML символов. Возможно, в новых версиях эту проблему исправили, но в 4-й она есть. Следовательно, у меня возникает вопрос: «Как пользователи этой системы терпели такую хрень целых 4 релиза?». Хорошо, быть может, большинство пользователей не пользуются обменом с 1С, но команду разработчиков ImageCMS это не оправдывает.

Думаю, все, кому хоть раз приходилось работать с форматом XML, знают, что его спецификация предусматривает список недопустимых символов, которые обязательно нужно экранировать. Например:

" => "
© => ©
® => ®
™ => ™
? => €
Ј => £
„ => „
“ => “
« => «
» => »
> => >
< => <
≥ => ≥
≤ => ≤
≈ => ≈
≠ => ≠
≡ => ≡
§ => §
& => &
∞ => ∞

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

Как окажется позже, мой клиент просто добавил в базу пару позиций, указав в наименовании символ кавычек и знак меньше (<). Это, на первый взгляд невинное действие, и стало виновником испорченной выгрузки. Файл с обменом, сформированный ImageCMS содержал недопустимые символы и 1С’ка напрочь отказывалась его обрабатывать.

Проблема решается просто

Вечером, вернувшись с работы, я принялся осматривать сформированный файл выгрузки. С помощью текстового редактора я заменил недопустимые XML символы и сразу проверил загрузку файла в 1С. Она прошла успешно. Мне ничего не осталось, как оперативно пропатчить файл сценария exchange.php (в нем реализована логика обмена):

$someProduct = str_replace("&", "&", $product->product_name);
$someProduct = str_replace('"', """, $someProduct);
…

Этот код заменяет недопустимые символы соответствующими мнемониками.

В сухом остатке

Понимаю, что проблема мелочная и для исправления (при наличии соответствующего опыта) требуется немного времени. Огорчает, что разработчики забивали на это в течение 4-х версий! А быть может, забивают и до сих пор.

В связи с этим у меня возникает резонный вопрос: «Почему их CMS столько стоит?». Супер качественная? Нет, баги есть и их много. Замечательна поддержка? Опять нет, в свое время мы с ней повоевали. 1С:Битрикс, NetCat стоят не намного дороже, но там таких откровенных фейлов нет. Я молчу о diafan, цена которого в два раза меньше, но работает он в разы стабильней и функциями совершенно не обделен. Спрашивается, из чего тогда складывается такая стоимость и как происходит пре-продакшн тестирование? На живых пользователях?

Комментариев: 4 RSS

К сожалению, из таких мелочей в результате и складывается мнение о продукте. У ImageCMS этих косяков просто нереально много. Работает все только с первого взгляда, а стоит копнуть глубже, сразу понимаешь весь масштаб рукожопости программистов. :)

Никогда не забуду, как мы с тобой поймали первый косяк сразу после установки. Тогда была еще 3.ххх. Помнишь? Пароль админа подставлялся в базе дефолтный, а не введенный во время установки. Забавно было :-) Тогда мы думали, что на этом все проблемы кончаются. Увы, они только начинались.

Помню, конечно же =) При этом следующий же нежданчик случился при попытке зайти на главную страницу свежеустановленной CMS: PHP Fatal error. Я был в шоке... ведь это был stable релиз! :-D

И на каждом stable релизе возникала !stable херня :-)

Оставьте комментарий!
comments powered by HyperComments