#1
Отправлено 01 Апрель 2017 - 18:20
Пример, сейчас в поле Описание таблицы Счета объединяются значения полей названий товаров, которые указаны в счете (если товаров несколько, то поле равно Товар 1, Товар 2, Товар 3...).
Нужно чтобы значение поля принимало значения Товар 1 - Цена 1; Товар 2 - Цена 2; Товар 3 - Цена 3.
#2
Отправлено 04 Апрель 2017 - 23:01
$thatTxt = $row['f1440']; } if (!in_array($thatTxt, $txt) && $thatTxt) { $txt[] = $thatTxt; } } $line['Описание'] = implode(", ", $txt);
... вот в этой части.
В переменную $thatTxt кроме $row['f1440'] (это поле Описание из подтаблицы Позиции счета) добавить нужные поля из этой же подтаблицы.
В последней строке implode(", " запятая - это разделитель, замените на нужное.
Сообщение отредактировал Tony999: 04 Апрель 2017 - 23:14
https://info.crm-master.info
#3
Отправлено 05 Апрель 2017 - 08:56
Tony999 (04 Апрель 2017 - 23:01) писал:
В последней строке implode(", " запятая - это разделитель, замените на нужное.
Сделал новое поле Описание 2, чтобы протестировать. Добавил туда код с самого начала вычисления Сохранение счета, изменив переменные. Получилось следующее:
$result1 = data_select(74, 'f807=', $ID, ' and status=0'); $txt1 = array(); while ($row = sql_fetch_assoc($result1)) { $thatTxt1 = ""; // если есть прайс, название товара if ($row['f2331']) { $numen1 = data_select_array(91, "status=0 AND id=", $row['f2331']); //2331 - Прайс-лист из таблицы Позиции счета $thatTxt1 = $numen1['f1158'] && " - " && $numen1['f1169']; //1158 - Наименование товара, 1169 - Цена товара } // нет прайса - описание elseif ($row['f1440']) { $thatTxt1 = $row['f1440']; } if (!in_array($thatTxt1, $txt1) && $thatTxt1) { $txt1[] = $thatTxt1; } } $line['Описание 2'] = implode("; ", $txt1);
Строку $thatTxt1 = $numen1['f1158'] && " - " && $numen1['f1169']; вставил не туда, куда указывали, так как тут есть проверка на заполненность поля 1158 (Прайс-лист из таблицы Позиции счета). В Вашем варианте поле Описание 2 заполнялось как раньше, только названием товара, так как поле прайс-лист было заполнено.
Думаю я неправильно указал строку
$thatTxt1 = $numen1['f1158'] && " - " && $numen1['f1169'];так как сейчас в поле Описание 2 выводится единица.
#4
Отправлено 05 Апрель 2017 - 11:03
$thatTxt1 = $numen1['f1158']." - ".$numen1['f1169'];
https://info.crm-master.info
#5
Отправлено 07 Апрель 2017 - 11:34
#6
Отправлено 21 Март 2018 - 20:09
У таблицы 111 есть подтаблица Прайс-лист. К каждой записи таблицы 111 прикреплено несколько строк из Прайс-листа.
В поле таблицы 111 нужно вывести объединенные данные из подтаблицы, в формате Наименование 1 - Группа 1; Наименование 2 - Группа 2; и т.д.
Изменил вычисление выше, получилось следующее:
$result2 = data_select(91, 'f7381=', $ID, ' and status=0'); // таблица Прайс-лист 91, поле 7381 является связью с текущей таблицей 111 $txt2 = array(); while ($row = sql_fetch_assoc($result2)) { $thatTxt1 = ""; $numen1 = data_select_array(91, 'f7381=', $ID, ' and status=0'); $thatTxt1 = $numen1['f6811']." - ".$numen1['f6501']; // "Сложить" через тире поля Наименование 6811 и Группа 6501 } $txt2[] = $thatTxt1; $line['9011'] = implode("; ", $txt2); // Вывести данные "сложения" через разделитель в поле 9011
Код, который у меня получился выводит значение только для первой строки подтаблицы, Наименование 1 - Цена 1. Дальше почему-то не идет. Пожалуйста. помогите разобраться.
Сообщение отредактировал Александр Jet: 21 Март 2018 - 20:13
#7
Отправлено 22 Март 2018 - 09:08
Александр Jet (21 Март 2018 - 20:09) писал:
У таблицы 111 есть подтаблица Прайс-лист. К каждой записи таблицы 111 прикреплено несколько строк из Прайс-листа.
В поле таблицы 111 нужно вывести объединенные данные из подтаблицы, в формате Наименование 1 - Группа 1; Наименование 2 - Группа 2; и т.д.
Изменил вычисление выше, получилось следующее:
$result2 = data_select(91, 'f7381=', $ID, ' and status=0'); // таблица Прайс-лист 91, поле 7381 является связью с текущей таблицей 111 $txt2 = array(); while ($row = sql_fetch_assoc($result2)) { $thatTxt1 = ""; $numen1 = data_select_array(91, 'f7381=', $ID, ' and status=0'); $thatTxt1 = $numen1['f6811']." - ".$numen1['f6501']; // "Сложить" через тире поля Наименование 6811 и Группа 6501 } $txt2[] = $thatTxt1; $line['9011'] = implode("; ", $txt2); // Вывести данные "сложения" через разделитель в поле 9011
Код, который у меня получился выводит значение только для первой строки подтаблицы, Наименование 1 - Цена 1. Дальше почему-то не идет. Пожалуйста. помогите разобраться.
$thatTxt1 = $row['f6811']." - ".$row['f6501'];Вы же в него уже положили ассоциированный массив с данными из извлеченной записи.
Творческая группа "ТАВР".
www.TAVR.pro Художественная ковка, металлоконструкции.
www.СтолМет.рф Складные столы, стулья и системы для их хранения
#8
Отправлено 24 Март 2018 - 12:56
$result2 = data_select(91, 'f7381=', $ID, ' and status=0'); // таблица Прайс-лист 91, поле 7381 является связью с текущей таблицей 111 $txt2 = array(); while ($row = sql_fetch_assoc($result2)) { $thatTxt1 = ""; $thatTxt1 = $row['f6811']." - ".$row['f6501']; // "Сложить" через тире поля Наименование 6811 и Группа 6501 } $txt2[] = $thatTxt1; $line['9011'] = implode("; ", $txt2); // Вывести данные "сложения" через разделитель в поле 9011Теперь код выводит значение не для первой, а для последней записи в подтаблице
#9
Отправлено 30 Март 2018 - 11:21
Александр Jet (24 Март 2018 - 12:56) писал:
$result2 = data_select(91, 'f7381=', $ID, ' and status=0'); // таблица Прайс-лист 91, поле 7381 является связью с текущей таблицей 111 $txt2 = array(); while ($row = sql_fetch_assoc($result2)) { $thatTxt1 = ""; $thatTxt1 = $row['f6811']." - ".$row['f6501']; // "Сложить" через тире поля Наименование 6811 и Группа 6501 } $txt2[] = $thatTxt1; $line['9011'] = implode("; ", $txt2); // Вывести данные "сложения" через разделитель в поле 9011Теперь код выводит значение не для первой, а для последней записи в подтаблице
$result2 = data_select(91, 'f7381=', $ID, ' and status=0'); // таблица Прайс-лист 91, поле 7381 является связью с текущей таблицей 111 $txt2 = array(); while ($row = sql_fetch_assoc($result2)) { $thatTxt1 = ""; $thatTxt1 = $row['f6811']." - ".$row['f6501']; // "Сложить" через тире поля Наименование 6811 и Группа 6501 $txt2[] = $thatTxt1;//Вот СЮДА } //$txt2[] = $thatTxt1; //Перенести ЭТО выше - в цикл WHILE $line['9011'] = implode("; ", $txt2); // Вывести данные "сложения" через разделитель в поле 9011
Количество пользователей, читающих эту тему: 5
0 пользователей, 5 гостей, 0 анонимных