Автоматическая синхронизация заказов WordPress и 1С

Интеграция интернет-магазина на WordPress с системой 1С позволяет автоматизировать учет заказов, складских остатков и финансов. В этой статье подробно рассмотрим, как организовать автоматическую синхронизацию заказов между WordPress и 1С, какие плагины использовать и приведем примеры кода для реализации.

Почему важна синхронизация заказов между WordPress и 1С

Большинство российских компаний ведут учет товаров и заказов в 1С, а интернет-магазины часто работают на WordPress с WooCommerce. Без синхронизации приходится вручную переносить данные, что приводит к ошибкам и задержкам. Автоматизация позволяет:

  • Обновлять статусы заказов в 1С и WordPress в реальном времени;
  • Обеспечивать актуальность остатков на складе;
  • Автоматически создавать заказы в 1С при оформлении на сайте;
  • Уменьшать трудозатраты на обработку заказов.

Реализация синхронизации требует настройки обмена данными, обработки ошибок и безопасности.

Обзор популярных плагинов для интеграции WordPress и 1С

Существуют готовые решения, которые упрощают интеграцию:

  • 1C Integration for WooCommerce — плагин для обмена заказами, товарами и остатками. Поддерживает выгрузку заказов в 1С и обновление статусов.
  • WPClever Sync with 1C — автоматизирует импорт и экспорт данных, имеет гибкие настройки.
  • Custom API Integration — использование REST API и вебхуков для глубокой кастомизации синхронизации.

Выбор зависит от задач, объема данных и бюджета. Далее рассмотрим пример создания собственного решения на базе REST API.

Создание собственного решения синхронизации заказов: пример кода

Для примера реализуем экспорт новых заказов из WordPress в 1С через REST API, используя хуки WooCommerce.

Регистрация REST API эндпоинта для приема данных из 1С

add_action('rest_api_init', function() {
    register_rest_route('wporder/v1', '/update-order-status/', array(
        'methods' => 'POST',
        'callback' => 'wporder_update_order_status',
        'permission_callback' => function () {
            return current_user_can('manage_woocommerce');
        }
    ));
});

function wporder_update_order_status(WP_REST_Request $request) {
    $order_id = $request->get_param('order_id');
    $status = $request->get_param('status');

    $order = wc_get_order($order_id);
    if (!$order) {
        return new WP_Error('no_order', 'Заказ не найден', array('status' => 404));
    }

    $order->update_status($status);

    return array('success' => true, 'message' => 'Статус заказа обновлен');
}

Этот код регистрирует API, куда 1С может отправлять POST-запросы для обновления статуса заказа.

Отправка новых заказов из WordPress в 1С

Используем хук woocommerce_thankyou, который срабатывает после оформления заказа:

add_action('woocommerce_thankyou', 'wporder_send_order_to_1c', 10, 1);

function wporder_send_order_to_1c($order_id) {
    if (!$order_id) return;

    $order = wc_get_order($order_id);
    if (!$order) return;

    $data = array(
        'order_id' => $order->get_id(),
        'total' => $order->get_total(),
        'items' => array(),
        'customer' => array(
            'email' => $order->get_billing_email(),
            'phone' => $order->get_billing_phone(),
            'name' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
        ),
    );

    foreach ($order->get_items() as $item_id => $item) {
        $product = $item->get_product();
        $data['items'][] = array(
            'product_sku' => $product ? $product->get_sku() : '',
            'quantity' => $item->get_quantity(),
            'price' => $item->get_total(),
        );
    }

    $response = wp_remote_post('https://your-1c-server.com/api/orders', array(
        'method' => 'POST',
        'headers' => array('Content-Type' => 'application/json'),
        'body' => json_encode($data),
        'timeout' => 20,
    ));

    if (is_wp_error($response)) {
        error_log('Ошибка отправки заказа в 1С: ' . $response->get_error_message());
    } else {
        error_log('Заказ ' . $order_id . ' успешно отправлен в 1С');
    }
}

В этом примере после оформления заказа данные отправляются в 1С в формате JSON. В 1С должен быть настроен API для приема таких данных.

Обработка ошибок и повторная отправка заказов

При обмене данными возможны сбои — сеть недоступна, сервер 1С не отвечает. Рекомендуется:

  • Логировать ошибки в отдельный файл или таблицу базы данных;
  • Создавать очередь заказов для повторной отправки;
  • Использовать WP-Cron для периодической проверки и повторной отправки неудачных запросов;
  • Уведомлять администратора о проблемах.

Пример простой функции для повторной отправки заказов из очереди:

function wporder_retry_failed_orders() {
    $failed_orders = get_option('wporder_failed_orders', array());
    foreach ($failed_orders as $key => $order_data) {
        $response = wp_remote_post('https://your-1c-server.com/api/orders', array(
            'method' => 'POST',
            'headers' => array('Content-Type' => 'application/json'),
            'body' => json_encode($order_data),
            'timeout' => 20,
        ));
        if (!is_wp_error($response)) {
            unset($failed_orders[$key]);
        }
    }
    update_option('wporder_failed_orders', $failed_orders);
}
add_action('wp_loaded', 'wporder_retry_failed_orders');

Использование плагинов для упрощения синхронизации

Если разработка собственного решения кажется сложной, можно использовать плагин 1C Integration for WooCommerce от WPSHOP.RU. Он позволяет настроить обмен заказами и остатками без программирования, поддерживает автоматическую выгрузку и загрузку данных.

Преимущества использования этого плагина:

  • Готовые настройки для обмена с 1С;
  • Поддержка разных версий 1С;
  • Удобный интерфейс в админке;
  • Регулярные обновления и поддержка.

Безопасность при синхронизации данных

Обмен данными между WordPress и 1С должен быть защищен. Рекомендуется:

  • Использовать HTTPS для всех запросов;
  • Реализовать проверку подлинности запросов (например, с помощью токенов API);
  • Ограничить доступ к REST API по IP;
  • Логировать все операции для аудита.

В примере выше в permission_callback добавлена проверка прав пользователя, но для внешних систем лучше использовать отдельную авторизацию.

Итоги и рекомендации

Автоматическая синхронизация заказов между WordPress и 1С значительно упрощает работу интернет-магазина, снижает ошибки и ускоряет обработку. Можно использовать готовые плагины или разработать собственное решение на базе REST API и хуков WooCommerce. Главное — обеспечить надежность, безопасность и удобство сопровождения интеграции.

Автоматическое установление и настройка WooCommerce через код в WordPress
19.03.2026
Автоматическое удаление старых заказов в WordPress: практическое руководство
08.12.2025
Автоматическое создание отчёта по просмотрам и активности пользователей в WordPress
03.01.2026
Автоматизация обновления метаданных товаров WooCommerce в WordPress
07.04.2026
WooCommerce: как использовать хуки для добавления собственного контента в страницу заказа
25.04.2026