Вариант 1.
$type = array(
"resp_name" => "<здесь имя поля, например 'Ответственный'>"
);
echo $line[$type['resp_name']]['Бонусный счет']['id'];
Возвращает пустоту.
Судя по всему перед выполнением кода КБ подменяет в куске кода Имя поля на его табличное имя fXXXX, а так как у меня в коде имя явно не указано, подмена не происходит.
Вариант 2.
$type = array(
"resp_name" => "<здесь имя поля в БАЗЕ ДАННЫХ, например 'f9856'>"
);
echo $line[$type['resp_name']]['Бонусный счет']['id'];
Возвращает ошибку "Cannot use string offset as an array".
Вопрос знатокам - что я делаю не так?
Вот код вычисления, где возникла ошибка
$fields = array
(
"Отправитель" => "f5411",
"Получатель" => "f5421",
"Дата" => "f5431",
"Сумма" => "f5531",
"Основание" => "f5441",
"Заказ" => "f5501",
"Запчасть" => "f5511"
);
$bonus_fields = array(
"find" => array(
"transaction_name" => "f5931",
"resp_name" => "f5881",
"sum_name" => "f5241",
"bonus_for" => "поиск"
),
"buy" => array(
"transaction_name" => "f5871",
"resp_name" => "f5891",
"sum_name" => "f5251",
"bonus_for" => "покупку"
),
"pack" => array(
"transaction_name" => "f5941",
"resp_name" => "f5901",
"sum_name" => "f5261",
"bonus_for" => "упаковку"
),
"send" => array(
"transaction_name" => "f5951",
"resp_name" => "f5911",
"sum_name" => "f5271",
"bonus_for" => "отправку"
)
);
foreach ($bonus_fields as $type)
{
$tran = intval($line[$type['transaction_name']]['ID']);
$resp_exists = intval($line[$type['resp_name']]['ID']) != 0;
if (!$resp_exists && $tran != 0)
{
data_delete(451, EVENTS_ENABLE, "id={$tran}");
$line[$type['transaction_name']] = null;
}
if ($resp_exists)
{
if ($tran == 0)
{
//Исправить на динамически выбираемый
$data[$fields['Отправитель']] = $line['Заказ']['К какой компании относится заказ']['Счет']['ID'];
$data[$fields['Получатель']] = $line[$type['resp_name']]['Бонусный счет']['ID'];
$data[$fields['Дата']] = date("Y-m-d h:i:s");
$data[$fields['Сумма']] = $line[$type['sum_name']];
$data[$fields['Основание']] = "Бонус за {$type['bonus_for']} {$line['Название']['Название']}";
$data[$fields['Заказ']] = $line['Заказ']['ID'];
$data[$fields['Запчасть']] = $line['ID'];
$line[$type['transaction_name']] = data_insert(451, EVENTS_ENABLE, $data);
}
else
{
$data[$fields['Получатель']] = $line[$type['resp_name']]['Бонусный счет']['ID'];
$data[$fields['Сумма']] = $line[$type['sum_name']];
data_update(451, EVENTS_ENABLE, $data, "id={$tran}");
}
}
}
Сообщение отредактировал sxquer: 13 Июнь 2014 - 06:57