SQL запросы для движка 1С-Битрикс

В данном разделе оставляются заявки для создания SQL запросов для обновления тех или иных полей при импорте и экспорте.
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

13 ноя 2012 16:56

Попробуйте использовать эти SQL запросы:

Код: Выделить всё

UPDATE b_iblock_element_property, b_iblock_element, etrade_products, etrade_contractor SET b_iblock_element_property.value=etrade_contractor.contractor_name WHERE etrade_products.supply_id=etrade_contractor.contractor_id AND b_iblock_element.id=b_iblock_element_property.iblock_element_id AND b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element_property.iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name='Поставщик' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID);;;
INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value) SELECT (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'Поставщик' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name) as property_id, b_iblock_element.id, etrade_contractor.contractor_name FROM b_iblock_element, etrade_products, etrade_contractor WHERE etrade_products.supply_id=etrade_contractor.contractor_id AND b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element.id NOT IN (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'Поставщик' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name));;;
С уважением, поддержка ElbuzGroup.
Денис
Сообщения: 182
Зарегистрирован: 19 авг 2012 12:40

26 ноя 2012 06:37

Здравствуйте, не подскажите SQL запрос для битрикса для отображения keywords и description у товара и категорий.
Сгенирировал все в PLI, но почему-то не хочет заходить в битрикс
Аватара пользователя
support
Сообщения: 10553
Зарегистрирован: 09 ноя 2008 21:37

27 ноя 2012 09:22

В Битриксе разве есть поля в БД сайта где бы хранилась эта информация?
C уважением, поддержка ElbuzGroup.
Документация E-Trade Jumper
Денис
Сообщения: 182
Зарегистрирован: 19 авг 2012 12:40

28 ноя 2012 10:02

у меня есть поля:
Keywords - Таблица b_iblock_element_property , поле где храниться текст ключевых слов VALUE, IBLOCK_PROPERTY_ID "64" это поле показывает, что это Keywords, цифра 64 как раз как ID поля Keywords http://pix.am/GncE/
Для Description все те же поля, но только IBLOCK_PROPERTY_ID "65"

Так же есть поле IBLOCK_ELEMENT_ID, в котором есть ID товар присвоенный самим битриксом.
Аватара пользователя
support
Сообщения: 10553
Зарегистрирован: 09 ноя 2008 21:37

28 ноя 2012 10:21

Таблица b_iblock_element_property - это список характеристик для товаров.
Из этой темы:
TechAdmin писал(а):В текущей версии ПЛИ уже доступно это поле ("Себестоимость") для экспорта данных, поэтому вы можете попробовать использовать эти SQL запросы:

Код: Выделить всё

UPDATE b_iblock_element_property, b_iblock_element, etrade_products SET b_iblock_element_property.value=etrade_products.price_cost WHERE b_iblock_element.id=b_iblock_element_property.iblock_element_id AND b_iblock_element_property.iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.code='zakup_price') AND b_iblock_element.xml_id=etrade_products.tov_guid;;;
INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value) SELECT (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.iblock_id=5 AND b_iblock_property.code = 'zakup_price' GROUP BY b_iblock_property.code) as property_id, b_iblock_element.id,  etrade_products.price_cost FROM b_iblock_element, etrade_products WHERE b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element.iblock_id=5 AND b_iblock_element.id NOT IN (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.iblock_id=5 AND b_iblock_property.code = 'zakup_price' GROUP BY b_iblock_property.code));;;


Вам нужно прописать не себестоимость (price_cost), а head_title, head_desc, head_keywords
согласно списка доступных полей для таблицы etrade_products

вот как пример для поля обновления поля Keywords

Код: Выделить всё

UPDATE b_iblock_element_property, b_iblock_element, etrade_products SET b_iblock_element_property.value=etrade_products.head_title WHERE b_iblock_element.id=b_iblock_element_property.iblock_element_id AND b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element_property.iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name='Keywords' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID);;;

INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value) SELECT (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'Keywords' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name) as property_id, b_iblock_element.id, etrade_products.head_title FROM b_iblock_element, etrade_products WHERE b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element.id NOT IN (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'Keywords' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name));;;
C уважением, поддержка ElbuzGroup.
Документация E-Trade Jumper
Денис
Сообщения: 182
Зарегистрирован: 19 авг 2012 12:40

28 ноя 2012 12:36

Что-то не чего не зашло в поле(((
А нельзя сделать доп. поле в настройках при выгрузке из ПЛИ, как с полем "Производитель". http://pix.am/roTb/ Там мы просто указывает название поля, а он на автомате туда ложит значения?
Аватара пользователя
TechAdmin
Администратор
Сообщения: 4286
Зарегистрирован: 27 авг 2008 14:30

28 ноя 2012 12:50

Проверьте название свойства товара, оно называется 'Keywords'?
С уважением, поддержка ElbuzGroup.
Денис
Сообщения: 182
Зарегистрирован: 19 авг 2012 12:40

29 ноя 2012 09:17

TechAdmin писал(а):Проверьте название свойства товара, оно называется 'Keywords'?


Заработало, неправильно было написано свойство, все подправил и все появилось.
Еще, такой вопрос. есть два места где мы можем настроит SEO в верхней вкладке http://pix.am/GTeb/ и при экспорте, тоже есть такая же вкладка http://pix.am/CjH8/ . Есть ли какое-то различение между ними?
Аватара пользователя
support
Сообщения: 10553
Зарегистрирован: 09 ноя 2008 21:37

29 ноя 2012 11:11

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

Данный вопрос не имеет отношения к созданной теме. Тема закрыта.
C уважением, поддержка ElbuzGroup.
Документация E-Trade Jumper
Денис
Сообщения: 182
Зарегистрирован: 19 авг 2012 12:40

08 янв 2013 13:12

e-special писал(а):вот как пример для поля обновления поля Keywords

У вас было чуть не правильно написано. Вот правильные SQL запросы для:
Keywords

Код: Выделить всё

UPDATE b_iblock_element_property, b_iblock_element, etrade_products SET b_iblock_element_property.value=etrade_products.head_keywords WHERE b_iblock_element.id=b_iblock_element_property.iblock_element_id AND b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element_property.iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name='Keywords' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID);;;

INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value) SELECT (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'Keywords' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name) as property_id, b_iblock_element.id, etrade_products.head_keywords FROM b_iblock_element, etrade_products WHERE b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element.id NOT IN (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'Keywords' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name));;;


Description:

Код: Выделить всё

UPDATE b_iblock_element_property, b_iblock_element, etrade_products SET b_iblock_element_property.value=etrade_products.head_desc WHERE b_iblock_element.id=b_iblock_element_property.iblock_element_id AND b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element_property.iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name='description' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID);;;

INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value) SELECT (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'description' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name) as property_id, b_iblock_element.id, etrade_products.head_desc FROM b_iblock_element, etrade_products WHERE b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element.id NOT IN (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'description' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name));;;


Title:

Код: Выделить всё

UPDATE b_iblock_element_property, b_iblock_element, etrade_products SET b_iblock_element_property.value=etrade_products.head_title WHERE b_iblock_element.id=b_iblock_element_property.iblock_element_id AND b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element_property.iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name='title' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID);;;

INSERT INTO b_iblock_element_property (iblock_property_id, iblock_element_id, value) SELECT (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'title' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name) as property_id, b_iblock_element.id, etrade_products.head_title FROM b_iblock_element, etrade_products WHERE b_iblock_element.xml_id=etrade_products.tov_guid AND b_iblock_element.id NOT IN (SELECT iblock_element_id FROM b_iblock_element_property WHERE iblock_property_id IN (SELECT b_iblock_property.id FROM b_iblock_property WHERE b_iblock_property.active = 'Y' AND b_iblock_property.name = 'title' AND b_iblock_property.IBLOCK_ID=b_iblock_element.IBLOCK_ID GROUP BY b_iblock_property.name));;;
Ответить

Вернуться в «SQL запросы для E-Trade PriceList Importer»