Коллеги, добрый день.
Имею таблицу заказов, в которую подтягиваются данные из 1С.
При помощи метода CSaleOrderPropsValue::GetOrderProps вытаскиваю номер юридического лица, методом CIBlockElement::GetList вытаскиваю его имя.
Задача заключается в том, чтобы в таблице заказов в поле Ф.И.О выводилось название организации Юр. лица.
Вот код, который я использую:
Код |
---|
CModule::includeModule("sale");
CModule::IncludeModule("iblock");
$IBLOCK_ID = intval(id нужного инфоблока);
$YUR_ID = 0;
$YUR_NAME = "";
$arYur = Array();
/* Вывод ID юр. лица из заказа */
$db_props = CSaleOrderPropsValue::GetOrderProps($_REQUEST["OID"]);
while ($arProps = $db_props->Fetch())
{
if($arProps["NAME"] == "Название искомого поля из 1С" && ($arProps["TYPE"]=="TEXT" || $arProps["TYPE"]=="TEXTAREA"))
{
$YUR_ID = $arProps["VALUE"];
break;
}
}
/* свойства элементов блока юр. лиц */
$arSelect = Array("ID", "NAME");
$arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
foreach($arFields as $key=>$value)
{
if($key == "ID")
$key_inner = $value;
if($key == "NAME")
$value_inner = $value;
$arYur[$key_inner] = $value_inner;
}
}
foreach ($arYur as $key => $value)
{
if($key == $YUR_ID)
{
$YUR_NAME = $value;
break;
}
} |
Проблему решил:
добавил переменную $FIO_ID=0 и в первом переборе $arFields выловил её ID
Код |
---|
if($arProps["NAME"] == "Ф.И.О." && ($arProps["TYPE"]=="TEXT" || $arProps["TYPE"]=="TEXTAREA"))
{
$FIO_ID = $arProps["ID"];
}
|
После этого при помощи апдейта обновил данные:
Код |
---|
if(!CSaleOrderPropsValue::Update($FIO_ID, array("VALUE"=>$YUR_NAME)))
echo "Не удалось обновить данные заказа";
else
echo "Данные успешно обновлены";
|