Інтеграція 1С з сайтом (магазином) WordPress (WooCommerce) за допомогою Rest API сайту.

Інтеграція 1С з сайтом (магазином) WordPress (WooCommerce) за допомогою функціоналу Rest API надається платформою (CMS) WordPress (WooCommerce). Без додаткових додатків на PHP / вставте сюди будь-яку іншу мову програмування /.

Преамбула.

В даний час торгівля в глобальній мережі розвивається гігантськими кроками. З’являється безліч сайтів та інтернет-магазинів самого різного рівня і змісту. Сьогодні в процесі створення будь-якого сайту / інтернет-магазину не обійтися без системи управління контентом (CMS). Інакше CMS називають «двіжком» сайту / інтернет-магазину. Але який «движок» вибрати? Адже на сьогоднішній день на ринку присутні не один десяток систем. А в нашій країні (на мою думку), де більшість компаній (великих і малих) продають товари / послуги ведуть облік в програмі на базі 1С (неважливо який), актуальність обміну даними з інтернет-магазином зростає з кожним днем. І якщо, інтернет-магазин базується не на Бітрікс, то виникають великі проблеми (а може і ні, можу помилятися), та й з Бітрікс далеко не все так «гладко і солодко».

Проблеми обміну з сайтом / інтернет-магазином з 1С цікавили давно, і коли в минулому році почав по серйозному займатися питанням в якому напрямку «копати», вивчав безліч CMS. Основними критеріями були:

1. Тільки он-лайн обмін, без файлу обміну.
2. Без втручання в платформу сайту, використовувати тільки ті інструменти, що надає сайт.
3. Мінімум фінансових витрат, максимально обходитися тим, що дається безкоштовно.
4. Без втручання в 1С (зовнішня обробка / окрема конфігурація), використовувати тільки ті інструменти, що надає 1С.
5. Налаштування роботи повинне бути простим і мінімалістичним.

І все ж, чому WordPress? Плюсів у ньому на порядок більше, ніж в інших платформах, але це тема окремої статті, якщо цікаво готовий потім написати. У двох словах скажу, що, якщо ви хоч трохи розберетеся з WordPress, вам не потрібні будуть дизайнери, верстальники, PHP-програмісти та інші, пов’язані з сайтом. І самий жирний « + » це те, що WordPress був найпростішим у вивченні для початківців. І найголовніше REST API. Адже REST API WordPress / WooCommerce і сам WordPress повністю задовольняє перші три моїх принципи.

1. Он-лайн обмін – він для цього і створений.
2. Надається платформою (спільнотою розробників WordPress / WooCommerce).
3. Безкоштовно. Також в WordPress безліч безкоштовних програм та інструментів, які потрібні для сайту.

Що стосується боку 1С, то пункт 4 теж безпроблемний, що стосується пункту 5, не скажу, що просто, але простіше налаштувань Бітрікс з обміну з сайтом – однозначно.

Також зіграло величезну роль те, що REST API WordPress був дуже добре документований, було безліч розробок і прикладів використання в інтернеті, вбудований в CMS. І найголовніше він бурхливо розвивається, і приростає все новими і новими функціями ( «кінцевими точками» висловлюючись мовою розробників). Забігаючи трохи вперед скажу, що вже є чимало плагінів, які надають свої REST API, тим самим розширюють можливості WordPress. Такий один, дуже цікавий з моєї точки зору, «Booking» (он-лайн запис на прийом / ремонт до фахівця, в загальному там багато «фішок»), використовую в вивченні та тестуванні.

З чого почати?

Напевно, з самого головного питання «Як з’єднатися з сайтом?»

У цій статті розповім вам про два моменти, без яких буде неможливо здійснювати обмін з сайтом. І найголовніше авторизуватися на сайті для подальшої роботи з обміну даними. Шукав довго і наполегливо, пробував багато способів і пропоновані розробниками, і Basic Auth, і плагінами для WordPress, все виявилися замороченим і складним, і як правило потрібно втручатися в роботу сайту, редагування htaccess, або чогось іншого. В тому числі, значно ускладнювали код 1С.
Але вихід був знайдений, і як зазвичай, «все геніальне просто», полягав він в JSON Web Token (JWT) . Що це таке ви можете прочитати в вікіпедії, там все досить докладно описано.

Перший момент – нам JWT потрібен для авторизації на сайті і отримання доступу до REST API сайту.
Другий момент – це плагін для генерації токенів.

Я переглянув і протестував кілька плагінів для отримання JWT. Але всі вони виявилися або застарілими, або складні в налаштуванні. Зупинився на одному, він називається Advanced Access Manager (ААМ) . Правда він призначений для іншого, але нам це не важливо. Важливим є те, що він відмінно справляється з головним для нас завданням – генерацією токенів.

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

Установка і настройка Advanced Access Manager (ААМ).

Заходимо на сайт в консоль адміністрування. Заходимо на сторінку плагінів і тиснемо кнопку “Додати новий” .

У рядку пошуку вводимо «AMM». Після цього тиснемо кнопку “Встановити” .

Після установки активуємо плагін натиснувши кнопку “Активувати” .
На цьому процес установки завершений.

Налаштування ААМ для генерації токенов

Відкриємо настройки плагіна.

Кількома на вкладку Settings .

Ставимо перемикачі як на картині.

Решту можна залишити за замовчуванням.

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

Далі йдемо знову в управління AAM. Кількома в правій панелі вкладку «users» .

Кількома на «шестерню».

Тепер в лівій панелі натискаємо як на малюнку.

Створюємо новий токен натиснувши кнопку «+ Create»

Задаємо дату закінчення дії токена і тиснемо «Create»

Подивитися, скопіювати токен можна натиснувши «очей»

Все … Нам більше нічого від сайту не треба, хіба що скопійований в буфер обміну сам токен.

Програма (конфігурація) «1C WordPress Rest API service»

 

Хочу поділитися своїм досвідом і знайти тих, у кого є бажання і можливість розвинути напрямок, описаний вище, і взяти безпосередню участь в розробці прототипу програми (конфігурації) з обміну даними між 1С і сайтом WordPress по протоколу RestAPI. І не тільки з WordPress, але можливо і інших CMS (Joomla, OpenCart, правда документація і опис у них не йде ні в яке порівняння з WordPress, але є), адже навіть Бітрікс не так давно заявив про своє RestAPI.
У представленому прототипі поки реалізована тільки перша частина, авторизації з сайтом. Але в наступних частинах ми разом будемо розкривати величезний потенціал і функціонал, який надає нам WordPress.
Короткий опис представленого прототипу.

 

Загальні глобальні модулі (сподіваюся назви говорять самі за себе):
1. Процедури і функції загального призначення


2. Процедури і функції роботи з сайтом

Константи:
1. СоединениеССайтом_JWTServer (Строка подключения к сайту (host) без https://)
2. СоединениеССайтом_JWToken (Токен полученный от сайта)
3. СоединениеССайтом_Таймаут (Таймаут (секунд) подключения к сайту)
4. СоединениеССайтом_ЭтоHTTPS_Соединение Флаг указывающий на HTTPS-соединение.
Невелика ремарка , HTTP-з’єднання, не пройшло перевірку, тому, як буде працювати прототип з ним не знаю.
Сподіваюся, що необхідність заповнення значень констант не викликає сумнівів, так як на поточний момент перевірки цього програмі немає.

Загальні форми:
1. Форма констант. Тут зберігаються дані, які нам завжди необхідні для обміну з сайтом.

2. Форма перегляду відповіді з сайту (отладочная). Тут можна подивитися “сиру”, необроблений відповідь з сайту.


Довідники:
1. Визначені значення маршрутів і кінцевих точок Rest API. Зроблено для зручності і категоризації маршрутів і кінцевих точок.


Регістри відомостей:
1. Визначені ключі і значення для RestAPI. Тут зберігаються пари «ключ» і «значення» для обміну з сайтом по RestAPI. Для зручності швидкої вибірки або пошуку. 

 

В контексті даної публікації це все.

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

За допомогою неї ви зможете подивитися у відповіді від сайту список (обмежений 10 шт.):

1. Категорія / група постів / сторінок, наявних на сайті.

2. Медіа / фото / відео файлів, що зберігаються на сайті.

3. Пости опубліковані на сайті.

4. Сторінки опубліковані на сайті.

5. Перевірити валідність токена.

Установка програми.

Важливе попередження !!!
Версія платформи 1С на якій буде коректно працювати програма повинна бути більше 8.3.6
Як дізнатися версію вашої платформи 1С? Дивіться рис.

2.1.Варіант бази-джерела-файловий

Установка / підключення програми.
Прототип присутній в двох варіантах: у вигляді конфігураційного файлу і у вигляді готової інформаційної бази. Якщо ви завантажуєте конфігураційний файл, то знаєте, як з ним працювати і що з ним робити, тому інструкції по роботі з ним писати не буду.
Інструкція по підключенню інформаційної бази.
1. Скачайте і розпакуйте архів з програмою в будь-який каталог вашого диска. Повинен з’явитися файл з ім’ям “1Cv8.1CD” (далі по тексту “ФП” – файл програми).
2. Створіть папку на диску і перенесіть туди ФП (можна розпакувати з разу в цю папку).
3. Запустіть 1С. З’явиться вікно зі списком інформаційних баз (або з порожнім списком).

4. Натисніть кнопку “Додати”.
5. Виберіть (о) “Додавання в список існуючої інформаційної бази”.

6. Натисніть кнопку “Далі”.
7. Внесіть найменування та натисніть кнопку […], і виберіть папку в яку зберегли ФП в п. 2.

8. Натисніть кнопку “Далі”.

9. Натисніть кнопку “Готово”.

На цьому установка / підключення програми завершена.

Для запуску програми натисніть кнопку “1С: Підприємство”.

*** Важливе зауваження.

Загальна для всього контексту пов’язаного з числовими значеннями: все числа передаються на сайт за допомогою запитів повинні передаватися в числовому форматі ‘123654987.321’, формат 1С ‘123 235 987.123’ (значення, розділені тисяч) буде видавати помилку! Або в текстовому вигляді “123145.113”. Числовий формат кращий.

Щоб налаштувати числовий формат в конфігураторі перейдіть “Адміністрування” -> “Регіональні установки інформаційної бази” і встановіть настройки числа як на малюнку.

 

На цьому все, перша частина закінчена.

Бажаю приємних експериментів на ниві обміну з 1С з сайтом WordPress.

Далі буде.