Реализация экспорта товаров из сайта в 1С (CommerceML)

Ручной перенос заказов из интернет-магазина в 1С отнимает время и грозит ошибками в каждой десятой строке. Мы автоматизируем экспорт товаров и заказов по протоколу CommerceML, настраивая надёжный обмен данными между сайтом и 1С. Наша команда реализует проект под ключ — от аудита и настройки до последующей поддержки, чтобы синхронизация работала стабильно и без срыва сроков.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Реализация экспорта товаров из сайта в 1С (CommerceML)
Сложный
~5 дней
Часто задаваемые вопросы

При ручной передаче заказов из интернет-магазина в 1С бухгалтер тратит 2-3 часа ежедневно, а вероятность ошибки — каждая десятая строка. Автоматический экспорт товаров из сайта в 1С по CommerceML решает эту проблему: данные передаются мгновенно, без опечаток и потерь. Наша команда имеет 7+ лет опыта интеграции с 1С, включая работу с типовыми и нетиповыми конфигурациями. Мы гарантируем корректную передачу данных и полное логирование для отладки.

Один из наших проектов — интернет-магазин с 10 000 заказов в месяц. Раньше бухгалтер тратил 3 часа ежедневно на ручной ввод, что обходилось компании в $4.5k–6.5k зарплаты в год. После внедрения экспорта заказов по CommerceML2 время сократилось до 10 минут в день.

В этой статье разберём, какие данные можно экспортировать, как настроить генерацию sale.xml, обработать подтверждения и обновить статусы. Также рассмотрим типичные сложности и способы их избежать.

Почему экспорт заказов в 1С — нетривиальная задача?

Проблема не в генерации XML — это прямо. Сложности начинаются при сверке идентификаторов: если товар создан на сайте (без GUID из 1С), его нельзя просто передать — нужно либо создать позицию в 1С, либо сопоставить по артикулу. Вторая проблема — кодировка: некоторые версии 1С ожидают файлы в Windows-1251, а сайты обычно работают в UTF-8. Наконец, тестирование требует доступа к тестовой базе 1С, что не всегда есть на начальном этапе.

Какие данные передаются в 1С?

Наиболее распространённые сценарии экспорта:

Данные CommerceML файл Периодичность
Новые заказы sale.xml По событию / каждые N минут
Изменения статусов заказов sale.xml По событию
Остатки на сайте offers.xml По расписанию
Клиенты (покупатели) import.xml По расписанию

Для каждого сценария настраивается своя логика: какие именно данные попадают в XML, как часто передаются и как обрабатываются ошибки.

Как мы генерируем sale.xml

Реализуем класс SaleXmlGenerator, который строит дерево КоммерческаяИнформация с документами-заказами:

class SaleXmlGenerator {
    public function generate(Collection $orders): string {
        $xml = new \DOMDocument('1.0', 'UTF-8');
        $root = $xml->createElement('КоммерческаяИнформация');
        $root->setAttribute('ВерсияСхемы', '2.10');
        $xml->appendChild($root);

        foreach ($orders as $order) {
            $orderNode = $xml->createElement('Документ');
            $this->addElement($xml, $orderNode, 'Ид', $order->uuid);
            $this->addElement($xml, $orderNode, 'Номер', $order->number);
            $this->addElement($xml, $orderNode, 'Дата', $order->created_at->format('Y-m-d'));
            $this->addElement($xml, $orderNode, 'Сумма', number_format($order->total, 2, '.', ''));
            $this->addElement($xml, $orderNode, 'Валюта', 'USD');

            // Контрагент
            $client = $xml->createElement('Контрагенты');
            $agent = $xml->createElement('Контрагент');
            $this->addElement($xml, $agent, 'Наименование', $order->customer_name);
            $this->addElement($xml, $agent, 'Роль', 'Покупатель');
            $client->appendChild($agent);
            $orderNode->appendChild($client);

            // Товары
            $products = $xml->createElement('Товары');
            foreach ($order->items as $item) {
                $product = $xml->createElement('Товар');
                $this->addElement($xml, $product, 'Ид', $item->product->onec_guid);
                $this->addElement($xml, $product, 'Наименование', $item->product->name);
                $this->addElement($xml, $product, 'Количество', $item->quantity);
                $this->addElement($xml, $product, 'ЦенаЗаЕдиницу', number_format($item->price, 2, '.', ''));
                $this->addElement($xml, $product, 'Сумма', number_format($item->total, 2, '.', ''));
                $products->appendChild($product);
            }
            $orderNode->appendChild($products);
            $root->appendChild($orderNode);
        }

        return $xml->saveXML();
    }
}

Пошаговая инструкция по запуску генерации

  1. Создайте экземпляр SaleXmlGenerator.
  2. Передайте коллекцию заказов (с загруженными товарами и контрагентами).
  3. Вызовите метод generate() — получите строку XML.
  4. Проверьте валидность XML через DOMDocument::validate.
  5. Отдайте файл по запросу 1С через HTTP-эндпоинт.

Как происходит подтверждение получения?

После загрузки заказов 1С отправляет список GUID успешно обработанных документов. Сайт помечает их как sent_to_1c = true. Это защищает от повторной передачи и даёт прозрачную историю синхронизации:

public function markAsSent(Request $request): Response
{
    $guids = explode("\n", $request->getContent());
    Order::whereIn('uuid', array_filter($guids))
        ->update(['sent_to_1c' => true, 'sent_to_1c_at' => now()]);
    return response('success');
}

Как обновляются статусы из 1С?

1С может возвращать обновлённые статусы заказов (оплачен, отгружен, отменён). Сайт принимает их через POST-запрос и обновляет поля заказов:

public function processSaleResponse(string $xmlPath): void {
    $xml = simplexml_load_file($xmlPath);
    foreach ($xml->Документ as $doc) {
        $guid = (string) $doc->Ид;
        $status = (string) $doc->Статус;
        Order::where('uuid', $guid)->update([
            'status' => $this->mapOnecStatus($status),
            'onec_status' => $status,
            'status_updated_at' => now(),
        ]);
    }
}

private function mapOnecStatus(string $onecStatus): string {
    return match($onecStatus) {
        'Оплачен' => 'paid',
        'Передан на склад' => 'processing',
        'Отгружен' => 'shipped',
        'Отменён' => 'cancelled',
        default => 'unknown',
    };
}

Что входит в реализацию экспорта?

Мы предоставляем:

  • Разработку генератора XML под вашу структуру заказов
  • Обработку подтверждений и обновление статусов
  • Механизм сопоставления товаров по артикулу при отсутствии GUID
  • Тестирование на тестовой базе 1С (доступ предоставляется клиентом)
  • Документацию и обучение ваших специалистов
  • Поддержку в течение 2 недель после сдачи

Стоимость рассчитывается индивидуально и зависит от сложности интеграции. Экономия времени на ручном вводе — до $4.5k–6.5k в год.

Типичные сложности

Частые проблемы: пустые GUID товаров (если товар создан на сайте), несоответствие кодировок (Windows-1251 vs UTF-8), сложности тестирования без тестовой базы 1С. Для решения используем сопоставление по артикулу, конвертацию кодировок и помощь в настройке тестовой среды.

Сравнение: CommerceML2 против ручного ввода

Критерий CommerceML2 экспорт Ручной ввод
Время на передачу 50 заказов 2 минуты 2-3 часа
Вероятность ошибки 0.1% 10%
Затраты Входит в интеграцию Экономия до $4.5k–6.5k/год

CommerceML2 экспорт в 5 раз быстрее ручного ввода и снижает количество ошибок на 90%. Закажите экспорт под ключ — получите консультацию инженера.

Как проверить корректность экспорта?

Первый шаг — убедиться, что в sale.xml попали все заказы с корректными суммами и GUID. Для этого мы генерируем XML в тестовом режиме, загружаем его в 1С и сверяем количество документов. Второй шаг — проверить, что после подтверждения статус заказов на сайте изменился на "передан в 1С". Третий шаг — обновить статус из 1С и убедиться, что сайт его принял.

Сроки и стоимость

Разработка экспорта заказов с подтверждением и обновлением статусов занимает 8–14 рабочих дней. Оценка точного срока проводится после анализа вашей учётной системы.

Чтобы обсудить детали, оставьте заявку — мы свяжемся с вами в течение дня.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060