Страница 1 из 1
Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 03:15
Алексей Алейников
Добрый день.
Через PHP получил id записи глобального списка:
Код: Выделить всё
$status = [334];
$info_query = db_query("select id from app_entity_27 where field_334=" . $status );
$info = db_fetch_array($info_query);
$id = $info['id'];
$output_value = $id;
А как получить само значение глобального списка?
В документации про глобальные списки совсем ничего не нашёл. В ВК нашёл про "entity_item_value(13,17) : 13 - тип поля сущность, 17 - id поля, значение которого нужно использовать в формуле", но не понял, как использовать.
Заранее спасибо за ответ.
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 07:49
Fait
Вот так:
Код: Выделить всё
$status = [334];
$info_query = db_query("select * from app_global_lists_choices where id=".$status );
$info = db_fetch_array($info_query);
$name = $info['name']; // Наименование
$value = $info['value']; // Значение списка
$output_value = $name;
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 13:24
Алексей Алейников
Для таких, как я - оставлю ещё подсказку:
$output_value = $value;
Эта строка покажет имя записи глобального списка.
А если надо значение, то эту строку надо заменить на
Так она покажет значение списка
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 13:40
Алексей Алейников
Спасибо.
Ещё ответьте, пожалуйста, на вопрос:
Fait писал(а): 30 апр 2024, 07:49
$value
не является числовым значением?
Почему-то дальнейшие арифметические действия не работают с этими значениями из глобального списка.
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 16:13
Fait
Алексей Алейников писал(а): 30 апр 2024, 13:40
Спасибо.
Ещё ответьте, пожалуйста, на вопрос:
Fait писал(а): 30 апр 2024, 07:49
$value
не является числовым значением?
Почему-то дальнейшие арифметические действия не работают с этими значениями из глобального списка.
Это строковое значение.
Можете преобразовать его в число с помощью функции intval($value) или floatval($value)
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 17:17
Алексей Алейников
Fait писал(а): 30 апр 2024, 16:13
Можете преобразовать его в число с помощью функции intval($value) или floatval($value)
Попробовал в разных вариантах. Наиболее подходящим и вроде бы с правильным синтаксисом, но почему-то всё равно не хочет использовать это поле как числовое....
Код: Выделить всё
$statusvalue = [334];
$info_query = db_query("select * from app_global_lists_choices where id=".$statusvalue );
$info = db_fetch_array($info_query);
$name = $info['name']; // Наименование
$value = $info['value']; // Значение списка
$float_value = floatval($value);
if($name<>'Без НДС')
{
$output_value = [245]* $float_value /100;
}
else
{
$output_value = 0;
}
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 17:43
Fait
Алексей Алейников писал(а): 30 апр 2024, 17:17
Fait писал(а): 30 апр 2024, 16:13
Можете преобразовать его в число с помощью функции intval($value) или floatval($value)
Попробовал в разных вариантах. Наиболее подходящим и вроде бы с правильным синтаксисом, но почему-то всё равно не хочет использовать это поле как числовое....
Код: Выделить всё
$statusvalue = [334];
$info_query = db_query("select * from app_global_lists_choices where id=".$statusvalue );
$info = db_fetch_array($info_query);
$name = $info['name']; // Наименование
$value = $info['value']; // Значение списка
$float_value = floatval($value);
if($name<>'Без НДС')
{
$output_value = [245]* $float_value /100;
}
else
{
$output_value = 0;
}
Вынесите поле [245] в отдельную переменную, и также пропустите её потом через floatval().
После чего используйте в формулах.
Ну и на будущее, не используйте конструкцию [xxx] напрямую в формулах, работает очень криво.
Сначала объявляете переменную, и эту переменную уже используете, где нужно.

Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 18:13
Алексей Алейников
Fait писал(а): 30 апр 2024, 17:43
Вынесите поле [245] в отдельную переменную, и также пропустите её потом через floatval().
После чего используйте в формулах.
Не хочет, и всё тут....
Результат нужный выдаёт, но это поле не хочет участвовать в дальнейших расчётах....
Вот текущий код:
Код: Выделить всё
$statusvalue = [334]; // Определяем id глобального списка
$ndsbase = [245]; // Определяем базу для расчёта НДС
$info_query = db_query("select * from app_global_lists_choices where id=".$statusvalue ); // Выясняем, какому глобальному списку принадлежит это id
$info = db_fetch_array($info_query); // Собираем все данные этого глобального списка
$name = $info['name']; // Получаем имя опции этого глобального списка
$value = $info['value']; // Получаем значение этого глобального списка
$float_value = floatval($value);
$float_ndsbase = floatval($ndsbase);
if($name<>'Без НДС')
{
$output_value = $float_ndsbase * $float_value /100;
}
else
{
$output_value = 0;
}
Re: Как получить значения из глобальных списков?
Добавлено: 30 апр 2024, 18:49
Fait
Чтобы значение участвовало в расчётах, нужно, чтобы поле было нединамичным. Тогда результат будет сохраняться в базе.