Изменение поля ВерсияДанных
Подскажите плиз, каким образом можно инициировать изменение поля ВерсияДанных в "чужом" объекте.
Суть такая. Решил сегодня разобраться, почему не выгружается на Битрикс Характеристика(Предложение) при изменении штрихкода.
При удалении\добавлении штрихкода обработка битрикса регает событие изменения Номенклатуры в узлах обмена сайтов. Но вроде как не использует это никак потом(утверждать не буду, но не нашел) .
При использовании CRC в выгрузке номенклатуры\характеристики и НЕиспользовании версионности данных номенклатуры\характеристики, получаем ситуацию следующую. При добавлении\удалении штрихкода по сути номенклатура\характеристика не изменяется (поле ВерсияДанных не меняется) и данная позиция не попадает в выгрузку.
Если при добавлении штрихкода затем жамкнуть сохранить в Характеристике, то конечно ВерсияДанных у Характеристики изменится и штрихкод попадет в выгрузку.
Бывают у меня ситуации когда я целый приход гружу на сайт и только потом у них появляются штрихкоды в 1С. А они мне нужны на сайте, я по ним потом привязки картинок делаю
Что-то много понаписал. Резюмирую. Мне надо при добавлении\удалении штрихкода инициировать изменение поля ВерсияДанных у Характеристики
Суть такая. Решил сегодня разобраться, почему не выгружается на Битрикс Характеристика(Предложение) при изменении штрихкода.
При удалении\добавлении штрихкода обработка битрикса регает событие изменения Номенклатуры в узлах обмена сайтов. Но вроде как не использует это никак потом(утверждать не буду, но не нашел) .
При использовании CRC в выгрузке номенклатуры\характеристики и НЕиспользовании версионности данных номенклатуры\характеристики, получаем ситуацию следующую. При добавлении\удалении штрихкода по сути номенклатура\характеристика не изменяется (поле ВерсияДанных не меняется) и данная позиция не попадает в выгрузку.
Если при добавлении штрихкода затем жамкнуть сохранить в Характеристике, то конечно ВерсияДанных у Характеристики изменится и штрихкод попадет в выгрузку.
Бывают у меня ситуации когда я целый приход гружу на сайт и только потом у них появляются штрихкоды в 1С. А они мне нужны на сайте, я по ним потом привязки картинок делаю
Что-то много понаписал. Резюмирую. Мне надо при добавлении\удалении штрихкода инициировать изменение поля ВерсияДанных у Характеристики
По теме из базы знаний
- Сложные запросы в динамическом списке или как не надо писать запросы для них
- DaJet Exchange: обмен данными с 1С (часть 1)
- Проект, который прошел путь от провала до web-клиента. От web-клиента до мобильного приложения
- Выгрузка измененных внешних обработок
- Комплекс программ для ведения проекта разработки
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Вы о какой версионности? Если ресь о настройки версионности в модуле обмена, то смысл в ней следующий. Она по сути вырубает CRC для указанных полей, путем добавления числового значения к полю ВерсияДанных.
То есть к примеру, если поставить флаг "Использовать версионность " для свойств , то свойства будут обновляться на сайте всегда, так как версияданных файла импорта будет всегда отличная от версииданных на сайте .
Можно конечно поставить версинность всем полям, но тогда будет выгружаться всегда всё. Но при нескольких тысячах и более позиций и частой выгрузке на сайт получим проблему
То есть к примеру, если поставить флаг "Использовать версионность " для свойств , то свойства будут обновляться на сайте всегда, так как версияданных файла импорта будет всегда отличная от версииданных на сайте .
Можно конечно поставить версинность всем полям, но тогда будет выгружаться всегда всё. Но при нескольких тысячах и более позиций и частой выгрузке на сайт получим проблему
(4)
ничего подобного. В случае использования версионности на сайт уйдет все, что будет выгружено из 1с. А из 1с будет выгружено вообще все, что удовлетворяет условиям отбора.
И это ВСЁ будет обработано на сайте.
Версионность тем и не устраивает, что я не хочу обрабатывать на сайте каждый раз всё, только потому, что у меня у одной позиции изменился штрихкод. Поэтому и поставлен вопрос именно так. Как в 1с изменить поле ВерсияДанных?
я еще раз повторяю: не используйте версионность вообще, в этом случае изменения на сайт уходят только в случае, если они явно зарегистрированы в плане обмена.
или чем вас не устраивает неиспользование версионности?
или чем вас не устраивает неиспользование версионности?
ничего подобного. В случае использования версионности на сайт уйдет все, что будет выгружено из 1с. А из 1с будет выгружено вообще все, что удовлетворяет условиям отбора.
И это ВСЁ будет обработано на сайте.
Версионность тем и не устраивает, что я не хочу обрабатывать на сайте каждый раз всё, только потому, что у меня у одной позиции изменился штрихкод. Поэтому и поставлен вопрос именно так. Как в 1с изменить поле ВерсияДанных?
(6)я в курсе когда меняется ВерсияДанных . И это вообще ни разу не хэш. В mysql это банальный timestamp
Выгрузку я делаю полную, да. Потому как выгрузка "Только изменений" для номенклатуры меня не устраивает вообще никак. Это проверено за несколько лет и самостоятельно и через общение с техподдержкой и напрямую с программерами из тп битрикса. Возвращаться на тот этап нет никакого желания. Полная выгрузка меня устраивает. Просто вчера опять наткнулся на штрихкода и решил допинать их.
(5)
я тут не совсем верно написал. На сайт уходит всегда все(в случае полной выгрузки) а вот уже при использовании версионности обрабатывается по разному. Там простой код. Берется ВерсияДанных (IBLOCK_XML2_VERSION) из файла и сравнивается с ВерсиейДанных сохраненной на сайте. Если это дело равно, то товар просто активируется, если был деактивирован. И все. А вот если не равно, оно все грузится по полной
А в случае использования Версионности. К IBLOCK_XML2_VERSION добавляются три цифры и версии получаются всегда разные. И всегда идет полная обработка позиции из файла.
Блин.....Свалились к обсуждению Битрикса ))) Мне туда вообще не надо
Малость еще поковырялся. Похоже ВерсияДанных меняется на уровне БД (могу ошибаться)
Можно тогда вызвать Объект.Записать()
как-то не очень изящно, ну да ладно
Выгрузку я делаю полную, да. Потому как выгрузка "Только изменений" для номенклатуры меня не устраивает вообще никак. Это проверено за несколько лет и самостоятельно и через общение с техподдержкой и напрямую с программерами из тп битрикса. Возвращаться на тот этап нет никакого желания. Полная выгрузка меня устраивает. Просто вчера опять наткнулся на штрихкода и решил допинать их.
(5)
В случае использования версионности на сайт уйдет все, что будет выгружено из 1с
я тут не совсем верно написал. На сайт уходит всегда все(в случае полной выгрузки) а вот уже при использовании версионности обрабатывается по разному. Там простой код. Берется ВерсияДанных (IBLOCK_XML2_VERSION) из файла и сравнивается с ВерсиейДанных сохраненной на сайте. Если это дело равно, то товар просто активируется, если был деактивирован. И все. А вот если не равно, оно все грузится по полной
if(isset($arXMLElement[$this->mess["IBLOCK_XML2_VERSION"]]))
$arElement["TMP_ID"] = $arXMLElement[$this->mess["IBLOCK_XML2_VERSION"]];
else
$arElement["TMP_ID"] = $this->GetElementCRC($arXMLElement);
,,,,,
if($arDBElement = $rsElement->Fetch())
$bMatch = ($arElement["TMP_ID"] == $arDBElement["TMP_ID"]);
}
ПоказатьА в случае использования Версионности. К IBLOCK_XML2_VERSION добавляются три цифры и версии получаются всегда разные. И всегда идет полная обработка позиции из файла.
Блин.....Свалились к обсуждению Битрикса ))) Мне туда вообще не надо
Малость еще поковырялся. Похоже ВерсияДанных меняется на уровне БД (могу ошибаться)
Можно тогда вызвать Объект.Записать()
как-то не очень изящно, ну да ладно
(7)В этих условиях вопрос: править обмен на стороне 1С нет возможности или желания?
Лично я правил обмен до того состояния, чтобы обмен только изменениями выполнялся логически верно. Изначально было криво, да, но я специалист по 1С, битрикс для меня - черный ящик.
Лично я правил обмен до того состояния, чтобы обмен только изменениями выполнялся логически верно. Изначально было криво, да, но я специалист по 1С, битрикс для меня - черный ящик.
(8)
скажем так, нецелесообразно. По большому счету выгрузка этого модуля меня устраивает. В какой-то момент я отказался от хранения и выгрузки изображений из 1с и переписал загрузку изображений на стороне сайта с привязкой к штрихкодам. Поэтому они иногда дают о себе знать.
Получается что на сайт гружу только xml, это незатратно. А вот обработка этого хозяйства, при использовании версионности и без ее использования, две большие разницы для сервера.
Александр Денисюк (разработчик этого дела, ну во всяком случае на форуме он рулит разделом интеграции) по поводу штрихкодов говорит - "Включите версионность" И пофиг, что бэк битрикса вместо обработки 10 позиций, будет лопатить пару десятков тысяч.
Ну тогда вот на стороне 1с добавлю в слушатель запись характеристики. Костыль конечно. Но главное шоб работало.
Спасибо за участие ))
В этих условиях вопрос: править обмен на стороне 1С нет возможности или желания?
скажем так, нецелесообразно. По большому счету выгрузка этого модуля меня устраивает. В какой-то момент я отказался от хранения и выгрузки изображений из 1с и переписал загрузку изображений на стороне сайта с привязкой к штрихкодам. Поэтому они иногда дают о себе знать.
Получается что на сайт гружу только xml, это незатратно. А вот обработка этого хозяйства, при использовании версионности и без ее использования, две большие разницы для сервера.
Александр Денисюк (разработчик этого дела, ну во всяком случае на форуме он рулит разделом интеграции) по поводу штрихкодов говорит - "Включите версионность" И пофиг, что бэк битрикса вместо обработки 10 позиций, будет лопатить пару десятков тысяч.
Ну тогда вот на стороне 1с добавлю в слушатель запись характеристики. Костыль конечно. Но главное шоб работало.
Спасибо за участие ))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот