Преамбула.
В настоящее время торговля в глобальной сети развивается гигантскими шагами. Появляется огромное количество сайтов и интернет-магазинов самого разного уровня и содержания. Сегодня в процессе создания любого сайта/интернет-магазина не обойтись без системы управления контентом (CMS). Иначе CMS называют «движком» сайта/интернет-магазина. Но какой «движок» выбрать? Ведь на сегодняшний день на рынке присутствует не один десяток систем. А в нашей стране (по моему мнению), где большинство компаний (больших и малых) продающих товары/услуги ведут учет в программе на базе 1С (неважно какой), актуальность обмена данными с интернет-магазином возрастает с каждым днём. И если, интернет-магазин базируется не на Битриксе, то возникают большие проблемы (а может и нет, могу ошибаться), да и с Битриксом далеко не всё так «гладко и сладко».
Проблем обмена с сайтом/интернет-магазином из 1С интересовала давно, и когда в прошлом году начал в плотную заниматься вопросом в каком направлении «копать», изучал множество CMS. Основными критериями были:
1. Только он-лайн обмен, без файла обмена.
2. Без вмешательства в платформу сайта, использовать только те инструменты, что предоставляет сайт.
3. Минимум финансовых затрат, максимально обходиться тем, что дается бесплатно.
4. Без вмешательства в 1С (внешняя обработка/отдельная конфигурация), использовать только те инструменты, что предоставляет 1С.
5. Настройка работы должна быть простой и минималистичной.
Что касается CMS, «копание» было недолгим, посмотрите рисунки, я думаю вы все поймете почему выбор пал на WordPress (источник сайт «itrack.ru», данные на 2019 год, но суть не меняется). Рис.1.1
рис 1.1-общий рейтинг CMS
рис 1.2-рейтинг бесплатных CMS
рис 1.3-динамика числа установок CMS
рис 1.4-динамика числа установок CMS
И всё же, почему 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С? Смотрите рис.
Установка/подключение программы.
Прототип присутствует в двух вариантах: в виде конфигурационного файла и в виде готовой информационной базы. Если вы скачиваете конфигурационный файл, то знаете, как с ним работать и что с ним делать, поэтому инструкции по работе с ним писать не буду.
Инструкция по подключению информационной базы.
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.
Продолжение следует.
В следующей части будем публиковать/изменять/удалять категории постов/страниц, сами посты/страницы.
Обработка тестировалась:
Тестировалось на моем сайте: перейти.
Версия WordPress: 5.2
MySQL Версия : 5.7.23-24
PHP Версия : 7.3.6
Платформа: 1С:Предприятие 8.3 (8.3.13.1644)
P.S. Если вам интересна описанная в публикации тема, вы готовы посвятить этому некоторое своё свободное время, есть желание, милости прошу присоединиться к моему проекту, пишите, не стесняйтесь.