Изменение поля ВерсияДанных

1. mrwhited 03.02.22 20:07 Сейчас в теме
Подскажите плиз, каким образом можно инициировать изменение поля ВерсияДанных в "чужом" объекте.

Суть такая. Решил сегодня разобраться, почему не выгружается на Битрикс Характеристика(Предложение) при изменении штрихкода.
При удалении\добавлении штрихкода обработка битрикса регает событие изменения Номенклатуры в узлах обмена сайтов. Но вроде как не использует это никак потом(утверждать не буду, но не нашел) .

При использовании CRC в выгрузке номенклатуры\характеристики и НЕиспользовании версионности данных номенклатуры\характеристики, получаем ситуацию следующую. При добавлении\удалении штрихкода по сути номенклатура\характеристика не изменяется (поле ВерсияДанных не меняется) и данная позиция не попадает в выгрузку.

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

Что-то много понаписал. Резюмирую. Мне надо при добавлении\удалении штрихкода инициировать изменение поля ВерсияДанных у Характеристики
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 03.02.22 20:16 Сейчас в теме
(1)не используйте версионность, насколько я понял как она работает, смысла в ней как-то мало.
3. mrwhited 03.02.22 20:22 Сейчас в теме
(2)Вы о какой версионности? Если ресь о настройки версионности в модуле обмена, то смысл в ней следующий. Она по сути вырубает CRC для указанных полей, путем добавления числового значения к полю ВерсияДанных.

То есть к примеру, если поставить флаг "Использовать версионность " для свойств , то свойства будут обновляться на сайте всегда, так как версияданных файла импорта будет всегда отличная от версииданных на сайте .
Можно конечно поставить версинность всем полям, но тогда будет выгружаться всегда всё. Но при нескольких тысячах и более позиций и частой выгрузке на сайт получим проблему
4. nomad_irk 76 03.02.22 20:58 Сейчас в теме
(3) все так.
я еще раз повторяю: не используйте версионность вообще, в этом случае изменения на сайт уходят только в случае, если они явно зарегистрированы в плане обмена.
или чем вас не устраивает неиспользование версионности?
5. mrwhited 03.02.22 21:03 Сейчас в теме
(4)
я еще раз повторяю: не используйте версионность вообще, в этом случае изменения на сайт уходят только в случае, если они явно зарегистрированы в плане обмена.
или чем вас не устраивает неиспользование версионности?

ничего подобного. В случае использования версионности на сайт уйдет все, что будет выгружено из 1с. А из 1с будет выгружено вообще все, что удовлетворяет условиям отбора.
И это ВСЁ будет обработано на сайте.

Версионность тем и не устраивает, что я не хочу обрабатывать на сайте каждый раз всё, только потому, что у меня у одной позиции изменился штрихкод. Поэтому и поставлен вопрос именно так. Как в 1с изменить поле ВерсияДанных?
6. nomad_irk 76 04.02.22 06:01 Сейчас в теме
(5)Вы каждый раз выполняете полную выгрузку?
ВерсияДанных меняется только при записи объекта, это своего рода хэш.
7. mrwhited 04.02.22 08:28 Сейчас в теме
(6)я в курсе когда меняется ВерсияДанных . И это вообще ни разу не хэш. В mysql это банальный timestamp

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


(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 добавляются три цифры и версии получаются всегда разные. И всегда идет полная обработка позиции из файла.

Блин.....Свалились к обсуждению Битрикса ))) Мне туда вообще не надо

Малость еще поковырялся. Похоже ВерсияДанных меняется на уровне БД (могу ошибаться)
Можно тогда вызвать Объект.Записать()
как-то не очень изящно, ну да ладно
8. nomad_irk 76 04.02.22 08:34 Сейчас в теме
(7)В этих условиях вопрос: править обмен на стороне 1С нет возможности или желания?
Лично я правил обмен до того состояния, чтобы обмен только изменениями выполнялся логически верно. Изначально было криво, да, но я специалист по 1С, битрикс для меня - черный ящик.
9. mrwhited 04.02.22 08:58 Сейчас в теме
(8)
В этих условиях вопрос: править обмен на стороне 1С нет возможности или желания?

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

Получается что на сайт гружу только xml, это незатратно. А вот обработка этого хозяйства, при использовании версионности и без ее использования, две большие разницы для сервера.

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

Ну тогда вот на стороне 1с добавлю в слушатель запись характеристики. Костыль конечно. Но главное шоб работало.

Спасибо за участие ))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот