Страница 1 из 1

Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 20:08
alcompstudio
Добрый день!

Есть поле с типом Выпадающий список со множественным выбором. Изначально мне нужно экспортировать его в Эксель, но чтобы в экспорте вместо разделителя значений запятой - была вертикальная черта "|".
Я так полагаю, при экспорте не получится сделать автозамену в целевом поле (чтобы "," поменялась на "|"), для решения планирую использовать поле MySQL формула, в которое вытащить отдельные значения из множественного списка и поменять разделитель.
Подскажите, как можно вытянуть отдельные значения множественного списка в поле MySQL формула и заменить их разделитель? Т.е. чтобы было вместо "Значение1, Значение 2" - "Значение1|Значение 2" в поле MySQL формула. Какое выражение нужно построить?

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 20:27
alcompstudio
замену значений в поле MySQL формула можно сделать через функцию REPLACE. Но, когда ставлю формулу REPLACE([982], ',','|') , где 982 - это ID поля со множественными значениями, то в результате выводится "1873|1888" - т.е. не названия/заголовки этих значений, а их ID. Как вытянуть именно названия значений?

Аналогично и для поля с типом сущность, но с выбором множества значений из сущности.

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 21:30
alcompstudio
... и еще момент:

в самих значениях могут встречаться запятые, (например, Значение 1 = "текст, текст", Значение 2 = "текст, текст, текст") и нужно, естественно чтобы запятые "внутри" значений не заменялись на "|".

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 21:46
support
Откройте файл includes\classes\model\fields_choices.php
И найдите строку

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

$values = explode(',',$values);
Замените ее на

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

$values = explode('|',$values);
Если используете глобальный список, то такое ще изменение сделайте в файле includes\classes\model\global_lists.php

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 21:55
alcompstudio
А, это в коде нужно, а я думал можно в MySQL формуле как-то сделать, создать выражение, обойтись без "ломания" основного кода))

Спасибо, попробую!

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 22:05
support
В будущем добавлю настройку, чтоб этот символ можно было настроить.

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 06 окт 2019, 22:42
alcompstudio
Указанный выше прием не работает...(( В поле со множественным выбором с типом Сущность ничего не поменялось, а в поле с глобальным списком теперь значения вовсе не отображаются ни в списке, ни на странице записи. Наверное как-то по другому нужно... Если будет время, глянете, как еще можно реализовать, ну или может через MySQL формулу можно как-то построить (костылем)?
support писал(а): 06 окт 2019, 22:05 В будущем добавлю настройку, чтоб этот символ можно было настроить.
Я тоже хотел предложить сделать что-то типа такого: http://prntscr.com/pfnt8q

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 07 окт 2019, 06:53
support
Попробуйте значение сохранить в статический текст по шаблону, а затем с помощью mysql формулы REPLACE преобразовать это значение.

Re: Как вытянуть отдельные значения из выпадающего списка со множественным выбором?

Добавлено: 07 окт 2019, 12:14
alcompstudio
Да, так получается, но это тогда не выходит:
alcompstudio писал(а): 06 окт 2019, 21:30 ... и еще момент:

в самих значениях могут встречаться запятые, (например, Значение 1 = "текст, текст", Значение 2 = "текст, текст, текст") и нужно, естественно чтобы запятые "внутри" значений не заменялись на "|".
меняются все запятые в полученном результате...
Ок, спасибо за подсказки, буду думать что-то еще.