Подключение существующего интернет-магазина OpenCart к 1С

ПО Sync1C позволяет связать с 1С как новый интернет-магазин OpenCart, так и уже существующий. В этой статье рассмотрим случай, когда интернет-магазин уже существует, и заполнен товарами. Его надо связать с 1С через Sync1C, чтобы обновлять цены и наличие.

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

Общий принцип довольно прост: надо в OpenCart в поле связи проставить коды номенклатуры из 1С:



На картинке пример для конфигурации "Управление небольшой фирмой", но сам принцип одинаков для всех конфигураций.

Что значит "поле связи"? Обычно это поле "Модель" в OpenCart, как на картинке. Это наиболее удобный выбор, с моей точки зрения. Но, поскольку сайт уже существует и заполнен данными, иногда бывает надо выбрать другое поле для хранения кода. Вариантов достаточно много: Артикул, UPC, EAN, JAN, и т.д. Выбор поля связи - это достаточно жёсткая настройка, она меняется непосредственно в исходном коде серверной части. Обратитесь ко мне, и я сделаю, как вам надо. Но в большинстве случаев всё же лучше оставить полем связи Модель.

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

Теперь, когда вы знаете, что такое поле связи, и индекс для него - вы обладаете всеми необходимыми знаниями, чтобы рассмотреть процесс связывания товаров 1С и OpenCart.

Полный план выглядит так:

1. Создайте неуникальный (промежуточный) индекс.
2. Заполните поле связи в OpenCart.
3. Проверьте результат кнопкой "Сравнить данные с сайтом".
4. Создайте уникальный (постоянный) индекс.

Этот же план ещё раз, в подробностях, и с картинками:

1. Создайте неуникальный (промежуточный) индекс: в обработке откройте Настройки, Основные настройки, Сайт, на кнопке "Подготовка базы данных сайта" выберите пункт "Создать неуникальный (промежуточный)" индекс:



"Правильный" индекс должен быть уникальным, чтобы обеспечивать однозначное соответствие между товарами в 1С и OpenCart. Но, пока поле связи у всех товаров не заполнено, создать уникальный индекс невозможно. Поэтому на период заполнения поля связи надо временно создать неуникальный индекс, а потом, когда всё будет готово - превратить его в уникальный.

2. Заполните поле связи в OpenCart: в админке OpenCart откройте "Каталог" -> "Товары". Далее, для каждого товара нажимаете "Редактировать", и на вкладке "Данные" заполняете поле связи значением кода номенклатуры:




Полем связи, скорее всего, будет "Модель". Если же нет - вы будете об этом знать раньше меня, т.к. изменение поля связи происходит только по вашей просьбе ;)
 
 Значения для поля связи надо брать из поля "Код" справочника номенклатуры 1С. В разных конфигурациях 1С этот справочник может выглядеть по разному.


 
Так он выглядит в демонстрационной БД конфигурации "Управление небольшой фирмой 1.6". Причём сперва поля "Код" не было в таблице, пришлось его добавить через "Ещё" -> "Изменить форму...". Если вы в своей конфигурации 1С не можете найти поле код - спросите у меня, или у своего специалиста, который вам обслуживает 1С.

3. Проверьте результат кнопкой "Сравнить данные с сайтом": в обработке нажмите кнопку "Сравнить данные с сайтом", и посмотрите, какие товары попадут на вкладки "Новые", "Изменились", и "Лишние".



"Новые", с точки зрения Sync1C - это те товары, которые есть в 1С, но их нет в OpenCart. Иными словами - те товары, которым ещё не заполнили поле связи. Или заполнили с ошибкой. В результате программа не может найти такой товар на сайте, а раз его там нет - значит, он как бы новый в 1С.

Не добавляйте эти товары на сайт! Точнее, их можно добавить, но уже в самом конце, когда вы точно убедитесь, что на сайте этих товаров на самом деле нет.

"Лишние" - это, наоборот, товары, которые программа видит на сайте, но не может найти для них соответствие в 1С. Не может найти потому, что такого значения поля связи OpenCart нет среди кодов номенклатуры 1С. На наименования товаров и артикулы программа при этом совсем не смотрит. В нескором будущем я хочу сделать специальный режим работы программы, чтобы она могла сопоставить товары по наименованиям и артикулам, но сейчас она это не умеет. Поэтому, на вкладке "Лишние" вы видите товары, у которых поле связи ещё не заполнено. Или заполнено неправильно.

"Изменились" - это товары, у которых цена или количество отличается в 1С и OpenCart. То есть поле связи у них заполнено, программа видит этот товар и в 1С, и в OpenCart, здесь всё нормально. Но цена и/или наличие не совпадает, и программа уже готова обновить информацию на сайте. Кстати, обратите внимание, если цена или количество сильно отличается. Могло быть так, что вы случайно на сайте написали товару чужой код, и поэтому такая разница в цене. На наменование и артикул программа не смотрит, если в 1С товар называется "Пылесос BOSCH", а на сайте "Велосипед Школьник", но код один и тот же - программа будет думать, что это одно и тоже, только называется слегка по разному :)

Количество товаров на вкладках "Новые" и "Лишние" будет примерно одинаковым, т.к. это одни и те же товары. Кажый раз, как вы товару на сайте присваиваете код в поле связи - количество новых и лишних уменьшается на один - и, возможно, добавляется один товар на вкладку "Изменились". Нажмите "Сравнить данные с сайтом", чтобы увидеть актуальные цифры. Когда закончите задавать коды на сайте - количество новых и лишних должно стать ноль. Всё, что там останется - это, скорее всего, результат ошибок, или действительно новые товары. Их должно быть немного, и вы наверняка легко разберётесь, проверив их коды.

4. Создайте уникальный (постоянный) индекс: в обработке откройте Настройки, Основные настройки, Сайт, на кнопке "Подготовка базы данных сайта" выберите пункт "Создать неуникальный (промежуточный)" индекс:



Если программа скажет "Готово" - значит, всё нормально. Но если на сайте у некоторых товаров значения в поле связи повторяются, то создание уникального индекса закончится ошибкой. В своём сообщении программа скажет, какое значение повторяется. Найдите его и исправьте, и попробуйте ещё раз.