Опис однієї інтеграції 1С і Бітрікс, і чому я не рекомендую своїм клієнтам використовувати таку інтеграцію

Зроду такого не було, і знову те ж саме.
В. С. Черномирдін.

Я вже говорив про обмін даними між програмними продуктами сімейства 1С і Бітрікс-сайтами в статті Інтеграція програмного забезпечення. Опис процесу від бізнес консультанта. Але тоді я розповів виключно про загальні принципи роботи. В іншій статті я написав про проблеми 1С і Битрикса.

Сьогодні я постараюся не просто описати проблему інтеграції сайтів на Бітрікс і програмних продуктів 1С, але розповім детально про можливі «підводні камені», з якими стикаються фахівці, опишу конкретні проблеми, а також можливі шляхи їх вирішення.

Я вже говорив і не один раз, що програмні продукти сімейства 1С відрізняються великим числом помилок, вимагають регулярних оновлень, але при кожному оновленні часто доводиться налаштовувати роботу конфігурації, а також всі плагіни, надбудови, а також обмін даними з іншими компонентами, програмами, системами.


Саме з такою проблемою до мене звернувся не так давно клієнт, представник веб-студії. Ось так виглядало його пропозиція про співпрацю:

Доброго дня! Треба терміново доробити синхронізацію сайту і 1С, точніше — виконати вивантаження товарів, цін і фото з 1С 8.3 (остання версія) на сайт. Допомога потрібна терміново, якщо ви вільні, напишіть мені, як з вами зв'язатися, щоб розповісти про проблему детальніше. Заздалегідь вдячний


Як і багато колеги, я також зареєстрований на фріланс-біржах, а тому подібні запити мене не дивують. Час у мене було вільне, було далеко за північ, але я все ж вирішив взятися.

Як я і припускав, сайт виявився на Бітрікс. Замовник надав мені віддалений доступ, окреслив суть проблеми і я приступив до роботи.

Отже, вихідні дані следующии:
  1. Є 1С Управління торгівлі. За словами клієнта — остання версія
  2. Перестала працювати інтеграція. Відразу після оновлення.
  3. Клієнт стверджував, що оновився повністю.
  4. Бітрікс останньої версії
  5. Що робити?! Все пропало


Крок перший. Версія конфігурації

Перше, що я роблю завжди, це перевіряю інформацію, яку мені надає клієнт. А у випадку з 1С — обов'язково самостійно перевіряю поточну версію.

В даному випадку реліз діючій конфігурації виявився 11.1.9.5. Це означало, що конфігурація не оновилася версія не є останньої.

Природно, що я повідомив про цю помилку клієнта, після чого самостійно встановив оновлення. Конфігурація оновилася. Інтеграція так і не запрацювала.

При роботі з 1С завжди перевіряйте версію платформи і конфігурації! Це дуже важливо!

Нагадаю, що в Управлінні Торгівлею 11 заявлений стандартний модуль обміну даними між УТ.11 і Бітрікс. Це стандартний вбудований модуль, який повинен працювати без будь-яких додаткових налаштувань. Але в моєму випадку після оновлення він так і не запрацював. При запуску обміну просто не відбувалося нічого.

Крок другий. Перевірка платформи

Тоді я перевірив реліз платформи. В принципі, його варто перевіряти відразу. Особисто я раджу обов'язково завжди самостійно перевіряти релізи та платформи і конфігурації. Це настільки важливо, що я не боюся написати про це повторно.

Перевіряйте актуальність всіх релізів самостійно!

В моєму випадку з платформою було все в порядку, реліз виявився останнім, номер 8.3.5.1248, який вийшов 31.10.14. (до речі поки я писав цю статтю вийшло ще одне оновлення платформи ).

Отже, версії платформи і конфігурації в порядку, але обмін не працює.

Здавалося б, далі потрібно просто перевірити модуль на стороні Бітрікс. Але, як показала практика, для того, щоб дізнатися, який саме модуль підтримує обмін з боку Бітрікс, необхідно пройти цілий квест. Але не будемо забігати вперед. Як і обіцяв, я розповідаю докладно і по порядку, що і як я робив, і які рішення знайшов.

Крок третій. Перевіряємо цілісність бази даних

Так, першим ділом я відправився на сайт Битрикса. Я перейшов на наступну сторінку:

http://1c.1c-bitrix.ua/ecommerce/download.php

З таблиці, яка там представлена, я зробив висновок, що моя конфігурація точно відповідає версії модуля обміну.

Як і багато колег в подібній ситуації, я звернувся за допомогою до Інтернету. На одному з форумів ( mista.ru ) я знайшов інформацію про те, що якщо не йде якийсь із видів обміну, обов'язково потрібно виключити з переліку можливих проблем порушення цілісності структури бази даних. Для того щоб виконати цю дію в 1С існує вбудований інструмент: тестування і виправлення бази даних.

Отже, програма 1С провела велику і досить тривалу роботу, так як в даному випадку база даних була на файлової основі, було виправлено багато помилок. Загальний час роботи тестування і виправлення — 40 хвилин.
Чекати, звичайно, довелося довго. Але все колись закінчується. І ось, після тестування, ми з надією на краще запускаємо обмін. Знову немає ніяких результатів.

Крок четвертий. Спеціальний модуль: чи допоможе альтернативне рішення?

Після того, як не допомогла і перевірка бази даних, я згадав про те, що також прочитав на одному з форумів, що хтось із Бітрікс-фахівців сам встановлював спеціальний модуль обміну і всім його рекомендував. Ну, що ж. Я також пішов в інтернет, шукати цей модуль і з'ясовувати, навіщо він потрібен.

Я знайшов тільки один варіант релізу цього модуля, призначений для версії 4.0.5.1. Знаходиться цей реліз тут.
Я подумав, і вирішив все ж таки спробувати і скачав цей модуль інтеграції. При скачуванні я помітив, що версія цього файлу у мене на сайті далеко не перша.

Мій файл після скачування називався так:

4.0.5.1_ UT_11.1.2(3).zip

Таким чином, виявляється, я як мінімум четвертий чоловік, який намагався вирішити цю проблему і скачував цей модуль.

Далі я все ж встановив цей модуль. В архіві до нього йде невеличка брошура, що виявилося дуже до речі. Але ця сама версія файлу мені не давала спокою. І я вирішив запитати у клієнта, який за рахунком? У відповідь почув, що я вже 5 чи 6 фахівець, який намагається вирішити цю проблему.

У мене вже з'явився спортивний інтерес. Зверніть увагу: вже минуло більше години, як я почав вирішувати, здавалося б, просте завдання, але проблема досі не тільки не була розв'язана, а й шляхи її рішення все ще не були визначені.

Але все ж я встановив модуль, який вже встановлювали інші фахівці, і подивитися, що станеться з вивантаженням.

Перше, що я побачив, це явні відмінності від стандартного модуля варіанти обміну від 1С, який повинен працювати. Дуже незручно було працювати з незвичним інтерфейсом.
Крім того, всі ці дії не принесли ніякої користі.
Перевіряйте версію модуля обміну даних 1С і Бітрікс. Їх може бути декілька одночасно кілька версій, кілька різних конфігурацій.

Після спроб встановити додатковий модуль, я також звернув увагу на таку напис вгорі екрану:



Після прочитання цієї написи, я думав, що це і є остання, сама нова конфігурація. Але це було моєю помилкою. Тільки пізніше я розібрався, що є більш свіжа версія і де її скачати.

Крім того, дуже уважно потрібно стежити за вибором модуля. Особисто я спочатку заплутався у цих модулях для Росії:



Загалом, що я отримав в результаті всіх дій і перевірок:
  • Є обмін стандартний, який виходить в 1С. Він не працює.
  • Є модуль обміну даних «Для Росії». Він також не заробив.
  • Внизу є ще один модуль обміну. Але і він не працює.


Ось такий фокус виходить. Багато різних модулів, але працювати не бажає ні один.

Що мене ще збило з пантелику. Якщо ви натиснете кнопку «Вимоги 1С», то побачите таку таблицю:

1c.1c-bitrix.ua/ecommerce/require_1C.php


Тут також, виходить, що доводиться вгадувати, що і як скачувати.

Новий модуль обміну: особливості установки

Отже, я все ж скачав новий модуль обміну і впровадив його в Управління Торгівлі. Природно, при цьому я зняв конфігурацію з підтримки. Як ні дивно, але факт:

Здавалося б, доповнення створені фахівцями 1С для програмних продуктів 1С, але з підтримки конфігурацію знімати необхідно. Для користувача, це означає, що оновлення не будуть проходити стандартним методом.

При цьому на сайті і в документації присутні попередження, які можуть навіть налякати. Вам не забувають нагадати, що в разі будь-якої вашої помилки, конфігурація взагалі може перестати працювати.

Не забувайте робити Backup!

Обов'язково при будь-яких змінах робіть бекапи, так як конфігурація може перестати працювати на будь-якому з етапів: при оновленні, під час впровадження модуля, під час тестування вивантаження. Загалом, краще отримати зайвий Backup, ніж зайві проблеми.

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

З'являється наступна помилка:
Невідновна помилка
Помилка при виконанні запиту POST до ресурсу /e1cib/logForm:
через:
Помилка СУБД:
Помилка SQL: Несумісні типи вираженні
через:
Помилка SQL: Несумісні типи вираженні


При цьому, що це значить? Про що говорить ця інформація? Мені було не зрозуміло.

Для початку я вирішив переглянути відладчик. На пошук цієї помилки я витратив близько півгодини і не знайшов взагалі нічого. Чесно кажучи, тоді у мене закралися сумніви, що я впораюся з поставленим завданням.
Я пішов шукати більше інформації по темі.

І знайшов форум, на якому натрапив так таку гілку:

http://dev.1c-bitrix.ua/community/forums/forum26/topic19114/?PAGEN_1=65

Інформацію про помилку я благополучно знайшов на 65 сторінці теми.



Відповідь модераторів був наступним. Вони давали посилання на іншу тему, при цьому пояснювали, що там вже є рішення цієї проблеми, а також можна знайти багато цікавого з цієї теми.



Звичайно, я перейшов по посиланню від модераторів, і там вже дізнався, що проблема полягає в платформі.

Розробник про це писав наступне:

Наш модуль обміну зараз несумісний з платформою 8.3.5.1248. У цій платформі, схоже, змінили щось недобре. Для того, щоб модуль заробив — потрібно замінити рядки коду:
|КОЛИ ВариантыКомплектацииНоменклатурытовары.Характеристика NULL
|ТОДІ """"

На
|КОЛИ ВариантыКомплектацииНоменклатурытовары.Характеристика NULL
|ТОДІ ВИЗНАЧЕНО
В наступній версії модуля будуть внесені відповідні зміни.


Що це означає?

Адміністратор сайту 1С Бітрікс практично визнав, що помилка знаходиться в платформі 1С.

Після того, як я знайшов цю інформацію, помилка була виправлена і обмін, загалом, заробив. Але конкретно все — ні.
При вивантаженні ми виявили, що фото і номенклатура передаються, а ціни — ні. До щастя, що робити з цією проблемою, я вже знав. На стороні Бітрікс, хоч він, здавалося б, і не працює при обміні, треба провести одне редагування, а саме — в довіднику з цінами поставити галочку «Доступний зовнішнім користувачам».

Також дивна недоробка, я вважаю. Чомусь про цей нюанс в документації не написано ні слова. І в свій час я рішення цієї проблеми гикав аналогічним методом, тобто на дотик.

Що вийшло в результаті?

Задача була успішно вирішена. Ми з клієнтом все налаштували, обмін даними почав працювати так, як і повинен. Ми відпрацювали з боку 1С, фахівець з Бітрікс налаштував роботу з даними зі свого боку. В результаті було 3 години напруженої роботи.

На що було витрачено цей час?

Кожна дія вимагає певних тимчасових витрат. Оновлення займають від 10 до 15 хвилин, індексація та виправлення бази даних — 40 хвилин, кожна спроба обміну — від 15 до 18 хвилин (якщо запускати повний обмін).
В результаті ми витратили дуже багато часу для того, щоб повторно настроїти те, що прекрасно працювало перед оновленням конфігурації і платформи 1С.

Висновки

На власному досвіді, а також на основі уважного читання тієї самої гілки форуму з проблемами інтеграції та їх рішеннями, я зробив такі висновки:
  1. Бітрікс — або погано взаємодіє з компанією 1С. Напис 1С Бітрікс нічого не означає, крім того, що у цих програмних продуктів загальні власники.
  2. Настройка, здавалося б, типового обміну вимагає неабияких зусиль, при цьому завжди є ризик напоротися на помилки з непередбачуваною боку. Тобто при оновленні потрібно дуже чітко розуміти, яка використовується конфігурація, платформа, яка версія модуля застосовується, а також, треба уточнити, чи немає помилок для цього модуля.
Після того, як я розібрався з усіма нюансами, які перерахував до п. 2, я зумів впоратися з проблемою відновлення роботи обміну даних.

І ще трохи цікавого з мого особистого досвіду



Зараз я працюю над іншим проектом, і зіштовхнувся також з цікавою ситуацією. Я і фахівці, з якими я співпрацюю, відповідаємо за інтеграцію сайту з боку 1С, а на стороні Бітрікс працює сторонній фахівець. В принципі, ми з самого початку домовлялися про те, що вони напишуть нам окрему завантаження для 1С. Але в процесі роботи фахівці Бітрікс нам повідомили, що виконати цю домовленість неможливо і запропонували використовувати типовий обмін.

Що виходить в результаті:

Нам треба вивантажувати допрацьовані нашими силами довідники і дані в типовому вигляді.
Таким чином, маємо явне протиріччя. Звичайно, проблему ми обов'язково вирішимо і в цей раз, і в іншій. Тут важливо розуміти, що подібні накладки і суперечності постійні супутники кожного, хто займається інтеграцією 1С і Бітрікс.

Якщо ви зважилися застосовувати типовий обмін



Перше, що вам потрібно розуміти, що обмін, який вам пропонують, універсальний, а тому сам модуль дуже складний. Крім того, навіть на цій сторінці v8.1c.ua/edi/edi_stnd/90/92.htm ви побачите, що є кілька версій цього обміну, причому, вони регулярно змінюються. А для повноцінної налаштування роботи подібного обміну і, тим більше, для доопрацювання його під ваші потреби, вам доведеться дуже чітко розуміти, як він працює.
Для прикладу:
Формат вивантажуються даних з УТ 11.1.9.56



Формат вивантажуються даних з УТ 11.1.9.56 з допомогою модуля від Бітрікс.



Тобто маємо неузгодженість форматів вивантаження від 1с і від Битрикса для однієї і тієї ж версії платформи і конфігурації.

Взаємодія продуктів 1С і 1С-Бітрікс реалізується на базі процедур двонаправленого обміну даними. Обмін даними виконується з використанням заснованого на XML відкритого Стандарту обміну комерційною інформацією — CommerceML 2.0.

Якщо ви почитаєте, що являє собою CommerceML 2.0, ви так само, як і я, здивуєтеся тому, наскільки цей стандарт складний у порівнянні з іншими. Навіть просто опис, тобто сам файл схеми описів у форматі txt займає 107 кілобайт!

І будь-яка ваша помилка, скоріше за все, закінчиться тим, що обмін взагалі перестане працювати.

При використанні типового обміну ви змушені «підсаджувати» і себе і клієнта на постійний моніторинг змін, які відбуваються як на стороні 1С, так і на стороні Бітрікс. При кожному оновленні ви ризикуєте втратити всі зміни, які вносили в обмін. В підсумку, ви отримаєте складний, дуже «глючний» і працює практично незалежно від нас механізм. А якщо до цього додати ще й постійні оновлення 1С і Бітрікс, то замість працюючого обміну отримаємо постійний «головний біль».

Як робити інтеграцію?

Я вже давав ця рада і дам ще раз: обмін треба писати самому. Крім інтеграційних механізмів, у вас може виникнути й інша проблема: сам модуль спирається на певним чином заповнені дані. І ці правила також можуть змінюватися і регулярно змінюються.

Отже, в процесі боротьби з оновленнями» ви впоралися з платформою, з модулем, а потім натикаєтеся ще й на помилку, яка йде від невірного формату даних. Виявляється, заповнювати їх також треба певним, причому, неявним чином. Згадайте, як я у своєму прикладі вказував необхідність поставити «галочку» на стороні 1С, про яку я, на щастя, знав. А інакше б час роботи над налаштуванням обміну ще більше затяглося б. І ніде в документації про цю саму «галочці» не сказано ні слова!

В принципі, якщо ви використовуєте типовий обмін, то варто прислухатися до того, що говорить сам 1С Бітрікс словами адміністратора:
— не оновлюйтеся (в той час як 1с каже — оновлюйтеся)


Якщо ви хочете все-таки використовувати типовий модуль, послідовність ваших дій має бути такою:
  1. Перевірили версію платформу
  2. Перевірили версію конфігурації
  3. Перевірили версію модуля.
  4. Перевірили всі бази даних, переконалися, що дані підхоплюються.
  5. Перевірили відповідність версій 1С Бітрікс і програмного продукту 1С.
  6. Перевірили цілісність баз даних, якщо вони файлові.
Скоріше за все, в процесі виконання цих дій виявиться помилка. Крім того, дуже важливо пам'ятати:
Ні в якому разі не наздоганяйте типовий обмін.
При будь-яких спробах доопрацювання типового обміну ви стикаєтеся з величезною кількістю проблем у майбутньому, з необхідністю вивчати кожне оновлення модуля обміну, і щоразу вносити ваші доопрацювання нову версію заново.

Як бачите, інтеграція програмних продуктів 1С і сайтів Бітрікс — заняття досить складне, що вимагає уважності, найчастіше, досвіду, і навіть він не завжди допомагає. На жаль, допомога по новим багам, які досить стабільно приходять на заміну старим реально знайти тільки на форумах. Саме з цієї причини я волію писати обмін самостійно. Але якщо виникає необхідність, то і рішення знайдеться ( я сподіваюся ).

З повагою Раміль Кинзябулатов.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.