Как получить значения из глобальных списков?

Все вопросы/проблемы по установке и использовании.
Ответить
Алексей Алейников
Сообщения: 22
Зарегистрирован: 13 июн 2018, 20:15
Имя: Алексей Алейников
Откуда: Москва
Организация: 9-33
Контактная информация:

Как получить значения из глобальных списков?

Сообщение Алексей Алейников »

Добрый день.
Через 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 поля, значение которого нужно использовать в формуле", но не понял, как использовать.

Заранее спасибо за ответ.
9-33.ru
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить значения из глобальных списков?

Сообщение 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;
Алексей Алейников
Сообщения: 22
Зарегистрирован: 13 июн 2018, 20:15
Имя: Алексей Алейников
Откуда: Москва
Организация: 9-33
Контактная информация:

Re: Как получить значения из глобальных списков?

Сообщение Алексей Алейников »

Для таких, как я - оставлю ещё подсказку:
$output_value = $value;

Эта строка покажет имя записи глобального списка.

А если надо значение, то эту строку надо заменить на

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

$output_value = $value; 
Так она покажет значение списка
Вложения
Снимок экрана 2024-04-30 132207.png
9-33.ru
Алексей Алейников
Сообщения: 22
Зарегистрирован: 13 июн 2018, 20:15
Имя: Алексей Алейников
Откуда: Москва
Организация: 9-33
Контактная информация:

Re: Как получить значения из глобальных списков?

Сообщение Алексей Алейников »

Спасибо.
Ещё ответьте, пожалуйста, на вопрос:
Fait писал(а): 30 апр 2024, 07:49 $value
не является числовым значением?
Почему-то дальнейшие арифметические действия не работают с этими значениями из глобального списка.
9-33.ru
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить значения из глобальных списков?

Сообщение Fait »

Алексей Алейников писал(а): 30 апр 2024, 13:40 Спасибо.
Ещё ответьте, пожалуйста, на вопрос:
Fait писал(а): 30 апр 2024, 07:49 $value
не является числовым значением?
Почему-то дальнейшие арифметические действия не работают с этими значениями из глобального списка.
Это строковое значение.
Можете преобразовать его в число с помощью функции intval($value) или floatval($value)
Алексей Алейников
Сообщения: 22
Зарегистрирован: 13 июн 2018, 20:15
Имя: Алексей Алейников
Откуда: Москва
Организация: 9-33
Контактная информация:

Re: Как получить значения из глобальных списков?

Сообщение Алексей Алейников »

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;
}
9-33.ru
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить значения из глобальных списков?

Сообщение 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] напрямую в формулах, работает очень криво.
Сначала объявляете переменную, и эту переменную уже используете, где нужно. 😉
Алексей Алейников
Сообщения: 22
Зарегистрирован: 13 июн 2018, 20:15
Имя: Алексей Алейников
Откуда: Москва
Организация: 9-33
Контактная информация:

Re: Как получить значения из глобальных списков?

Сообщение Алексей Алейников »

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;
}
9-33.ru
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 786
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Как получить значения из глобальных списков?

Сообщение Fait »

Чтобы значение участвовало в расчётах, нужно, чтобы поле было нединамичным. Тогда результат будет сохраняться в базе.
Ответить