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

В данном разделе оставляются заявки для создания SQL запросов для обновления тех или иных полей при импорте и экспорте.
Аватара пользователя
support
Сообщения: 10553
Зарегистрирован: 09 ноя 2008 21:37

27 мар 2017 16:10

На видео не видно, что у Вас есть поле поставщик в магазине, чтобы он выгружался.
Нужно смотреть структуру БД чтобы составить запрос для валюты.
C уважением, поддержка ElbuzGroup.
Документация E-Trade Jumper
Voyager
Сообщения: 271
Зарегистрирован: 05 июл 2016 21:06

03 апр 2017 15:34

Да, пока решается предыдущий вопрос. Назрело еще несколько. Использую скрипты, которые здесь были представлены:

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

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_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_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=2 AND b_iblock_property.name = 'Поставщик' 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.iblock_id=2 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=2 AND b_iblock_property.name = 'Поставщик' GROUP BY b_iblock_property.name));;;

UPDATE b_iblock_element_property, b_iblock_element, etrade_products
SET b_iblock_element_property.value=etrade_products.nalich_c
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.code='PLI_NALICH_C' AND
         b_iblock_property.IBLOCK_ID=2);;;


Поле поставщик обновляется, все ок, появляется значение. Как я понял, скрипт заменяет ID на наименование, которое заведено в справочнике поставщиков. И если рассматривать всю цепочку автоматизации обработки заказа, то для меня удобней было бы оперировать с ID. Как я понял, представленными скриптами не выгрузить только этот ID поставщика, при работе процедуры выгрузки во временной таблице ID как раз у товара появляется. Можете мне помочь с этим?
И по поводу наличия. Завел поле, как было в случае с полем "Поставщик", значения не наследуются из базы СТУС. Помогите разобраться.
Ответить

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