Как выгрузить из 1С в уже существующий инфоблок Битрикс

30 Mar
Published by Nicholas

Как выгрузить из 1С в уже существующий инфоблок Битрикс

Недавно столкнулся с задачей выгрузить данные из 1С:Управление торговлей 11 на сайт под управлением 1С-Битрикс в уже существующий инфоблок «Каталог товаров».

Получилось не с первого раза, поэтому решил записать все на случай, если понадобится повторить это в будущем.

Первое, что нужно сделать - это включить отображение кода загрузки из внешних источников для информационных блоков.

В режиме «Администрирование» откроем меню «Настройки», далее открываем «Настройки продукта - Настройки модулей - Информационные блоки», устанавливаем флаг «Показывать код загрузки из внешних источников»:

Показывать код загрузки из внешних источников

Затем необходимо настроить параметры импорта каталога.

Откроем меню «Магазин», далее «Настройки - Интеграция с 1С». Здесь нужно выбрать тип инфо-блока (Запомните символьный код инфоблока, приведенный в квадратных скобках! Он потребуется чуть позже.) и устанавить флаг «При выгрузке учитывать тип инфоблока»:

Тип инфо-блока

При выгрузке учитывать тип инфоблока

Рекомендую в этих настройках сразу установить следующие флаги:

  • Использовать настройки инфоблока для обработки изображений - чтобы настраивать это только в одном месте;
  • Транслитерировать символьный код из названия при добавлении элемента или раздела - иначе будут возникать ошибки типа «обязательное поле "символьный код" не заполнено», либо уберать флаг обязательности заполнения символьного кода в настройках инфоблока «Инфоблоки - Типы инфоблоков - Каталоги»
  • Выгружать предложения (характеристики) в отдельный инфоблок - этот флаг следует установить в том случае, если номенклатура ведется в разрезе характеристик.

Теперь осталось настроить выгрузку данных из 1С и определить идентификатор каталога.

Откроем конфигурацию 1С:УТ 11 «Администрирование - Синхронизация данных», устанавливаем флаг «Обмен данными с сайтом», открываем «Узлы обмена с сайтами».

Создадим новый узел обмена, выбираем рижим обмена «Выгрузка товаров», в качестве адреса сайта необходимо указать http://сайт/bitrix/admin/1c_exchange.php:

Основные настройки узла обмена с сайтом

На закладке «Выгрузка товаров» находим идентификатор каталога и копируем его в буфер обмена:

Идентификатор каталога для выгрузки в Битрикс

Откроем меню «Контент», далее «Инфоблоки - Типы инфоблоков - Каталоги», открываем искомый каталог. В поле «Внешний код» указываем тип инфоблока из настроек параметров импорта, и через дефиз идентификатор каталога из 1С:

Настройка внешнего кода инфоблока Битрикс

После этого можно запустить обмен с сайтом в 1С.

В случае, если Вы используете «Торговые предложения», то они будут иметь тот же внешний код, что и каталог товаров, но с решеткой в конце, например, «catalog-280af51d-ef93-11de-9de0-001c7e202cbc#».

Если в 1С есть «Номенклатура» или «Группы номенклатуры» с одинаковыми названиями, то в настройках инфо-блока каталога на закладке «Поля» или «Поля разделов» соответственно, для символьного кода нужно убрать флаг обязательности заполнения и проверки на уникальность, а также перенастроить ЧПУ на использование ID вмести CODE.

Пример.

Имеются группы номенклатуры:

  • Одежда
    • Зима
    • Лето
  • Обувь
    • Зима
    • Лето

В этом случае символьные коды групп после транслитерации получатся следующие:

  • odezhda
    • zima
    • leto
  • obuv
    • zima
    • leto

Получается, что для зимней одежды и для зимней обуви будет одинаковая ссылка: /catalog/zima, что приведет к ошибке в отображении товаров. Чтобы при импорте из 1С не возникало ошибок, откроем меню «Контент», далее «Инфоблоки - Типы инфоблоков - Каталоги - Каталог товаров 1С», на закладке «Поля разделов» убираем флаги:

Настройка полей разделов инфоблока

На закладке «Инфоблок» меняем SECTION_CODE на SECTION_ID:

Настройка url страницы инфоблока

После этого ссылка на зимнюю одежду будет, например, такой /catalog/81/, а на зимнюю обувь такой /catalog/82/.

Тэги 

1С-Битрикс

Комментарии

Аватар пользователя Алексей

Можно вашу статью продублировать на своем сайте с обязательной ссылкой?

Аватар пользователя Nicholas

Да, конечно.

Аватар пользователя Алексей

А в УТ 10.3 будет работать?

Аватар пользователя Nicholas

Данная статья относится более к настройке на стороне Битрикса, нежели чем к настройке УТ. Формат выгрузки из УТ 11 аналогичен УТ 10, более того, я даже выгружал аналогичным образом данные из 1С 7.7. Поэтому пробуйте, проблем возникнуть не должно.

Аватар пользователя Dimon

Так же, может кому поможет:
http://yournet.kz/view/652
(Как настроить выгрузку номенклатуры товаров из 1C в указанный инфоблок)

Аватар пользователя Боря

Не подскажите как добиться того чтоб выгрузка происходила в несколько груп одновремено?

Аватар пользователя Nicholas

Простите, не понял вопрос.

Аватар пользователя Анастасия

Спасибо большое за статью! Вы просто не представляете как она мне помогла!

Аватар пользователя romasa

А как выгрузить аналоги из карточки 1с
В нужное поле на сайте?

Аватар пользователя romasa

А как выгрузить аналоги из вкладки 1с на сайт?битрикс
при условии что механизм ручного вноса уже работает

Аватар пользователя IrinaYa

Огромное спасибо Nicholas! Ваша инструкция мне реально помогла!

Аватар пользователя Сергей

Каталог действительно создаётся в заданном типе инфоблока (catalog), но только новый, с названием, указанным со стороны 1С при выгрузке, в Вашем примере это "Основной каталог товаров". Даже если указать при выгрузке из 1С реально существующее в Битриксе название работающего торгового каталога с созданной структурой, наполненного товарами, напр. "Одежда", всё равно это получается другой, задублированный каталог с тем же именем "Одежда" в инфоблоке "catalog". Информация в существующий торговый каталог не попадает... Как всё-таки обновить существующий каталог? Или статья всего лишь о том, как закинуть выгрузку в тип инфоблока catalog и успокоиться на этом?

Аватар пользователя Nicholas

Связь осуществляется не по названию, а по уникальному идентификатору каталога (в битрикс - это поле "Внешний код"). Попробуйте выгрузить из 1С данные в файл XML, посмотрите в этом файле ИД каталога, затем укажите этот идентификатор для каталога на сайте.

Аватар пользователя Сергей

Большое спасибо. Разобрался. Во внешний код нужно подставлять код типа инфоблока, а не код самого инфоблока...

Аватар пользователя Константин

А нельзя поменять уникальный идентификатор, что бы проверка при выгрузке из 1С была не по внешнему коду, а по партномеру?

Аватар пользователя Serge

Уважаемые Гуру, помогите! Каталог 1С слишком большой для выгрузки в готовый магазин Битрикс. Не хватает памяти. При создании нескольких настроек обмена с сайтом для наполнения каталога по частям, каждый из которых работает по своему расписанию, 1С создаёт новые коды для выгружаемого каталога и цены. Как быть? На какой стороне хитрить, в 1С, или в Битриксе нужно организовать структуру по-другому?

Аватар пользователя Nicholas

В таких случаях я оставляю, все же, одну настройку обмена. Последовательно выгружаю части номенклатуры (по отбору, небольшими группами). После того, как все выгружено, оставляю выгрузку только измененных объектов.

Можно, конечно, сделать и вашим способом, но он, на мой взгляд, сложнее. И скорее всего вам не обойтись без установки дополнения для 1С (насколько я помню, в стандартном обмене нельзя указать идентификатор каталога): http://1c.1c-bitrix.ru/ecommerce/v2.php

Аватар пользователя Serge

Спасибо, Nicholas! Вы правы. Ваш метод прост и надёжен, хотя и требует времени при первоначальном наполнении сайта и внимания при настройке отборов в 1С. Ссылка хороша. Выгрузка в несколько тематических каталогов - выход. Только как их объединить одним динамическим меню, общим top-ом, чтоб работало как единый каталог? Может, найдётся ещё какая ссылочка, ума-разума набраться?

Аватар пользователя Тимур Гатиятов

в настройках обмена на стороне 1С можно создать/добавить несколько одинаковых каталогов (с одинаковым ID) с разными списками групп, в которых будут соотнесены соответствующие группы товаров. Тогда все ваши раздела автоматически появятся в одном динамическом меню.

Аватар пользователя Сергей

Получилось. Спасибо огромное!
А дальше? как сделать так, чтоб, Артикул попал в Артикул, а не создавалось новое поле Артикул?

Аватар пользователя Nicholas

Выгрузить из 1С сначала в файл, посмотрите какой уникальный идентификатор установлен для поля Артикул, затем установите его в настройках поля инфоблока на сайте.

Аватар пользователя Константин

А как этот файл выгрузить? Как он называется?

Аватар пользователя Эльфар

Выгрузка любого справочника из любой конфигурации 1С в Битрикс
<ссылка скрыта>

Аватар пользователя Алексей

Добрый день, переехали на новый модуль обмена, GUID каталога и инфоблока сделали, но вот незадача, выгрузку собирали заново, т.е. Основные рубрики товара и вложенность рубрик немного поменяли и теперь рубрики создаются заново, с префиксами. Например была "rubrika" создалась новая рубрика "rubrika_1" и товары из "rubrika" деактивировались и то, что выгружалось стало в "rubruka_1", как можно избежать этой ошибки? Очень важно, чтобы рубрики имели старые имена.

Аватар пользователя Dmitriy

Спасибо!

Аватар пользователя Семен

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

Аватар пользователя Nicholas

Значит вы выгружаете не все товары, но с признаком "полная выгрузка". В этом случае все товары, которых нет в файле выгрузки удаляются или деактивируются (в зависимости от настроек).

Аватар пользователя oleg

Здравствуйте. Имеется проблема с выгрузкой из 1С в битрикс. Есть два инфоблока например структура: 1.Одежда/производитель 2.Обувь/производитель в каждом свои характеристики а на сайте есть подбор по этим характеристикам... В 1с структура Номенклатура/Одежда, Обувь. Создаем обмен где - Каталог-Одежда, группы номенклатуры-Производители, ИДкаталога-внешний код. в итоге получаем отображение на сайте Одежда/Одежда/Производители и товар без характеристик а должно быть: Одежда/производитель и характеристики!!! Подскажите что делаем не так...

Аватар пользователя Nicholas

Перечитал несколько раз, но так и не понял суть. Характеристики должны выгружаться в отдельный блок Торговые предложения. Структуру групп на сайте можно настроить любую если вы используете модуль обмена от Битрикс.

Аватар пользователя Autochapa

меняя url с " /catalog/zima" на "/catalog/81/, а на зимнюю обувь такой /catalog/82/" - вы же убиваете ЧПУ !

может быть не стоит На закладке «Инфоблок» менять SECTION_CODE на SECTION_ID, а просто добавить ID к url?

#SITE_DIR#/catalog/#SECTION_CODE#-#SECTION_ID#/

я новичок в 1С и точно не знаю, правильно ли я сделал вот так #SECTION_CODE#-#SECTION_ID#

надеюсь мысль поняли ))

Аватар пользователя Nicholas

Ваша идея мне нравится. Спасибо за мысль.

Аватар пользователя Александр

Который день бьюсь с ошибкой при выгрузке данных, обработанных и экспортированных в CSV -формате из сочиненной кем-то (был ранее специалист по 1С) "1С:Предприятие.Выгрузка" версия 8.3 в Интернет-магазин на 1СБитрикс:Управление сайтом. При импорте постоянно выдает ошибку "Ошибка загрузки товара: Элемент с таким символьным кодом уже существует.", " Невозможно создать раздел: Раздел с таким символьным кодом уже существует." и далее при импорте все ложится наперекосяк, часть товара не выгружается, часть разделов образуется с символьными именами на сайте магазина (типа 42, 14, водораздел и розетка).Приходится чистить вручную из-под админской записи. Хожу кругами и не знаю что делать и где править. И вроде в самой базе имена-то разные... Почти разные "Порог стыкоперекрывающий ПС 04-3 1,8м дуб беленый", "Порог стыкоперекрывающий ПС 05-1.800.083н" Разные же имена, что не так? но нет, на первом пороге выдает ошибку и понеслась... Кто-то говорит - ставить транслитерацию на бОльшее количество символов в инфоблоке... Не нашел где и что.. Может показаться что я совсем идиот...Увы, это почти так, так как раньше с интернет-магазином не имел отношения вовсе. Монтажник эзернет и "по железу" я больше,а тут еще эту "радость" подвесили. Если кто-то ответит в какую сторону смотреть и думать, буду чрезвычайно благодарен. Магазин bobrenok.com на
"1С-Битрикс: Управление сайтом 15.5.9."

Аватар пользователя Nicholas

Снимите галку контроля уникальности для поля символьного кода и произведите загрузку. Затем посмотрите какие символьные коды будут у этих двух элементов, которые вы дали для примера. Отталкиваясь от этого уже можно будет понять что вам делать дальше.

Аватар пользователя Александр

Галки контроля уникальности снял, пошли другие ошибки, однако пороги, хоть и есть в "базе сайта" (в 1С-торговле) на сайте так и не появились...
Ошибки выгрузки сохранились, часть товара снова выложилась (вероятно, из-за сбоя строкой раньше) вперемешку с описанием ("Адаптер внешний GRINDA 8-426321_z01 является составной частью системы полива. Выполняет роль переходного элемента между соединителем Гринда и водопроводной трубой или краном без резьбового соединения диаметром 3/4 дюйма. Оснащен затягивающимся хомутом для надежного и герметичного соединения. Легко устанавливается без использования специального оборудования. Адаптер выполнен из ударопрочной пластмассы, что гарантирует длительный срок эксплуатации.
Технические характе ") Сходил посмотрел в базу на этот несчастный адаптер, там он лежит в нормальном состоянии, то есть точки с запятой, которые используются при разделении полей для экспорта, в списке отсутствуют. Странно, "говорит "Строка 240. Невозможно создать раздел: Раздел с таким символьным кодом уже существует."". Хотя уникальность снял.. Буду рыть глубже.))

Аватар пользователя Александр

Приношу извинения, поле разделов (внезапно) "не запомнило "отключение проверки на уникальность... Ругалось именно оно. Сейчас буду проверять снова...

Аватар пользователя Александр

После снятия галки об уникальности символьного кода для разделов выгрузка прошла без ошибок. Почти без ошибок.. Пошли ошибки "Ошибка при добавлении цены: Валюта с кодом 9 не найдена". Что он в виду имеет - неясно, потому что валюта (рубли) указана и в базе и в файле выгрузки (CSV). Да, были ошибки и выражавшиеся в отсутствии суммы в поле Цена, но это понятно, в файле CSV ее действительно не было. При том что в 1С есть. Фантастика... Блин, неужели так трудно сделать "все как надо" сразу?)))

Аватар пользователя Nicholas

Иначе было бы скучно и не интересно)))

Про валюту почитайне в документации. Насколько я помню, код валюты должен соответствовать международному стандарту и быть буквенным, причем латиницей, например RUR.

Аватар пользователя Александр

Не совсем в тему, тем не менее - всех сюда входящих и Nicholas Mikuslas в частности поздравляю с наступающим Новым 2016 м годом. Обезьяна китайская пусть лесом идет тибетским, с нашим, нормальным новым годом. Желаю всем всего самого наилучшего и побольше терпения.

Аватар пользователя Nicholas

Спасибо, Александр. И Вас с Новым 2016 Годом!

Аватар пользователя Александр

Спасибо за выслушивание жалоб, приглашали специалиста по этой самой "Выгрузке", оказалось, что просто где-то проскочили нестандартные кавычки (" ???)внешний вид тот же, что и у стандартных, но сайтом было воспринято как управляющий символ и понесло его колбасить. Дубликаты парочку нашел, потом плюнул, да отключил проверку уникальности. Пока живет.)))

Аватар пользователя Nicholas

А выгрузка у вас самописная?

Аватар пользователя Александр

Судя по всему, да. В том смысле, что базой в магазине реальном, "на земле" который, служит 1С:Предприятие 8.3 (8.3.5.1119) (1С-Рарус: ТКПТ v8 (08.1.17.01)), в которую руками товароведы забивают весь товар, она же синхронизирована с кассовыми аппаратами. А выгрузка... Что-то самопально привернутое через Конфигуратор "Выгрузка, редакция 1.0", я так и не смог добиться от специалиста 1С-ного, специфический ли это модуль, или он сам его правил. В ней кучу номенклатуры, что идет из основной базы (и сваливащейся без сортировки, оптом), копируемой раз в сутки я вручную раскладываю по папкам, которые и становятся отображением заголовков первого уровня на сайте. Надеюсь, не слишком запутанно объяснил. В принципе, после раскладки по подпапкам в "Выгрузке", они там и остаются в дальнейшем, даже при обновлении цен и количества из основной базы. Новые появляются лишь при расширении ассортимента. В основной базе, что работает в магазине и синхронизирована с кассовыми аппаратами, картинок и описаний товаров нет. Они там просто не нужны (я б с этим поспорил,но...Вот так сделали когда-то раньше). А вот в упомянутой выгрузке уже имеется форма, в которой я самостоятельно добавляю картинку, описание к каждой позиции товара. Так вот, в описании "косяк" и проскочил, видимо. И даже не у меня, потому как ошибки достались "по наследству", на что мне рекомендовали "не обращать внимания". По первости не обращал, но как обратил, так просто о... удивился... Потому как проблема оказалась не столько в одинаковых именах, на уникальность которых он ругался, но и в перекосе заголовков и прочих, описанных выше, глюках. Это, конечно, не вариант, чистить сайт после выгрузки и терять отображение огромного количества товаров. Путем некоторых экспериментов поняли, что выгрузка-то работает нормально (насколько это возможно) но вот импорт данных из CSV не всегда. И из-за допущенных по невнимательности предыдущих сисадминов (да и моей, вероятно, тоже, не буду отрицать) ошибок в копировании описания товара с просторов Сети, проскочили некоторые символы, на человеческий взгляд, безобидные. Но инфоблок понял их неверно при импорте, отсюда и возникшая проблема и вопрос от меня. Буду чистить описания, что делать. Пока же приходится удалять весь столбец описаний после выгрузки в CVS-файл, открывая его в Эксели. Слишком много товаров и море описаний. Простите за подробный эпистолярный жанр.

Аватар пользователя Nicholas

Честно говоря, я противник использования CSV  в качестве транспортного файла, вообще. Уж слишком часто возникает проблема с запрещенными симовлами и сдвигом значений. XML, в данном случае, более предпочтителен.

К сожалению (или к счастью), с выгрузкой из Рарус вообще никогда не сталкивался. Настроить обмен в типовых конфигурациях не всегда получается с первого раза, насколько хорошо это реализовано в отраслевых решениях - не ясно.

Аватар пользователя Александр

Увы, меня отговорили от XML, мотивируя это тем, что в нем привязаны картинки к товару (и он их в себе,якобы, содержит, как HTML -связка почти, отдельными папками) а это значит, что при выгрузке придется либо как-то пополнять имеющуюся "картиночную" базу на сайте, либо прогружать ее всю с локальной машины, что не есть хорошо, ибо это 700 мегабайт картинок. Так да, неплохо бы, я тоже думал об этом. Кроме того, он начинает спрашивать "имя файла правил", который еще надо создать. Ради спортивного интереса попросил сайт выгрузить данный е в XML-формате что бы, отталкиваясь от полученного формата, выгрузить в новом формате. Но нет, файл получился именно таким вот образом.

Аватар пользователя Nicholas

Вас ввели в заблуждение. Картинки передаются отдельно. Более того, не нужно выгружать весь каталог, достаточно выгрузать изменения.

Для обмена с сайтом на Битрикс используется специальный формат XML. Так называемы CommerceML 2. Описание формата можно найти на сайте 1С.

Аватар пользователя Александр

Спасибо, посмотрю.
Если что, отпишусь, может кому и сгодится еще))

Аватар пользователя Юрий

Доброго дня, Nicholas ! Разрешите, пожалуйста, пару коротких вопросов по использованию стандартного обмена 1С с сайтом.
1) Один из файлов importXX.xml или offersXX.xml обработался с ошибкой. Как мне увидеть в 1С, в какой конкретно ветке каталога (ветке номенклатуры) произошла ошибка ? Журнал событий результатов обмена в 1С дает короткую справку "Выгрузка на сайт завершилась с ошибками." без указания каталога, в котором эта ошибка возникла.
2) Могу ли я с сайта внутри протокола обмена CommerceML2 возвратить в 1С ошибку обработки файлов importXX.xml или offersXX.xml так, чтобы потом увидеть содержимое этой ошибки где-либо в 1С ?
Вынужден везде искать и обращаться с такими мелкими вопросами, так как сам не 1С-ник, и пока нигде ответ найти не могу. Спасибо !

Аватар пользователя Nicholas

Стандартный обмен показывает ошибки. В зависимости от вашей конфигурации, возможно понадобится установить дополнительный модуль: http://1c.1c-bitrix.ru/ecommerce/download.php

Аватар пользователя Юрий

Доброго дня, Nicholas !

Спасибо за ответ ! Видимо, я что-то не так пояснил...

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

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

Вы мне посоветовали воспользоваться дополнительным модулем от Битрикса, увы, не помогло, ошибки те же самые. Если бы знать, где их посмотреть, дальше бы я уже как-нибудь бы разобрался что делать.

Спасибо !

Аватар пользователя Nicholas

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

Страницы

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Вы человек или автоматическая спам-рассылка?
Target Image