Интеграция «нетленки» (самописной конфигурации 1С) с сайтом на WordPress/WooCommerce — это классическая задача, которая часто осложняется отсутствием в конфигурации Библиотеки Стандартных Подсистем (БСП) и готовых модулей обмена. В данной статье мы проанализируем ситуацию, рассмотрим несколько проверенных стратегий интеграции и разберем технические нюансы работы с данными на обеих сторонах.
Этот метод считается наиболее современным и гибким. WordPress предоставляет мощный интерфейс API, который позволяет управлять товарами, заказами и пользователями через HTTP-запросы. Разберем по шагам, почему этот вариант часто выигрывает у классических методов.
Во-первых, начиная с платформы 8.3.6, в 1С реализованы эффективные механизмы работы с форматом JSON. Мы можем использовать объекты ЗаписьJSON и ЧтениеJSON для формирования пакетов данных. Это работает значительно быстрее, чем парсинг тяжелых XML-структур.
Рассмотрим пример кода для отправки данных об остатках товара через REST API:
Копировать код
// Формирование структуры данных
ДанныеТовара = Новый Структура;
ДанныеТовара.Вставить("regular_price", Строка(ЦенаТовара));
ДанныеТовара.Вставить("stock_quantity", КоличествоОстаток);
ДанныеТовара.Вставить("manage_stock", Истина);
// Сериализация в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеТовара);
СтрокаJSON = ЗаписьJSON.Закрыть();
// Отправка запроса
HTTPСоединение = Новый HTTPСоединение("ваш-сайт.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/wp-json/wc/v3/products/" + IDТовараНаСайте);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
// Здесь должна быть авторизация (например, Basic Auth или Application Passwords)
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);
Ответ = HTTPСоединение.ВызватьHTTPМетод("PUT", Запрос);
Выясним причину, почему это удобно: вам не нужно устанавливать на стороне WordPress дополнительные плагины, если вас устраивает штатный функционал API. Однако помните о безопасности: используйте механизм "Application Passwords" (Пароли приложений), который появился в последних версиях WordPress, чтобы не передавать основной пароль администратора в открытом виде.
Если в вашей «нетленке» уже есть опыт написания выгрузки по стандарту CommerceML (который используется для обмена с Битриксом), этот путь может оказаться самым быстрым. Для WooCommerce существуют плагины (например, от IT Galaxy или другие аналоги), которые создают на стороне сайта endpoint (адрес приема данных), имитирующий логику 1С-Битрикс.
Проанализируем преимущества этого подхода:
При использовании этого метода на стороне 1С вам придется реализовать формирование XML-файлов import.xml и offers.xml. Если в конфигурации нет БСП, это делается через ЗаписьXML вручную.
Классическая схема обмена подразумевает, что 1С периодически опрашивает сайт на предмет новых заказов. Однако мы можем посмотреть на ситуацию под другим углом и использовать Webhooks.
WooCommerce может сам инициировать передачу заказа в 1С в момент его создания или изменения статуса. Для этого в 1С необходимо опубликовать HTTP-сервис. Как только покупатель нажимает кнопку «Оформить заказ», сайт отправляет POST-запрос с данными заказа в формате JSON на ваш сервер 1С.
Преимущества работы через Webhooks:
Иногда возникает соблазн подключаться напрямую к базе данных сайта через ADODB.Connection или внешние источники данных. Однако выясним причину, почему это считается плохой практикой.
Структура хранения данных в WordPress основана на модели EAV (Entity-Attribute-Value). Это означает, что основные свойства товара (цена, артикул, вес, остаток) хранятся не в таблице товаров, а в таблице wp_postmeta в виде сотен строк мета-данных. Разберем пример: чтобы обновить цену, вам недостаточно выполнить простой UPDATE одной колонки. Вам нужно найти строку, где meta_key = '_price' и post_id = ID_товара, и обновить значение там. Ошибка в таком запросе может легко нарушить целостность базы данных или «уронить» сайт при высокой нагрузке.
Важный нюанс: если вы обновляете остатки напрямую в БД, WordPress может не узнать об изменениях и будет продолжать отдавать старые данные из кэша (например, если используется плагин кэширования типа WP Rocket или Redis).
Если бюджет позволяет и «нетленка» слишком специфична, можно использовать схему-посредник. Разверните пустую базу «1С:Розница» или «1С:УНФ», где механизмы обмена с сайтами уже отлажены годами. Настройте простую синхронизацию между вашей «нетленкой» и «Розницей» (это сделать гораздо проще внутри экосистемы 1С), а «Розница» пусть отвечает за обмен с WooCommerce по штатным протоколам.
При передаче картинок из «нетленки» важно учитывать, что WordPress — это не просто файловое хранилище. Каждое изображение должно быть зарегистрировано в базе данных как объект attachment. Рассмотрим правильный алгоритм при работе через API:
/wp-json/wp/v2/media.ID созданного вложения.ID к товару, передавая его в массиве images.Для стабильной и масштабируемой работы мы рекомендуем остановиться на комбинации REST API для выгрузки остатков/цен и Webhooks для загрузки заказов. Это обеспечит максимальную скорость работы и чистоту архитектуры. Если же стоит задача «сделать быстро и забыть», а бюджет позволяет купить готовый плагин, выбирайте путь CommerceML, так как он берет на себя всю сложную логику сопоставления полей WordPress.