Здравствуйте! Имеется: КА 1.1 Модуль интеграции для нее: 4.0.6.2 1С-Битрикс: Управление сайтом 15.0.14
В настройках интеграции на сайте стоит: Что делать с товарами, отсутствующими в файле импорта: удалять (также пробовал и деактивировать) реакции на это нет, товары, которых нет в выгрузке ни удаляются, ни деактивируются.
Сразу еще вопрос: необходимо выгружать вторую единицу измерения для товаров, так как товар продается как по весу, так и по кг/м (соответственно с коэффициентом от веса) есть ли какой-то механизм для этого? или надо как-то выкручиваться на пакетах предложений?
1. Та настройка на деактивацию товаров не работает. Напишите в техподдержку, чтобы зафиксировали баг. 2. Две единицы измерения нельзя выгрузить. У нас выгружается только базовая единица
Ещё можно посмотреть файл "bitrix\php_interface\init.php", возможно там созданы дополнительные обработчики, которые не позволяют отключить или удалить товар
Столкнулся с очередной проблемой: при выгрузке существующих в битриксе товаров не обновляются свойства товаров и предложений. Как я писал выше, мне нужна была вторая единица измерения, но так как это не возможно, а мне было достаточно только коэффициента от нее, то выгрузил этот коэффициент как свойство. Он будет периодически меняться, поэтому обновление свойств для меня актуально. В чем может быть причина?
seobig написал: Столкнулся с очередной проблемой: при выгрузке существующих в битриксе товаров не обновляются свойства товаров и предложений. Как я писал выше, мне нужна была вторая единица измерения, но так как это не возможно, а мне было достаточно только коэффициента от нее, то выгрузил этот коэффициент как свойство. Он будет периодически меняться, поэтому обновление свойств для меня актуально. В чем может быть причина?
Скорее всего из за версионности товаров. Если товар в 1С не менялся, то на сайте он не обновится. Т.е. если вы изменили свойство товара, не пересохраняя сам товар - товар не обновится. Это актуально для УТ 10.3, т.к. свойства там хранятся в регистре сведений. Вам нужно или сделать принудительное обновление данных(кнопка такая), или настроить версионность, чтобы у товаров всегда выгружалась новая версия(в настройках обмена есть кнопка)
Николай Мунхажеев, можно написать скрипт, к-й регулярно будет чистить каталог от товаров с пустыми остатками и пустых разделов. Это самый простой вариант, потому что при обмене сейчас деактивация не происходит.
Юлия Бедросова написал: Николай Мунхажеев , можно написать скрипт, к-й регулярно будет чистить каталог от товаров с пустыми остатками и пустых разделов. Это самый простой вариант, потому что при обмене сейчас деактивация не происходит.
Так не получится. Мы не ведем складские остатки. Все под заказ.
Николай Мунхажеев, тогда вам нужно допиливать обмен по-другому - на стороне 1С подпилить в обмене, чтобы для товаров, у которых стоит пометка удаления, передавалось на сайт свойство дополнительное - пометка удаления. На сайте, соответственно, читать ее и удалять (деактивировать) товар. И только после обмена удалять в 1С помеченные товары. Делали так одному из клиентов. Другого варианта в вашем случае нет.
Мы такую штуку сумели настроить (выгрузка с пометкой удаления). Товары удаляются, но остаются пустые разделы, которые продолжают выводится на сайте. Как быть с ними? Есть ли аналогичная пометка удаления для разделов, чтобы можно было их автоматически удалять при выгрузке? Или есть какие-то другие решения?
Добрый день. Я так и не понял, вот эти опции в настройках магазина они вообще не будут больше работать? Или это ошибка, которую точно исправят в ближайших обновлениях?
Александр Денисюк написал: 1. Та настройка на деактивацию товаров не работает. Напишите в техподдержку, чтобы зафиксировали баг.
Мой клиент сказал, что эта опция с прошлого года не работала и до сих пор не работает на удаление товаров, они просто деактивируются когда задано "Удалить" , надо либо убирать пункт "Удалить", либо сделать, чтобы он работал как положено, это всех сбивает с толку.
Евгений написал: До сих пор не работает, коммерческий проект, где работает дай бог половина, совсем ударились?
Да тут вообще все сервисы уже мертвые, никто не отвечает на проблемы, всем КЛАСТЬ на нас в верхнем регистре.
Проблему решил, повешал на крон скрипт, который каждый день чистит старше месяца товары, иначе их уже в продаже 100% нет и они БД забивают, у клиента за 200 000 товаров накопилось неактивных за год. А также перебирает разделы, где нет ни одного активного товара скрывает этот раздел, иначе много пустых разделов на сайте будет.
В модуле обмена 6.0.3.1 появился чекбокс "Деактивировать товары, не попавшие в выгрузку". Вот на нем и нужно ставить галку. Бодались с техподдержкой почти две недели пока не дошли до решения.
Татьяна Николаевна написал: В модуле обмена 6.0.3.1 появился чекбокс "Деактивировать товары, не попавшие в выгрузку". Вот на нем и нужно ставить галку. Бодались с техподдержкой почти две недели пока не дошли до решения.
Ну есть такая. 6.0.3.3 - не работает. Когда будет хоть что-нибудь работать? Стоит эта галка в модуле, делаю полный обмен, товары, которые проданы и списаны в 1с продолжают выгружаться на сайт...Как работать?
Подскажите, решилась ли как-то эта проблема с выгрузкой? Нужно удалять или хотя бы деактивировать товары, которых не было в полной выгрузке. Все описанные выше галки стоят. Или подскажите, как посредством 1С или битрикса деактивировать все товары разом в каталоге?
Алексей Огурцов написал: А у меня не удаляются товары, которых нет в файле импорта через xml, что только не пробовал - результат нулевой
вот решение но на свой страх и риск. у меня инфоблок использовался в качестве "буфера" а не сразу "боевого" инфоблока, основная логика импорта была в обработчике после выгрузки который переносил данные из буфера в боевой с нужной структурой. т.к. времени на "научный тык" не особо есть - решил по другому, "в лоб". дальше рассказываю конкретно про свой случай ------------ суть косяка "почему не удаляются отсутствующие товары" в том что на шаге "чистки" инфоблока (7 или 8 ) происходит ранний выход из метода класса, который ответственный за это. деактивация (или удаление) происходит в методе CIBlockCMLImport::DeactivateElement , сам класс лежит в /bitrix/modules/iblock/classes/general/cml2.php ранний выход происходит потому что дойдя до первого же return-условия оно оказывается "true"
расследовать же почему $this->next_step["bUpdateOnly"] установился в тру я не хотел. получается мне нужно отредактировать класс, однако следуя гайдам - править движок нехорошо.
решение заключается в том чтобы расширить класс системы своим классом, на время поменять этот параметр в false (чтобы не выходить из метода раньше чем следует), выполнить метод, потом вернуть все как было. сам объект класса инстанцируется в 5 местах в component.php в bitrix:catalog.import.1c. - а менять компоненты битрикса тоже нехорошо - значит надо его откопировать.
порядок действий такой:
1. создать свой класс который расширяет \CIBlockCMLImport. где и как он будет лежать физически - неважно. главное - файл должен быть подключен заранее до того как начнет работу компонент, в котором будут создаваться объекты этого класса (напрямую require в начале component.php или заранее через init.php > vendor/autoload.php как у нормальных людей) пусть будет класс такой \MyProjectNameSpace\MySuperImport
2. скопировать bitrix:catalog.import.1c в свое пространство имен (например myproject:catalog.import.1c)
2.1. заменить все (на всякий случай) конструкторы CIBlockCMLImport на конструкторы своего класса \MyProjectNameSpace\MySuperImport в своем cкопированном компоненте myproject:catalog.import.1c (component.php) конструктор выглядит примерно так
Код
$obCatalog = new CIBlockCMLImport;
и станет
Код
$obCatalog = new \MyProjectNameSpace\MySuperImport;
3. создать файл куда будет стучаться 1с (или вы, руками, через отладочный скрипт bx_1c_import.php ). кто то скажет - такой файл уже есть, это же /bitrix/admin/1c_exchange.php. по факту так - однако это опять часть движка а его править "не айс". поэтому можно его тоже откопировать, прям тут же рядом, и обозвать например /bitrix/admin/1c_exchange_my_superfix.php.
3.1 по факту в файле есть всего лишь подключение другого скрипта, т.е. "делегирование" всей логики другому файлу. однако для того чтобы не делать такую же чушь - надо скопировать в файл контент "делегированного" файла "/bitrix/modules/sale/admin/1c_exchange.php", и просто заменить вызов в ветке $type=='catalog' вместо bitrix:catalog.import.1c на свой myproject:catalog.import.1c. примерно на строке 66
шел 2018 год, скоро баги в битриксе будут неисправляемые десятилетиями. но зато форум стал оранжевым, на это нашлись и рабочие руки и деньги, это типа троллинг клиентов, типа огненный дизайн, глядите как у вас подгорает, за ваши же деньги ))