Мы рассмотрим следующие типовые операции:
- Реалтаймовый режим обмена с 1С
- Режим логирования операций проводимых в 1С и на сайте
- Выгрузка справочников из 1С
- Выгрузка свойств из 1С
Реалтаймовый режим обмена с 1С
Режим обмена в реальном времени реализован таким образом, что в 1С постоянно висит один сеанс, который ждет сообщения с сайта. На сайте создали или отредактировали заказ – в 1С посылается сигнал, чтобы 1С выполнила обмен заказами. Каждые 40 сек(по умолчанию). соединение с сайтом обрывается и происходит новое соединение.
- Если база 1С в файловом варианте работы, тогда активный сеанс 1С ждет сообщение с сайта. Для прекращения режима реального времени необходимо закрыть сеанс или разблокировать его, нажав на комбинацию клавиш Ctrl + Break.
- Если база 1С в клиент-серверном варианте, тогда фоновое задание ждет сообщение с сайта. Временной интервал, в котором работает режим реального времени – задается в расписании задания.
В авторизация на сайте к адресу сайта добавляется параметр "?type=listen". Т.е. адрес сайта получается: <АдресСайта> + "?type=listen". Параметр необходим, чтобы сайт знал, что это соединение для режима реального времени.
Сайт же может вернуть 2 кода состояния.
- Если это код 200, значит надо выполнить обмен.
- Если 302, то нужно сделать переадресацию и снова посмотреть код состояния. Адрес переадресации берется из заголовка «Location».
На видео можно увидеть работу реал тайм обмена для файловой базы 1С. Сначала был реализован сеанс 1С, в котором был запущен режим обмена в реальном времени, затем запустили второй сеанс, в котором смотрели – попадет ли заказ, созданный на сайте в базу 1С. Как можно было увидеть – заказ практически мгновенно попал в 1С. Скорость попадания заказу в1С зависит от скорости создания заказа в 1С. Обратно, измененный в 1С заказ, попадет на сайт при выгрузке заказов из 1С или при следующем реал тайм попадании заказа в 1С.
Режим логирования операций проводимых в 1С и на сайте
В новом модуле обмена реализован механизм логирования. В лог записываются все ключевые данные по формированию, транспорту и обработке на сайте. Лог файл хранится не только в каталоге, установленном в настройке обмена, но и может быть выгружен на сайт.
На сайте он хранится в: /upload/1c_catalog/Reports
Хранение лога на сайте позволяет сделать первичный анализ проблем с обменом данных, не заходя в 1С или на ПК, где они хранятся. Лог файл ведется в разрезе дня и для каждой настройки обмена он свой. После каждого обмена лог файл дописывается. На сайте лог файлы хранятся несколько дней.
На видео, показана работа логирования. Для более наглядного представления, сначала в настройке обмена указали выгрузку информации по товарам, в пакетах которого было по 20 товаров. Можно было заметить, что в логе хранились все ключевые этапы обмена каждого пакета. Конечно, если выгружать данные товаров по 20 элементов – обмен замедлится, т.к. действий по передаче данных намного больше, поэтому при повторном обмене в настройках обмена указали, чтобы количество товаров в пакете было 100 и указали, чтобы лог выгружался на сайт.
Как и видно на видео лог файл попал на сайт, причем в логе хранилась информация о первом обмена, так и втором. Для уменьшения времени при передаче файл лога – лог архивируется.
Выгрузка справочников
В новом модуле обмена реализована возможность выгрузки любых справочников из 1С на сайт. Причем можно выгружать не только все данные, но и только изменённые, т.к. при записи справочников смотрится, нужно ли регистрировать изменение для выгрузки на сайт.
Пользовательские справочники хранятся в Highload инфоблоках. Вместе со справочниками выгружается информация о реквизитах: пользовательское наименование и его тип(если он примитивный). Если у реквизита ссылочный тип, то можно выгрузить как его уникальный идентификатор, так и строковое представление элемента.
Теоретически, на сайте можно повторить справочную структуру базы 1С. Табличные части справочников, пока, не выгружаются.
Как можно увидеть на видео, было добавлено два пользовательских справочника «Виды номенклатуры» (« VidyNomenklatury» на сайте») и «Договоры контрагентов» (« DogovoryKontragentov»). Все элементы этих справочников были выгружены.
Причем настройки стояли таким образом, что часть ссылочных реквизитов представлялись как строка, а часть как идентификатор элемента. Например, в справочнике «Договоры контрагентов» настройки были заданы так, что владелец договора (контрагент) и тип цены, выгружается как идентификатор элемента (в выгружаемых контрагентах и типах цен именно этот идентификатор), а валюта и организация как строка.
С помощью идентификаторов, при небольшой доработке сайта, можно связать элементы разных инфоблоков. Например, договоры контрагентов, где указывая контрагента в заказе, отобразится список его договоров, а выбранный договор из списка подставит нужный тип цены.
Выгрузка свойств
В новом модуле обмена значительно доработаны свойства товаров и предложений:
- Стало возможным делать отбор свойств, ведь не все свойства, которые есть в 1С, должны выгружаться на сайт. Когда выгружаются только те свойства, которые необходимы – это не только упростит работу со свойствами на сайте, но и заметно ускорит скорость обмена.
- Теперь свойства выгружаются не только в товары, но и в предложения, что значительно упрощает работу с предложениями.
- Свойства могут выгружаться как в свойства инфоблоков, так и в справочники HL блоки. Куда выгружать свойство – задается в настройках обмена 1С.
- В свойстве появился признак определяющий, влияет ли это свойство на цену товара, или это просто информативное свойство.
На видео можно увидеть, что в настройках обмена 1С задали отбор по свойствам, чтобы выгружались только те свойства, которые необходимы. В настройках свойств указали, какие свойства должны выгружаться в highload блоки, а какие нет. Установили признак, на тех свойствах, которые влияют на цену. На сайте же видно: создались два highload блока(«PROIZVODITEL» - свойство «Производитель» и «VIDTOVARA» - свойство «Вид товара»). Значения свойств у товаров и предложений появились, причем выбирать значения можно из выпадающего списка.
Если у вас появятся вопросы задавайте их в комментариях, мы с удовольствием на них ответим.
P.S. если у вас есть предложения какие еще типовые операции можно рассмотреть в статьях, то пишите об этом в комментариях.
.
Вышли новые версии модулей обмена.
Для УТ 10.3.29.1 - версия 4.0.0.9
- наименование предложений теперь выгружается как наименование товара + наименование характеристики
Для УТ 11.1.2.31 - версия 4.0.0.6- наименование предложений теперь выгружается как наименование товара + наименование характеристики
- исправлена ошибка, когда устанавливалось количество 0 в заказе, если в УТ не ведется работа с упаковками.
Для УТ 11.1.5.16 - версия 4.0.0.3Я продолжаю свою эпопею с допиливаем выгрузки для Розницы.
Сейчас выгружаются и присваиваются свойства ив каталог и в предложения.
Но остался один неприятный момент. Если я делаю выгрузку Свойств для предложений, это у меня отдельный файл получается.
И второстепенные вопросики есть:
1. В вашей выгрузки присутствует <НомерВерсии>AAAABwAAAAA=</НомерВерсии> в типовом XDTO такого нет. Это что-то значит для Битрикса?
2. Когда происходит выгрузка в Битрикс, не важно предложений или товара, данные в Битрикс полностью перезаписываются или есть какое-то сравнение изменений?
Спасибо за ответы!
По второстепенным вопросам:
1. Это версионность. Если элемент в 1С менялся, то у него меняется номер версии. БУС же хранит последнюю пришедшую версию. Если она отличается от пришедшей - элемент обновляется, если нет, то нет. В обратную сторону это также работает, при загрузке в 1С.
2. Не понял о чем это Вы. Возможно о версионности выше.
Я просто наталкивался на ситуацию, что делаю выгрузку, а данные на сайте не изменяются, отсюда и возник вопрос, если все данные ушли на сайт, то они перезапишут все старые или нет?
Т.е. это нормально, что сначала предложения изчузают и остается только товар, а потом сново догружаются?
Я просто наталкивался на ситуацию, что делаю выгрузку, а данные на сайте не изменяются, отсюда и возник вопрос, если все данные ушли на сайт, то они перезапишут все старые или нет?
Если выгружаются значения свойств вот так:
А если выгрузка содержит ещё тег Наименование, то присвоение значений не происходит. Наименование в типовом обмене присутствовало.
Тогда вопрос: На сколько точно нужно следовать вашей структуре XML файла при разработке своей выгрузки?
Зачем выгружать лишние данные? Лишние данные - это дополнительное время на формирование данных, передачу и особенно на загрузку данных в БУС.
Кста, по поводу наименования. Если Вы добавили элемент, который нетиповой, то он не должен влиять на загрузку(типовую). Если влияет - баг.
Наименования в 1С могут содержать какие либо артикулы, производителя бывает вписывают в начало, все это для удобства поиска и однозначной классификации товаров в 1С. Ну а для сайта там уже должны быть названия приятные глазу, так сказать.
И еще вопрос. Насколько я понимаю, новый модуль обмена сейчас в статусе альфы. Когда примерно планируется выпуск стабильной версии?
Да скоро должна быть стабильная версия. Критичных багов нет, особых замечаний по доработке модулей - тоже.
Также и при выгрузке картинки из 1с можно посчитать ее crc, и если она уже есть в базе у другого товара, то не выгружать ее, а прописать ссылку.
объем товара,
упаковки
выгружаются в новой версии?
В заказах должна подставляться базовая упаковка(если используются упаковки).
Т.е. выгрузка только что работала и перестала.
Далее восстанавливаю базу из бекапа, делаю обмен - он снова работает.
После бекапа сделал раз 10 обмены ничего не поломалось.
Потом сделал обмен с УТ 11 Модуль от Битрикс.
Получил ошибку:
Что все это может значить и как с этим бороться?
__
Выгрузка из Розницы 2.1.
Я просто сейчас пытаюсь понять, как быть с Брендами, они ведь в Битриксе просто обычное свойство? Наверное их и выгружать корректней через свойства?
Разобрался сам. В GetList будет XML_ID. Все тоже самое, что и с enum, но в значениях не ИД, а GUIDы.
Для УТ 10.3.29.1 -
- Исправлена ошибка когда не выгружались заказы из 1С по причине "Не удалось прочитать ответ сервера. Параметры обмена не получены.13.05.2014 17:37:56--Ответ сервера: zip=yesfile_limit=204800sessid=944adb0e8f19eab32ec7d437bf3845a6version=2.08"
- Добавлен контроль длины официального наименования контрагента. Максимальное количество символов = 250
- Теперь если свойство булево. то выгружаются строковые значения "Да" или "Нет", вместо "true" и "false"
Для УТ 11.1.2.31 -- Теперь если свойство булево. то выгружаются строковые значения "Да" или "Нет", вместо "true" и "false"
Для УТ 11.1.5.16 -Характеристики, Реквизиты, Ставка налога, производитель и др. ?
В XML файле ничего этого нет, убрал специально, а на сайте в настройках свойств каталога все равно появляются.
Они в Битрексе по умолчанию прописаны?
Можно ли сделать выгрузку из 1С УТ.10.3 товары аналоги и сопутствующие товары, т.к. в типовой конфигурации учет таких товаров не ведется, то эти модули были дописаны в 1С. Есть очень большое желанье загрузить эту информацию на сайт. Как это можно сделать?
Как вариант внести изменения в схему xdto и дополнить модули выгрузки, но какие изменения стоит туда внести не совсем ясно.
У нас есть выгрузка каталога. В 1С из выгрузки убираем раздел верхнего уровня. Делаем полную выгрузку. Товары внутри этого раздела на сайте деактивируются, а сама группа и все подгруппы остаются активными. Хотя в настройках интеграции с 1С у нас стоит условие что все товары и разделы которых нет в выгрузке деактивировать. Подскажите пожалуйста в чем может быть причина?
Изменения в модулях я пишу в этой ветке форума:
Для Управления Торговым Предприятием нашего обработчика нет, и вы будете использовать стандартный который входит в эту конфигурацию 1С, он может очень многое не уметь из последних нововведений в нашем продукте.
раньше такого не было - либо есть обмен, либо его нет. написал в техподдержку, пока ответа нет.
Тестируем модуль 4007 для УТ 11.
Возникли вопросы. Будем признательны за разъяснения:
1. Почему при выгрузке характеристик 1С в торговые предложения на сайте появляется 2ва торговых предложения (Первая - просто наименование номенклатуры; вторая - наименование + свойство характеристики) если в 1С всего одна характеристика - свойство (размер)?
2. Если в настройке выгружаемых свойств товаров настроить выгрузку некоторых свойств номенклатуры в торговые предложения, то на сайте эти свойства появляются в торговых предложениях, но они не заполнены (хотя в товаре на сайте они заполняются)? Кроме того, например свойство характеристики 1С "Размер" выгружается в торговое предложение и в свойство "Размер" и в характеристику "Размер" причем заполнена только Характеристика "Размер" у торгового предложения?
3. При выгрузке каталога товаров на сайте товары создались, торговые предложения создались, виды цен создались НО нет самих значений цен, хотя в 1С они установлены? В файлах price... нет данных по ценам.
4. При включении обмена только изменений, если например в карточке номенклатуры изменено только свойство (доп реквизит), то позиция попадает в обмен, но в файлах import и offers нет данных по свойствам вообще (теги "Свойства") пустые. Почему не выгружаются измененные свойства?
"автоПризация на сайте"...
удалено
Наш модуль это дополнительные возможности которые вы можете использовать уже сейчас, и он будет немного опережать коробочный обмен по функциональности.
Все хорошо и по инструкции настроил некоторые моменты реалтайм обмена товаров, но как быть с разделами? Или я что-то пропустил (ткните пожалуйста носом) или этот момент не освещен.
При смене названия раздела в номенкулатуре 1С он должен переименоваться на сайте?
Попробовали внедрить Ваш модуль обмена на конфигурацию УТ 11.0.6.9 сильно переписанную. Внедрение получилось и даже получилось выполнить обмен на сайт (в новые инфоблоки). НО результат на сайте не очень устроил и решили вернуться к старому типовому (дописанному) модулю обмена. НО он перестал работать после нового обмена. Выдает ошибку:
ПараметрыЗапроса = bitrix/admin/1c_exchange.php?type=catalog&mode=init
ОтветСервера = failure
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента.
Помогите, пожалуйста, вернуть работоспособность старого обмена! что и где нужно отключить?
COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y" ;
COption::SetOptionString("sale", "secure_1c_exchange", "N" ;
Подскажите про эти скрипты как правильно их запустить я новичок в этом деле.
Заранее благодарю.
Мне кажется это не правильно.
в чем может быть основная проблема в обмене между сайтом и 1с.?
и как это все автоматизировать?
Очень жду ответа от вас
А как у вас реализуется выгрузка заказов с сайта?
Какие статусы прописываются на сайте и в 1С??
Просто на сайте [N] Готов и так далее, вот такие статусы. В 1С так же писать? или просто Готов?
Т.е. у нас выдается ошибка 302, и как то насколько я понял, нужно настроит переадресацию, но как это сделать информации не нашел.
Да, если возвращается 302, то это переадресация..
то есть сделать статус на сайте активность=нет ?
Соответственно при выгрузке 1С .
При обмене заказами 1с выдает ошибку. Недавно удалил с сайта все заказы. т.к они были пробные. я думаю это не причина.
Не удалось прочитать данные, загруженные с сервера.
Обмен не выполнен
Выгружено заказов: 2
Произошла ошибка: . По причине:
Произошла ошибка на стороне сервера. Файл не отправлен (C:\Users\Danil\AppData\Local\Temp\1cbitrix\1cbitrix-0389b14e-9bbd-4bbb-ab52-978c3b96aba1.xml).
Обмен не выполнен
Ответ сервера:
Ошибка проверки источника запроса. Обновите модуль обмена.
Обмен заказами завершен с ошибками!!!
1С:Предприятие 8.2 (8.2.19.83)
"Управление торговлей", редакция 10.3 (10.3.26.2)
1С-Битрикс: Управление сайтом 14.5.3
До последнего не верил. Когда отключили, всё стало опять нормально.
Либо я не понял ваш вопрос.
Со стороны 1С работает сотрудник, который установил все обновления.
Веб-сервер и сервер 1С — физически два разных сервера.
Валился именно веб-сервер: плодятся апачи, которые в определённый момент приводят к перегрузке памяти и он (апач) либо падает в обморок, либо нагрузка идёт в пик.
Конфигурация 1С: УТ
Версия конфигурации 1С: УТ: 11.1 (11.1.6.26).
Версия модуля интеграции на стороне 1С: 4.0.2.3.
и в результате этой выгрузки не выгружаются свойства товаров.
Как понять в чём проблема?
Импорт только один - из 1С запускаю только обмен товарами.
Добавил в файл
/bitrix/modules/iblock/classes/mysql/cml2.php
запись логов на удаление, создание и изменение временной таблицы, так вместо нормальной последовательности между удалением и созданием таблицы следующего запроса проскакиваю изменения таблицы ещё от предыдущего запроса, как раз в это время в логах 1С появляются ошибки.
Выполнение агентов на cron
Замечание. Агенты выполняются на хитах, рекомендуется перевести выполнение агентов на cron
и
Размер стека и pcre.recursion_limit
Замечание. Возможны проблемы в работе с длинными строками из-за системных ограничений
С mysql всё нормально.
(
План следующий:
1) настроить с обоих сторон (битрикс и УТ),
2) в пустую базу 1С закачать каталог интернет-магазина,
3) внести незначительные изменения (добавляем один товар копированием, изменив только наименование),
4) залить базу 1С в каталог интернет-магазина.
В итоге каталог дублируется. В исходном шаблоне типового решения Каталог товаров состоит из одного раздела "Одежда", который имеет свою структуру. После обмена с 1С раздел "Одежда" сползает на уровень вниз, сам каталог начинает явно называться "Каталог товаров" (а не "Одежда" как вначале), а ассортимент из 1С ложится рядом с тем же названием "Одежда".
Пробовали разные варианты:
= в настройках интеграции с 1С в разделе "Каталог" для атрибута "Тип инфо-блока" ставили значения как "[catalog] Каталоги", так и "Создать по необходимости";
= в настройках обмена с WEB-сайтом в 1С режим обмена выставляли как "Полная выгрузка", так и "Только изменения".
Результаты немного отличались, но всё равно происходило дублирование.
В данной связи два вопроса:
1. Как избежать дублирования каталогов товаров? Какие настройки выставить, чтобы каталог из 1С выгружался куда надо, а не дублировался?
2. Допустим у нас возникли два каталога. Как менять привязку каталога к отображению на сайте? Это актуально при разном представлении ассортимента. Т. е. номенклатура одна, но её структуризация может быть разной, и разные структуры каталогов привязываются к разным сайтам.
(
План следующий:
1) настроить с обоих сторон (битрикс и УТ),
2) в пустую базу 1С закачать каталог интернет-магазина,
3) внести незначительные изменения (добавляем один товар копированием, изменив только наименование),
4) залить базу 1С в каталог интернет-магазина.
В итоге каталог дублируется. В исходном шаблоне типового решения Каталог товаров состоит из одного раздела "Одежда", который имеет свою структуру. После обмена с 1С раздел "Одежда" сползает на уровень вниз, сам каталог начинает явно называться "Каталог товаров" (а не "Одежда" как вначале), а ассортимент из 1С ложится рядом с тем же названием "Одежда".
Пробовали разные варианты:
= в настройках интеграции с 1С в разделе "Каталог" для атрибута "Тип инфо-блока" ставили значения как "[catalog] Каталоги", так и "Создать по необходимости";
= в настройках обмена с WEB-сайтом в 1С режим обмена выставляли как "Полная выгрузка", так и "Только изменения".
Результаты немного отличались, но всё равно происходило дублирование.
В данной связи два вопроса:
1. Как избежать дублирования каталогов товаров? Какие настройки выставить, чтобы каталог из 1С выгружался куда надо, а не дублировался?
2. Допустим у нас возникли два каталога. Как менять привязку каталога к отображению на сайте? Это актуально при разном представлении ассортимента. Т. е. номенклатура одна, но её структуризация может быть разной, и разные структуры каталогов привязываются к разным сайтам.
Импортирую тестовый файл
Но разделы не загружаются.
Начал ковырять ядро, выявил следующее:
в момент "progress Файл импорта прочитан"
у элемента "Каталог>" PARENT_ID равен 69
Судя по всему из-за этого и не работает.
Есть идеи на этот счет?
Тестируем обмен в режиме реального времени. Остается непонятным один момент: при запуске "Обмен в режиме реального времени", 1С слушает сайт, и всё что там меняется ( заказы меня интересуют в основном), сразу же отображается и в 1С, а вот в обратную сторону ничего не происходит, пока на сайте что-то не поменяется и не запустится обмен. Т.е. я меняю статус заказа в 1С, хотелось бы чтобы это и на сайте отобразилось, но пока на сайте с каким либо заказом чего нибудь не сделают, этого не произойдет. Это так и должно работать? На видео я вижу совсем другую картину. Где мы чего недонастроили? Может кто подскажет....
Управление торговлей, редакция 11.1 (11.1.7.54)
Версия модуля обмена 4.0.4.2
Никак не пойму. Real-time обмен - нужен чтобы заказы с сайта онлайн попадали в 1С?
Мне нужно чтобы изменения остатков товара максимально быстро попадали из 1С на сайт - это только через пердиодический обмен (регламентное задание в 1С) реализуется, да?
Есть ли возможность выгрузки номенклатуры с типом "набор" с остатками и ценами если остаток и цена формируется от состава набора? Если да то в какой редакции 1С-Битрикс: Управление сайтом?
Возможно проблема и не в тему поста, но все же посмею задать вопрос: настроена синхронизация товаров на сайт. Часть картинок не приходят на сайт, хотя в 1С загружены. Где и как посмотреть ограничения на размер картинок и какие вообще могут быть причины того, что часть картинок не выгружаются на сайт?
Мне нужно, чтобы через парсер программу в свойсва цеплялись артикулы. Пыталась это сделать через
Highload-блок . Как выгрузить туда артикулы , чтобы они выводились в наименовании товара?
Подскажите пожалуйста, при настройке выгрузки каталога из УТ 11.1 штатным способом, БЕЗ МОДУЛЯ ОБМЕНА, где смотреть лог выгрузки?
Произошла ошибка: Ошибка получения параметров обмена (ограничение размера файла)!
Произошла ошибка на стороне сервера. Файл не отправлен. (C:\Users\USR1CV8\AppData\Local\Temp\webdata\import0_1.xml).