Перегоняем телефоны пользователей из заказов в профили

Углубленное изучение Битрикс
  • Перегоняем телефоны пользователей из заказов в профили

    Антон Долганин 4 Марта 2015 14:58 1663
    Простая задачка — перегнать телефоны из заказов в профили пользователей. Например, чтобы потом сделать рассылку СМС. Скрипт ниже.

    Скрипт тоже достаточно простой. Есть несколько «но»:
    • Не рассчитан на большую базу заказов, может упасть на оной, пошаговку делаете сами (например, с помощью моего старого скрипта).
    • Пишется в поле PERSONAL_PHONE (личный телефон), хотя это можете исправить.
    • Берет только один телефон (если их, например, несколько, разделенных запятой).
    В переменной $propsPhone не забудьте прописать ID свойств, где может лежать телефон. Как правило, это и для юр.лица и для физ.лица. Скрипт не предусматривает, что св-в одного типа плательщика может быть несколько.


    Собственно скрипт:
    if (CModule::IncludeModule('sale')) {
       //указываем ID св-в, где может содержаться телефон
       $propsPhone = array(3,14);
       $rsProps = CSaleOrderPropsValue::GetList(array(), array('ORDER_PROPS_ID' => $propsPhone));
       while ($arProps = $rsProps->fetch()) {
          if (strlen(trim($arProps['VALUE']))) {
             //если телефонов несколько, разделены ";", берем первый
             if (strpos($arProps['VALUE'], ';')) {
                $phone = trim(array_shift(explode(';', $arProps['VALUE'])));
             //если телефонов несколько, разделены ",", берем первый
             } elseif (strpos($arProps['VALUE'], ',')) {
                $phone = trim(array_shift(explode(',', $arProps['VALUE'])));
             //в поле просто телефон
             } else {
                $phone = trim($arProps['VALUE']);
             }
             $order = CSaleOrder::getByID($arProps['ORDER_ID']);
             $USER->update($order['USER_ID'], array('PERSONAL_PHONE' => $phone));
          }
       }
    }


    gallery_ccdc5456.jpg