Проверка остатков при интеграции заказов с битрикс. Возможность автоматической работы по расписанию

Вариант 1. В Класс365 нет товаров и в 1C-Bitrix нет товаров (учет в Класс365)

Вы хотите начать работать в Класс365 и в интернет-магазине 1C-Bitrix. Работа с товарами будет производиться в Класс365 .

  1. Создайте свою базу в Класс365.

Для того, чтобы вести учет и обрабатывать заказы в Класс365, выберите в главном меню раздел «Справочники» и заполните справочники «Товары» и «Контрагенты» (можно заполнить вручную, а можно импортировать из Excel* ).

  1. Введите остатки по складам, либо оформите поступление товаров.
  2. Создайте магазин на сайте http://www.1c-bitrix.ru/
  3. Настройте интеграцию с 1C-Bitrix в Класс365:

Адрес сайта

Логин

Пароль

Проверьте подключение.

  1. Для того, что бы товары появились в Bitrix, нажмите кнопку «Выгрузить сейчас». На сайте появятся Ваши товары.
  2. Если Вы хотите проверить правильность работы системы, оформите пробный заказ в управлении Bitrix.

Для того, чтобы Ваши заказы отобразились в Класс365, в форме «Интеграция с интернет-магазином» нажмите «Загрузить сейчас».

*При импорте товаров в Класс365 из файла формата Excel, в системе создается папка «импортированные». Из нее Вы можете перенести товары в любую группу, чтобы не путаться при выгрузке товаров в интернет-магазин.

Вариант 2. В Класс365 нет товаров, а в 1C-Bitrix есть товары (учет в Класс365)

У Вас уже есть интернет-магазин 1C-Bitrix с товарами, и вы только начинаете работать с Класс365. Работа с товарами будет производиться в Класс365.

  1. Создайте свою базу в Класс365. Заполните данные об организации. В главном меню выберите раздел «Справочники» и заполните справочник «Контрагенты».
  2. Для того, чтобы перенести базу товаров из Bitrix в Класс365, на сайте откройте список товаров и нажмите на «шестеренку» в правом верхнем углу, выберите значок экспорта.
  3. Сформируйте прайс-лист в формате.xls с параметрами:


-Артикул / код на складе


-ставка НДС
-единица измерения
-цена

  1. Импортируйте товары в систему.
  • Нажмите на кнопку «Выбрать файл» и выберите заранее подготовленный файл в формате.xls.
  • В окне появится информация, содержащаяся в файле.
  • Товары загружены в Класс 365 и находятся в справочнике «Товары», группа «Импортированные»

Так же с помощью импорта, выбрав в выпадающем списке «Цена продажа» вы сформируете продажный прайс-лист с указанными ценами в загружаемом файле

Выбор колонок прайс листа:

  1. Над главным меню нажмите на ссылку «Администрирование» в открывшемся подменю выберите вкладку «Интеграция с интернет магазинами» нажмите «Добавить». Из выпадающего списка выберите Bitrixи настройте подключение:

В форму «Интеграция с интернет-магазином» подставьте:

Адрес сайта - http://ваш_сайт/bitrix/admin/1c_exchange.php

Логин - Администратор на сайте Birix

Пароль - Пароль администратора для входа в Bitrix

Проверьте подключение.

  1. Настройте параметры выгрузки товаров и загрузки заказов:

тип цен, организацию, группы товаров, статус, к какой организации привязывать заказ, учет НДС.

Для того, что бы товары появились в Bitrix, нажмите кнопку «выгрузить сейчас». На сайте появились Ваши товары.

  1. Если Вы хотите проверить правильность работы системы, оформите пробный заказ в управлении Bitrix. Для того, чтобы Ваши заказы отобразились В Класс365, в форме «Интеграция с интернет-магазином» нажмите «Загрузить сейчас»
  2. В главном меню выберите раздел «Продажи» в открывшемся подменю нажмите на «Заказы покупателей». Там будет сформирован заказ с соответствующим набором товаров и суммой, а во вкладке «Контрагенты» создан новый контрагент с данными Вашего покупателя.

Вариант 3. В Класс 365 нет товаров, а в 1C-Bitrix есть товары (учет в 1C-Bitrix)

У Вас уже есть интернет-магазин 1C-Bitrix с товарами и вы только начинаете работать с Класс365. Работа с товарами будет производиться в 1C-Bitrix. В Класс365 будут только обрабатываться заказы из 1C-Bitrix.

  1. Настройте интеграцию с интернет-магазином. Для этого над главным меню нажмите на ссылку «Администрирование» и выберите вкладку «Интеграция с интернет магазинами», нажмите «Добавить». Из выпадающего списка выберите Bitrix и настройте подключение:

В форму «Интеграция с интернет-магазином» подставьте:

Адрес сайта - http://ваш_сайт/bitrix/admin/1c_exchange.php

Логин - Администратор на сайте Birix

Пароль - Пароль администратора для входа в Bitrix

Проверьте подключение.

  1. Если Вы хотите проверить правильность работы системы, оформите пробный заказ в управлении интернет-магазином. Для того, чтобы Ваши заказы отобразились в Класс365, в форме «Интеграция с интернет-магазином» нажмите «Загрузить сейчас».
  2. В главном меню выберите раздел «Продажи» в открывшемся подменю нажмите на «Заказы покупателей». Там будет сформирован заказ с соответствующим набором товаров и суммой, а во вкладке «Контрагенты» создан новый контрагент с данными Вашего покупателя.

Вариант 4. В Класс 365 есть товары, а в 1C-Bitrix нет товаров (учет в Класс365)

Вы уже работаете в Класс365, и хотите подключить интернет-магазин 1C-Bitrix. Работа с товарами будет производиться в Класс365.

  1. Создайте магазин на сайте http://www.1c-bitrix.ru/

Настройте интеграцию с интернет магазином в Класс365. Над главным меню нажмите ссылку «Администрирование» и выберите вкладку «Интеграция с интернет магазинами».

В форму «Интеграция с интернет-магазином» подставьте:

Адрес сайта - http://ваш_сайт/bitrix/admin/1c_exchange.php

Логин - Администратор на сайте Birix

Пароль - Пароль администратора для входа в Bitrix

Проверьте подключение.

  1. Настройте параметры выгрузки товаров и загрузки заказов:

тип цен, организацию, группы товаров, статус, к какой организации привязывать заказ, учет НДС.

Для того, что бы товары появились в Bitrix, нажмите кнопку «Выгрузить сейчас». На сайте появились Ваши товары.

  1. Если Вы хотите проверить правильность работы системы, оформите пробный заказ в управлении интернет-магазином. Для того, чтобы Ваши заказы отобразились В Класс365, в форме «Интеграция с интернет-магазином» нажмите «загрузить сейчас».
  2. В главном меню выберите раздел «Продажи» в открывшемся подменю нажмите на «Заказы покупателей». Там будет сформирован заказ с соответствующим набором товаров и суммой, а во вкладке «Контрагенты» создан новый контрагент с данными Вашего покупателя.

Вариант 5. В Класс 365 есть товары и в 1C-Bitrix есть товары (учет в Класс365)

Вы уже работаете в Класс365 и у вас есть интернет-магазин 1C-Bitrix с товарами. Работа с товарами будет производиться в Класс365.

  1. Настройте интеграцию с интернет-магазином, для этого над главным меню нажмите ссылку «Администрирование» и выберите вкладку «Интеграция с интернет магазинами», нажмите «Добавить». Из выпадающего списка выберете Bitrix и настройте подключение.

В форму Интеграция с интернет-магазином подставьте:

Адрес сайта - http:// ваш_сайт/bitrix/admin/1c_exchange.php

Логин - Администратор на сайте Bitrix

Пароль - Пароль администратора для входа в Bitrix

Проверьте подключение.

  1. Выгрузите товары, имеющиеся в системе, в Bitrix.

Для этого в форме Интеграция с интернет-магазином настройте параметры выгрузки (Группа товаров/все товары) и нажмите «Выгрузить сейчас». Товары отображаются на сайте.

  1. Перенесите базу товаров из интернет-магазина в Класс365

Для этого, на сайте откройте список товаров и нажмите на «шестеренку» в правом верхнем углу, выберите значок экспорта.

Сформируйте прайс лист в формате.xls с параметрами:

-Артикул / код на складе
-наименование краткое и полное
-ставка НДС
-единица измерения
-цена

Обязательными полями являются артикул или код на складе, наименование, единица измерения. Все остальные параметры загружаются на ваше усмотрение, если их нет в документе, то вы сможете их добавить непосредственно в системе.

  • Для этого над главным меню нажмите на ссылку «Администрирование», в открывшемся подменю выберите пункт «Импорт и экспорт». Нажмите кнопку «Новый импорт товаров ».
  • Нажмите на кнопку «Выбрать файл» и выберите заранее подготовленный файл в формате xls.
  • В окне появилась информация, содержащаяся в файле.
  • Над каждой колонкой в выпадающем списке выберите соответствующее ей значение.
  • Нажмите кнопку «Загрузить товары».
  • Товары загружены и находятся в справочнике «Товары», группа импортированные.

Так же с помощью импорта выбрав в выпадающем списке «Цена продажа» вы сформируете продажный прайс-лист с указанными ценами в загружаемом файле.

Выбор колонок прайс листа:

  1. Введите остатки товаров по складам

Теперь в системе Класс365 и в Bitrix отображены все товары, которые вы реализуете.

Для «1С-Битрикс: Управление сайтом» интеграция с «1С» - не проблема. Это штатная функция, которая уже давно присутствует начиная с версии программных продуктов "1С:Предприятие 8.1", редакция Управление торговлей (версия 10.3.4) и "1С-Битрикс: Управление сайтом" версии 6.5, в редакциях Малый бизнес, Бизнес и Большой бизнес.

Торговля в интернете не имеет никаких отличий от обычного ритейла в плане ведения бухгалтерской отчетности. В связи с этим возникает вопрос согласования продаж через интернет-магазин и проводки их по системе учета «1С». Для « : Управление сайтом» интеграция с «1С» - не проблема. Это штатная функция, которая уже давно присутствует начиная с версии продуктов "1С:Предприятие 8.1", редакция Управление торговлей (версия 10.3.4) и " " версии 6.5, в редакциях Малый бизнес , Бизнес и Большой бизнес .

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

Типовые проблемы можно сгруппировать примерно таким образом:

  • Ошибки с производительностью на стороне сервера
  • Ошибки при работе с файлами данных
  • Проблемы авторизации
  • Ошибки MySQL
  • Логические ошибки

Начнем по порядку.

Ошибки на стороне сервера

Ошибки на стороне сервера происходят в силу целого ряда причин, но общее у них то, что виноваты не столько настройки программ «» или "1С:Предприятие ", сколько настройки сервера или проблемы в линиях связи. В основном они «лечатся» соответствующей настройкой серверного оборудования и программного обеспечения. И только при невозможности этого – путем единовременного снижения объемов выгрузки. Для решения большинства этих проблем вам не избежать обращения к службе технической поддержки хостинговой компании, где размещен ваш сайт.

Наиболее частые проявления этих ошибок:

  • Ошибка работы с Интернет, выводится сообщение: failed sending data to the peer (no headers, no data)‏ ;
  • Получен пустой ответ сервера;
  • Ошибки 502, 500 или ошибка 404 уже в процессе обмена;
  • Ошибка нехватки памяти, например выводится сообщение: Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 102401…)‏
  • Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.

Общие методы решения – это изменение настроек сервера. Во-первых, можно увеличить лимит времени и памяти в настройках PHP.

  • php.ini.oci , расположенный в папке / apache .
  • Найдите в файле группу параметров Resource Limits .
  • Увеличьте значения параметров max_ execution_ time и memory_ limit .
  • Перезагрузите сервер.

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

  • Откройте для редактирования файл httpd.conf, размещенный в папке / apache/ conf/
  • Измените значение параметра Timeout .
  • Перезагрузите сервер.

Другой вариант решения этой проблемы (если хостер не соглашается на увеличение таймаута) - сделать равным таймаут сервера и таймаут «1С-Битрикс: Управление сайтом » (страница Магазин > Настройки магазина > Интеграция с 1С, поле Интервал одного шага в секундах ). В этом случае пошаговое выполнение будет идти синхронно.

Если указанные меры не помогли или указанные параметры невозможно изменить, то, в крайнем случае, можно сделать следующее:

Наконец, можно уменьшить объем выгрузки товаров за 1 раз. Настройте фильтр по номенклатуре на стороне «1С»:

  • Запустите мастер настройки обмена данными (Сервисы > Обмен данными с WEB-сайтом > Настроить обмен данными с WEB-сайтом )
  • На первом шаге мастера выберите Изменить существующую настройку обмена данными и нажмите кнопку Далее .
  • Выберите настройку для редактирования и дважды кликните по ней.
  • В закладке Выгрузка товаров (Или Обмен заказами , в зависимости от ситуации) измените значения фильтра.
  • Сохраните изменения и повторите синхронизацию.

Ошибки при работе с файлами данных

Ошибки при работе с файлами вызваны в основном неправильной настройкой прав доступа к файлам. Типовые сообщения при этом выглядят следующим образом: «Ошибка открытия файла" и "Ошибка записи файла". Способы решения проблемы, естественно, - настройка прав доступа на уровне операционной системы.

Обратим внимание на фразу «на уровне операционной системы». Права на уровне «1С-Битрикс: Управление сайтом », как правило, выставлены всегда правильно. Тем не менее, проверить права на осуществление импорта/экспорта не помешает. Делается это на странице Магазин > Настройки магазина > Интеграция с 1С .

Наиболее вероятные причины:

  • У пользователя, от которого ведется обмен данными, нет прав на запись в папку /upload .
  • Файл создается с правами, которые не позволяют чтение файла.
  • Файл также может быть передан на сервер в zip-архиве, но по определённым причинам не удалось распаковать архив, например, некорректно работает функция zip_open на сервере.

Решения данных проблем довольно просты и понятны из самих проблем и решаются обращением к хостеру, который установит нужные права.

Выставление корректных прав на создаваемые файлы в рамках «1С-Битрикс: Управление сайтом » производится следующим образом:

  • Откройте для редактирования файл dbconn. php из папки / bitrix/ php_interface.
  • В строке define("BX_FILE_PERMISSIONS", 0644); установите значения, которые порекомендовал хостер вместо 0644 выставленных по умолчанию.

Точно также нужно проверить выставить права на создаваемые папки. Только это делается уже в строке define("BX_DIR_PERMISSIONS", 0755);.

Вот так выглядит проверка наличия расширения ZIP в настройках PHP:

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

1С не может пройти процедуру аутентификации на сайт и в этой связи выдается ошибка. Вызвано это, как правило, неверной настройкой «1С-Битрикс: Управление сайтом ».

«1С» может получать некорректный ответ при попытке авторизации на сайте. Это может быть ошибкой разработчика вашего сайта. Дело в том, что при авторизации первой строчкой ответа «1С» ждет "success". Но в ходе создания сайта разработчики могли в процессе разработки случайно оставить вывод в файлах тестовые строки.

Например, в файле /bitrix/php_interface/init.php или /bitrix/php_interface/dbconn.php и др.
Таким образом, 1С может получить ответ не "success", а "testsuccess" хотя данный авторизации отправлены корректные.

Другая типичная ошибка состоит в правах доступа на импорт каталога. Авторизация может не производиться, если пользователь, проводящий импорт, не обладает достаточным уровнем прав. Проверить это можно на странице Магазин > Настройки магазина > Интеграция с 1С .

Перейдите на указанную страницу и произведите следующие действия:

  • В поле Разрешить загрузку группам пользователей посмотрите, каким пользователям разрешен импорт/экспорт данных.
  • В зависимости от вашей конкретной ситуации или измените права доступа на импорт для нужных групп или включите нужного пользователя в группу, которой разрешен импорт из «1С».

Но в авторизации могут возникать и особые ошибки. Например, при работе PHP в режиме CGI. Это характерно для сайтов, размещенных на Windows-серверах. Можно это проверить с помощью файла test. php , как мы это делали при проверке свойств ZIP . В свойства сервера Apache в строке Server API в таком случае стоит CGI . Можно попытаться обойти эту проблему, а если не получится, то целесообразно обратиться в техподдержку хостинга.

Для «обхода» проблемы необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite . Выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:
    RewriteEngine on
    RewriteRule .* -
  • Закоментируйте следующие строки в файле .htaccess папки bitrix/admin/, которые отключают mod_rewrite :
    #

    # RewriteEngine Off

    #

  • В файл dbconn. php папки bitrix/ php_ interface/ добавьте строки:
    $remote_user = $_SERVER["REMOTE_USER" ]

    ? $_SERVER["REMOTE_USER" ] : $_SERVER["REDIRECT_REMOTE_USER" ];

    If ($strTmp)

    List($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"]) = explode(":", $strTmp) ;

Ошибки MySQL

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

  • Выводится сообщение: Lost connection to MySQL server during query . Ошибка, скорее всего здесь в таймауте.

Возможное решение проблемы: $DB->Query("SET wait_timeout=28800");

Если это не помогает, то необходимо обратиться к службе поддержки хостинговой компании для увеличения таймаута.

  • Конфликт кодировок. Например, выводится сообщение:

Причиной является то, что таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в latin1 и новые таблицы создаются в latin1 . При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке latin1 .

Решение простое и понятное: смена кодировки базы на корректную. Для решения этой проблемы нужно обратиться к хостеру.

Логические ошибки

Логические ошибки происходят, если пользователем неверно понимается процесс обмена данными и, соответственно, им неверно выполняются какие-то действия.

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

Но, бывают ситуации, когда такое сообщение – нормальная ситуация. Это происходит в случае, если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена.

Другая ошибка при выгрузке каталога товаров - сообщение: «Не удалось найти вид номенклатуры». Эта ошибка возникает, если в «1С» нет видов «Услуга» и «Товар». Эти типы критичны для процесса обмена данными с сайтом. Решение проблемы – создать в «1С» указанные виды номенклатуры.

Если в процессе обмена возникает ошибка: «Поле объекта не обнаружено», то это означает, что не установлены соответствия для полей заказа в «1С-Битрикс: Управление сайтом ». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие » страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин . Поля «Полное Название» и «Название» критичны для 1С., то есть без задачи соответствия этих полей экспорт выполняться не будет. Обратите внимание, что настройка соответствий производится отдельно для разных типов плательщиков.

Резюме

Экспорт/импорт товаров и заказов в связке «1С-Битрикс: Управление сайтом » и «1С:Предприятие » позволяет решить проблемы синхронизации данных на сайте и в системе учета. Как и в работе любой другой сложной системы, в этой «связке» могут возникать проблемы и неточности. Однако все они решаемы. можно у партнеров 1Софт.

Роберт Басыров

Все права защищены. По вопросам использования статьи обращайтесь к


Через скайп дано:

  • Ссылка на сайт new.a...er.ru
  • Логин
  • Пароль
  • Obmen? - это имя пользователя в Битриксе, под которым идет обмен
  • Пароль - его пароль
  • Ссылка на dt
  • прямой доступ через фтп и ссш у них закрыт (((

Что нужно сделать

Нужно проверить действительно ли есть несовпадение остатков в 1С и в Битрикс

История

  • Скачиваю dt
  • Идет скачивание. Пока идет скачивание запишу себе пароли, что бы были под рукой. Размер dt 834mb
  • В 1С зашел
  • Управление торговлей, редакция 11 (11.3.4.31)
  • Зашел в Битрикс
  • Редакция продукта: Малый бизнес
  • Обновления доступны: с 13.06.2017 по 13.06.2018
  • Сейчас найду обработку и скрипты с помощью которых я сверял остатки

Обработки я нашел, но на обычных формах. На управляемых формах не могу найти, поэтому сейчас сделаю для остатков характеристики.

Результат

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

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



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

Выводы

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

На данный момент выдавать список товаров, у которых есть несовпадение остатков, не имее смысла по следующим причинам:

  • Этот список будет расчитывать очень долго, потому что очень много товаров
  • Этот список нужно делать на рабочей версии, а не на копии рабочей версии
  • Даже если делать это на рабочей версии, то пока будет расчитываться этот список, он уже станет неактуальным, потому что магазин постоянно что-то продает
  • Этот список нужно сразу пускать в работу, то есть нужен еще один механизм, который будет оперативно и программным образом исправлять остатки на сайте.

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

Инициатором любого обмена является 1С, сайт не загружает ничего в 1С, сайт только принимает запросы и отдаёт результат. По умолчанию, 1С обращается к скрипту /bitrix/admin/1c_exchange.php. Этот путь указывается в настройках обмена в самой 1С. Из коробки в этом файле включается файл /bitrix/modules/sale/admin/1c_exchange.php. Если открыть файл, то видим там подключение нескольких компонентов в зависимости от $_GET["type"]. В общем случае интересуют два из них:

bitrix:sale.export.1c — экспорт заказов.

bitrix:catalog.import.1c -импорт каталога.

После получения ID сессии идёт инициализация обмена, URL: . На этом этапе сайт отдаёт настройки обмена со стороны сайта.

Для получения списка заказов запрашивается URL . Выгружаются заказы с полями EXTERNAL_ORDER = "N", UPDATED_1C = "N" и обновившиеся после последней успешной выгрузки в 1С (это проверяется по времени из свойства "last_export_time_committed_/bitrix/admin/1c_excha" модуля sale).

Флаг EXTERNAL_ORDER указывает, что заказ создан в 1С и его выгрузка в 1С не требуется.

Флаг UPDATED_1C после успешного импорта из 1С на сайте устанавливается в "Y" и такие заказы не участвуют в дальнейших экспортах до их обновления на сайте. Во время обновлений заказов на сайте UPDATED_1C устанавливается в "N".

После обработки заказов 1С для завершения обмена запрашивает URL . При этом в свойство "last_export_time_committed_/bitrix/admin/1c_excha" модуля sale записывается время запроса списка заказов (НЕ текущее время, т.к. с момента запроса заказов до их обработки могли добавиться заказы и они попадут в следующую выгрузку с сайта).

Модификация

В экспорте заказов участвуют файл, компонент и класс. Какие-либо события здесь отсутствуют, поэтому для модификации этого процесса нужно заменить компонент на свой, создать класс-наследник CSaleExport и заменить вызовы в компоненте на него. В последних версиях Битрикс этот класс стал относительно читабельным, в старых там была просто простыня из php и "xml".

С версии 15.5 добавлена дополнительная проверка и если вызвать просто, то получим ошибку "failure Ошибка проверки источника запроса. Обновите модуль обмена". Если нет желания возиться с sessid, то можно отключить проверку источника запроса, для этого нужно выполнить:

Импорт товаров из 1С

Интеграция 1С:Предприятие УТ 11.1.2 и 1С Битрикс. Настройка обмена товарами

На этом этапе в сессии инициализируется массив данных обмена $_SESSION["BX_CML2_IMPORT"] и сайт отдаёт параметры обмена: возможность использования zip, лимит размера файла и т.д. Также на этом этапе очищается папка для файлов выгрузки. Скорее всего, это будет папка /upload/1c_catalog/. Для отладки можно включить сохранение старых файлов обмена, тогда при новом обмене старые данные будут перемещаться в отдельные папки: 1c_catalog0, 1c_catalog1 и т.д.. Для сохранения данных нужно объявить константу в dbconn.php:

После этого 1С начинает подготовку данных и далее посылает их POST-запросом на сайт частями, URL: . Запрос продолжается, пока файлы не будут переданы полностью.

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

В выгрузке могут участвовать xml-файлы :

  • import.xml — товары, разделы, типы цен, склады, свойства товаров и единицы измерения;
  • offers.xml — торговые предложения товаров и их свойства;
  • prices.xml — цены торговых предложений(в новых версиях);
  • rests.xml — остатки торговых предложений(в новых версиях);
  • references.xml — пользовательские справочники (highload-инфоблоки, в новых версиях).

Узнать подробнее о файлах обмена

Картинки загружаются в папку import_files.

Обработка файла завершается, когда сайт отдаёт слово "success". За обработку файла выгрузки отвечают классы CIBlockXMLFile (/bitrix/modules/iblock/classes/mysql/cml2.php) и CIBlockCMLImport (/bitrix/modules/iblock/classes/general/cml2.php).

Обработка файла состоит из нескольких шагов (информация будет дополняться) :

    Очистка временной таблицы (таблица b_xml_tree);

    Метод CIBlockXMLFile::DropTemporaryTables(). Обычный drop таблицы b_xml_tree.

    Создание временной таблицы;

    Метод CIBlockXMLFile::CreateTemporaryTables(). Здесь создается таблица b_xml_tree. Можно, кстати, задать storage engine этой таблицы, равно как и всех создаваемые битриксом, с помощью определения константы MYSQL_TABLE_TYPE.

    Чтение файла во временную таблицу;

    Метод CIBlockXMLFile::ReadXMLToDatabase().

  1. Индексация временной таблицы;
  2. Импорт метаданных;
  3. Импорт разделов;
  4. Деактивация разделов и пересчёт левой и правой границ для разделов;
  5. Импорт элементов;
  6. Деактивация элементов;
  7. success.

Некоторые шаги могут выполняться за несколько запросов, порциями по несколько секунд (это время настраивается параметров "Интервал одного шага в секундах" в настройках интеграции с 1С в админке Битрикса).

Модификация

На шаге 10, т.е. по окончании обработки файла выгрузки (NB: одного файла, например, товаров или предложений) вызывается событие OnSuccessCatalogImport1C модуля catalog. Аргументы обработчика — параметры компонента обмена и путь к файлу выгрузки.

Также для изменения процесса обмена можно использовать обычные события, например, OnBeforeIBlockElementUpdate или OnBeforeProductAdd. В обработчике, чтобы определить, что событие вызвано именно во время обмена с 1С, я использую такое костыльное условие:

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

Отключение проверки источника запроса

Как и в случае с выгрузкой товаров, при импорте товаров есть проверка источника запроса. Можно отключить её следующим кодом:

Статья будет дополняться по мере появления новой информации и вдохновения.

Вы разработали интернет-магазин на битриксе. Во время разработки вы создали все нужные свойства и заполнили каталог демо-товарами.

Осталось только загрузить реальный каталог из 1С — это означает, что впереди еще много работы. Придется добиться, чтобы все нужные данные выгружались вообще и выгружались в нужное место. Иначе придется подгонять проект под структуру данных из 1С.

Вопрос интеграции поднимается на каждом более-менее крупном интернет-магазине. Часто разработчикам, не только начинающим, трудно понять, как работает механизм обмена. Полезная информация разбросана по интернету, будет удобно собрать её в одном месте.

Цели статьи

  • Коротко изложить основные возможности обмена и его алгоритм работы;
  • Дать ссылки на официальные и прочие полезные источники;
  • Ответить на частые вопросы;
  • Прояснить, с чего начать интеграцию и как ее успешно завершить.

Стандартный обмен между 1С-Битрикс и 1С

В битриксе есть встроенный функционал для обмена с 1С, благодаря чему любой обмен должен настраиваться в пару кликов.
Однако, для этого 1С должна быть “чистой” типовой конфигурации. На деле каждая первая 1С “нетиповая”, то есть модифицирована так или иначе.

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

Что умеет штатный механизм обмена

  • Импорт каталога товаров из 1С на сайт;
  • Экспорт каталога товаров с сайта в 1С;
  • Экспорт заказов с сайта в 1С;
  • Импорт заказов из 1С на сайт;
  • Импорт справочников (highload-инфоблоков) из 1С на сайт.

Информация о товарах передается на сайт в следующих файлах

  • import.xml - товары, группы (разделы инфоблока), типы цен, склады, свойства товаров и единицах измерения;
  • offers.xml - торговые предложения (ТП) товаров и их свойствах;
  • prices.xml - цены ТП;
  • rests.xml - остатки ТП;
  • references.xml - пользовательские справочники (HL-инфоблоки).

Файлы import.xml и offers.xml содержат описания свойств, типов цен, и прочую информацию, которая относится в равной степени ко всем товарам/ТП.

Если каталог большой, в целях оптимизации, описания выгружаются в отдельных “заголовочных” файлах. Это такие же файлы import.xml и offers.xml, только не содержат ничего кроме описаний. В таком случае заголовочные файлы обрабатываются только в самом начале обмена.

Информация о заказах передается на сайт в следующих файлах

  • documents.xml - документы (заказы);
  • contragents.xml - контрагенты (пользователи-покупатели).

Куда на сайт загружаются файлы выгрузки

В папку /upload/1c_catalog/. Перед каждым обменом эта папка очищается. То есть в этой папке всегда находятся файлы последнего обмена.

Можно включить " режим отладки” обмена — отключить перезапись файлов в папке 1c_catalog. Таким образом можно отключить удаление файлов выгрузки после завершения обмена.

Для этого нужно объявить константу в файле dbconn.php:

// Включает "режим отладки” для обмена с 1С, // отключает перезапись файлов в папке 1c_catalog // Что бы сохранялись все файлы после выгрузки. define("BX_CATALOG_IMPORT_1C_PRESERVE", true);

Теперь вместо удаления папка будет переименовываться, к ней будет добавляться числовой идентификатор.

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

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

Что нужно для обмена на стороне сайта

  • редакция битрикса “Малый бизнес” или “Бизнес”
  • создать пользователя и группу “Обмен с 1С” для обмена, настроить права
    • разрешить группе выполнять выгрузку товаров/заказов (в настройках параметров)
    • разрешить группе доступ на чтение папки /bitrix/admin/

Что нужно для обмена на стороне 1С

  • настроить адрес сайта и пользователя сайта из группы “Обмен с 1С”
  • настроить параметры выгрузки на стороне 1С (зависят от версии УТ)

Структура каталога в 1С и на сайте

Что делать если структура каталога в 1С не совпадает со структурой на сайте?

В 1С можно задать какие товары и разделы выгружать.

Часто в 1С товары хранятся не так, как они будут выводиться на сайте, поэтому можно на стороне 1С настроить виртуальный каталог для выгрузи на сайт: создать нужную структуру разделов и разложить по ним товары.

Так же можно задать условия отбора товара (не все товары нужны на сайте) для выгрузки на сайт и свойства (в 1С много св-в, не все нужны на сайте).

Виды выгрузок из 1С

Полная выгрузка

Происходит при выгрузке данных на сайт в первый раз, или при ручном запуске.

  • Выгружаются все товары.
  • Картинки выгружаются только у новых или измененных товаров.

Краткая выгрузка

Происходит часто, между полными, содержит только изменения по ценам и остаткам.

Полная принудительная выгрузка

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

Обычно используется только при отладке обмена.

С чего начать интеграцию c 1C

Если вы делаете новый сайт и планируете интеграцию с 1С в дальнейшем, то первым следует установить битрикс и сделать тестовый обмен. Вот, что это даст:

  • Будет создан тип иблока;
  • Будет создан иблок;
  • Будут созданы св-ва и справочники;
  • Будут созданы разделы каталога;
  • Будут созданы элементы каталога;
  • Будут созданы торговые предложения.

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

Как завершить интеграцию

Сопоставить структуры данных на сайте со структурой в 1С — вот главная цель интеграции.

Чтобы успешно завершить интеграцию, когда у вас уже есть полностью работающий проект, с актуальными данными, то нужно добиться, чтобы выгрузка из 1С проиcходила:

  • В существующий инфоблок;
  • В существующие св-ва;
  • В существующие разделы инфоблока;
  • В существующие товары и торговые предложения;
  • В существующие типы цен.

Все эти задачи решаются путем настройки одинаковых идентификаторов (XML_ID), то есть у вас должны совпадать все внешние коды на сайте с внешними кодами из 1С.