Многие клиенты обращаются ко мне с такой проблемой: Есть интернет-магазин с довольно большой базой товаров, 1С УТ раньше не использовали, но теперь хотят начать использовать ее, чтобы вести складской учет и управлять ценами на номенклатуру. При этом описания товаров, картинки и прочие свойства хотят продолжать вести на сайте, так как там уже есть штат контент-менеджеров, которых на 1С пересаживать не удобно.
Раньше я убеждала клиентов в том, что каталог необходимо единоразово импортировать с сайта в 1С со всеми картинками и свойствами, на стороне 1С УТ причесать каталог, привести его в порядок при необходимости, и вдальнейшем вести каталог только на стороне 1С.
Сейчас я изменила свою точку зрения на эту проблему, и думаю, что все не так однозначно. Есть кейсы, для которых использовать 1С УТ как единственный источник данных о номенклатуре, действительно, крайне неудобно. Это неудобно, к примеру, для интернет-магазинов одежды, где для каждого торгового предложения существуют свои картинки. Да, на стороне 1С сейчас тоже можно добавлять картинки для характеристик товаров, но удобство интерфейса для контент-менеджера — страдает, не говоря уже о том, как проблематично становится при необходимости перезагрузить весь каталог с картинками из 1С на сайт на объемных базах.
Я нашла для себя решение задачи настройки интеграции интернет-магазинов товаров с торговыми предложениями и 1С УТ с возможностью вести картинки и описательные свойства товаров на стороне сайта с минимальными модификациями стандартного модуля обмена. Решение это не является единственным, но, на мой взгляд, оно самое простое:
1) На сайте назначаем (скриптом) всем разделам XML_ID равное ID_раздела, товарам XML_ID равное ID_товара, а торговым предложениям XML_ID, равный ID_товара#ID_торгового_предложения.
2) Допиливаем экспорт каталога с сайта в 1С (на стороне Битрикс) так, чтобы вместо XML_ID в 1С уходило ID торгового предложения (это проверенный рецепт: обратно из 1С XML_ID торговых предложений будут приходить в виде ID_товара#ID_торгового_предложения, поэтому если мы хотим когда либо повторно использовать помощник импорта товаров с сайта в 1С, надо в 1С отправлять просто ID предложения, а обратно ждать его через решеточку с ID товара).
3) На стороне 1С отключаем галочку «Контроль уникальности рабочего наименования характеристик и номенклатуры».
4) На стороне 1С создаем тип товара с индивидуальными характеристиками.
5) Если на стороне сайта есть такие разделы, где имеются одновременно и товары с предложениями (SKU), и простые товары, то на стороне 1С дописываем в процедуру СоздатьТовары следующий код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХарактеристикиНоменклатуры.Ссылка
|ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|ГДЕ
| ХарактеристикиНоменклатуры.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец",Номенклатура);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
обном=Номенклатура.ПолучитьОбъект();
обном.ИспользованиеХарактеристик=Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
//обном.ВидНоменклатуры=Объект.ВидНоменклатуры;
обном.Записать();
КонецЕсли;
Этот код вставляем после вызова функции СоздаватьХарактеристикиНоменклатуры
6) Проводим импорт номенклатуры с сайта в созданный нами на стороне 1С тип товаров при помощи помощника импорта.
7) Настраиваем на стороне 1С узел обмена для товаров, помечая к выгрузке все, кроме свойств и картинок. Не ставим флажок «Деактивировать товары, не вошедшие в выгрузку», ставим отбор по наличию остатка на складах.
8) Вводим документы поступления на склад для тех товаров, к-е будем пробовать выгружать обратно на сайт. Делаем импорт товаров из 1С в каталог на диске на каком-то маленьком разделе, выписываем внешние коды каталога, инфоблока торговых предложений, внешний код цены, складов, вписываем эти внешние коды в соответствующие поля на сайте. Следим за тем, чтобы названия складов на стороне 1С и на стороне сайта совпадали, а то 1С перезапишет их названия на стороне сайта.
9) На стороне сайта в настройках обмена ставим галочки «не импортировать верхний уровень группы товаров, если он единственный», «Не менять код (название) типа цены, если используется внешний код (XML_ID)».
10) Запускаем импорт товаров из 1С на сайт, если все сделали внимательно, все ляжет именно туда, куда нужно.
Такой способ настройки интеграции позволит клиентам:
— обновлять остатки и цены на стороне 1С УТ для старых товаров и торговых предложений, которые изначально были заведены на стороне Битрикс;
— заводить на стороне 1С новые товары, импортировать их на сайт и дозаполнять уже там, а впоследствии актуализировать их цены и остатки на стороне 1С;
— заводить новые товары на стороне сайта и отправлять их в 1С повторным запуском помощника импорта номенклатуры;