Двостороння синхронізація каталогу з 1С — налаштування обміну даними

Коли ціни та залишки в 1С змінюються, а сайт живе своїм життям, починаються втрати: застарілі дані, зриви замовлень і ручна рутина. Ми налаштовуємо двосторонній обмін даними між 1С і вашим сайтом, проєктуючи правила синхронізації та джерела правди для кожного поля. Наша команда реалізує інтеграцію під ключ — від аудиту до підтримки, щоб каталог завжди був актуальним і працював як єдиний механізм.

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Двостороння синхронізація каталогу з 1С — налаштування обміну даними
Складний
~2-4 тижні
Часті запитання

Двостороння синхронізація каталогу товарів з 1С

Уявіть: менеджер оновив ціну в 1С, але на сайті вона висить попередня три дні. Або товар зняли з продажу в обліковій системі, а він все ще доступний для замовлення. Двостороння синхронізація каталогу з 1С — це не просто імпорт та експорт. Це проектування системи правил, яка вирішує конфлікти даних, коли інформація змінюється в обох системах одночасно. Без чіткого визначення джерела правди синхронізація перетворюється на хаос: дані затираються, виникають дублі, губляться замовлення.

Типова ситуація: в 1С змінили ціну та залишок, а на сайті відредагували опис. Якщо обмін налаштований як односторонній імпорт, опис може бути затертий. Наш підхід — двосторонній обмін із розділенням полів на майстер-системи. Ми проектуємо логіку так, щоб сайт і 1С залишалися узгодженими без ручного втручання.

Визначення джерел правди

Перший крок — зафіксувати для кожного поля, яка система є майстром:

Поле Майстер Логіка
Назва товару 1С 1С — система номенклатури
Артикул / SKU 1С Артикул задається в обліковій системі
Опис Сайт Маркетингові тексти пишуться редактором
Ціна 1С Ціноутворення в обліковій системі
Залишки 1С Реальний облік на складах
Зображення Сайт Фото обробляються окремо
SEO-поля Сайт meta title/description — на стороні сайту
Статус активності Обидві 1С може зняти з продажу, сайт теж

Як вирішуються конфлікти при синхронізації?

Конфлікт: поле active_site було виставлено оператором сайту в false (знято з публікації), але наступне вивантаження з 1С містить active = true. За правилами таблиці вище — 1С є майстром для active_1c, але active_site не чіпається. Підсумок: active_1c = true, active_site = false → товар не відображається. Оператор сайту зберігає контроль. Для кожного поля ми визначаємо систему-майстер і правило мержу. Це гарантує цілісність даних і виключає втрату інформації.

Схема бази даних

CREATE TABLE products (
  id BIGSERIAL PRIMARY KEY,
  onec_guid UUID UNIQUE, -- ідентифікатор 1С
  sku TEXT, -- Поля з 1С (перезаписуються при кожній синхронізації)
  name_1c TEXT,
  price_1c NUMERIC(12,2),
  stock_1c INTEGER,
  category_guid UUID,
  active_1c BOOLEAN DEFAULT true,
  -- Поля сайту (не перезаписуються синхронізацією)
  description TEXT,
  meta_title TEXT,
  meta_description TEXT,
  images JSONB,
  active_site BOOLEAN DEFAULT true,
  -- Мета синхронізації
  last_sync_1c TIMESTAMPTZ,
  sync_hash_1c CHAR(64) -- хеш даних з 1С для детекції змін
);
-- Підсумковий статус: товар активний тільки якщо активний і в 1С, і на сайті
CREATE VIEW products_active AS
SELECT * FROM products
WHERE active_1c = true AND active_site = true;

Алгоритм синхронізації з 1С → сайт

class OnecToSiteSyncService {
    public function sync(CommerceMLData $data): SyncResult {
        $result = new SyncResult();

        foreach ($data->products as $onecProduct) {
            $syncHash = $this->computeHash($onecProduct);
            $product = Product::firstOrNew(['onec_guid' => $onecProduct->guid]);

            // Пропускаємо, якщо дані не змінилися
            if ($product->exists && $product->sync_hash_1c === $syncHash) {
                $result->skipped++;
                continue;
            }

            // Оновлюємо ТІЛЬКИ поля з 1С (не чіпаємо description, images тощо)
            $product->fill([
                'sku' => $onecProduct->sku,
                'name_1c' => $onecProduct->name,
                'price_1c' => $onecProduct->price,
                'stock_1c' => $onecProduct->stock,
                'category_guid'=> $onecProduct->categoryGuid,
                'active_1c' => $onecProduct->active,
                'last_sync_1c' => now(),
                'sync_hash_1c' => $syncHash,
            ]);

            $product->save();
            $result->updated++;
        }

        // Товари, які 1С більше не вивантажує — деактивуємо
        $syncedGuids = $data->products->pluck('guid');
        Product::whereNotIn('onec_guid', $syncedGuids)
            ->update(['active_1c' => false]);

        return $result;
    }
}

Синхронізація сайт → 1С

Сайт передає в 1С тільки те, що змінилося на сайті і має значення для 1С: нові замовлення, повернення, відгуки про оплату.

class SiteToOnecSyncService {
    public function getUnsyncedOrders(): Collection
    {
        return Order::where('sent_to_1c', false)
            ->where('status', '!=', 'draft')
            ->with(['items.product', 'customer'])
            ->get();
    }
}

Чому важливо вибрати правильний формат обміну?

CommerceML — галузевий стандарт для інтеграції з 1С, але REST API дає більше контролю. Порівняння:

Критерій CommerceML REST API
Швидкість розгортання Швидко (з коробки) Вимагає розробки
Гнучкість Обмежена схема Повний контроль над полями
Підтримка версіонування Ні Так (через заголовки)
Деталізація помилок Загальні коди HTTP-статуси + тіло відповіді
Продуктивність Парсинг XML JSON, швидше

Ми обираємо підхід під конкретне завдання. Для малого бізнесу часто достатньо CommerceML, для великого каталогу з highload — REST API.

Моніторинг синхронізації

-- Останні статуси синхронізації
SELECT source,
       COUNT(*) FILTER (WHERE status = 'success') AS success,
       COUNT(*) FILTER (WHERE status = 'error') AS errors,
       MAX(finished_at) AS last_run,
       AVG(EXTRACT(EPOCH FROM (finished_at - started_at))) AS avg_duration_sec
FROM sync_logs
WHERE started_at > NOW() - INTERVAL '7 days'
GROUP BY source;

Як часто має відбуватися синхронізація?

Інтервал залежить від інтенсивності змін та навантаження. Для інтернет-магазину з 10 000 товарів оптимально оновлювати ціни та залишки кожні 15-30 хвилин. Для великого маркетплейсу (100 000+ позицій) — раз на 5 хвилин у пікові години та рідше вночі. Завжди налаштовуємо регульований розклад з можливістю ручного запуску.

Типові помилки при налаштуванні синхронізації

  • Відсутність хешування даних: кожне вивантаження перезаписує всі поля, навіть якщо дані не змінилися. Рішення — зберігати хеш останньої синхронізації та порівнювати.
  • Ігнорування статусу активності: якщо товар недоступний в жодній із систем, він все одно відображається на сайті. Використовувати логіку AND між active_1c та active_site.
  • Неправильний порядок обробки: спочатку імпорт з 1С, потім експорт замовлень — інакше можливі колізії. Дотримуватися послідовності.

Що входить в роботу

  • Аудит поточної схеми даних — виявляємо невідповідності та точки зростання.
  • Проектування правил синхронізації — визначаємо джерела правди та логіку вирішення конфліктів.
  • Реалізація обміну — пишемо код синхронізації з використанням CommerceML або REST API.
  • Тестування на реальних даних — перевіряємо на бойовій конфігурації, усуваємо помилки.
  • Документація та навчання — передаємо інструкції з експлуатації.
  • Підтримка після запуску — гарантуємо стабільну роботу, виправляємо інциденти.

Строки

Двостороння синхронізація каталогу з 1С, включаючи тестування на реальній конфігурації: 14–20 робочих днів. Зв'яжіться з нами для аудиту вашої поточної схеми синхронізації. Отримайте консультацію з налаштування обміну даними — оцінимо обсяг робіт і запропонуємо оптимальне рішення.

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

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060