Перейти к содержимому


Добавление записи через вычисление


Сообщений в теме: 196

#121 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 03 Сентябрь 2014 - 16:17

Удалено

Сообщение отредактировал Mouse: 03 Сентябрь 2014 - 16:23


#122 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 03 Сентябрь 2014 - 16:23

Я видимо не правильно выразилась.
1.таблица Прайс-лист - поле "цена поставщика", поле "валюта поставщика (название валюты)" и поле "цена"
2.таблица Валюты - поле "Валюта (название валюты)" и поле "Курс". в данной таблице всего 3 строки, тк. 3 валюты, а их курс изменяется ежедневно.
"Валюта поставщика" связь "валюта"
задача "цена поставщика" по полю "валюта поставщика" умножить на "курс" данной валюты из таблицы валюта и записать в поле "цена".

#123 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Сентябрь 2014 - 17:12

И что вас смущает, я не понял? Я дал вам именно тот алгоритм который нужен. Вы его проверили? Не надо искать лишние сложности там где их нет.

#124 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 04 Сентябрь 2014 - 12:08

Просмотр сообщенияCbCoder (03 Сентябрь 2014 - 17:12) писал:

И что вас смущает, я не понял? Я дал вам именно тот алгоритм который нужен. Вы его проверили? Не надо искать лишние сложности там где их нет.
я проверила не заработала, потом нашла свою ошибку в названии исправила - все заработало. Спасибо.

Скажите, а можно как-то сводить в одной ячейке значения разных. к примеру поле артикул это ID типа-ID категории-ID подкатегории/ID товара.
т.е вида: NN-NNN-NNN/NNN, если подкатегории нет то NN-NNN/NNN?

#125 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Сентябрь 2014 - 13:10

Можно конечно, через вычисляемое поле. Просто конкатенируете (сливаете) значения из нескольких полей и помещаете результат в другое.

Например:

$line['Результат'] = $line['Поле1']."-".$line['Поле2'];

Точка в PHP как раз служит для конкатенации строк. Т.е. если Поле1 - "Лебедев", а Поле2 - "Кумач", то в поле Результат будет "Лебедев-Кумач".

#126 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 04 Сентябрь 2014 - 14:17

Спасибо!!! Видимо вы были в отпуске, Вас очень не хватало :)

#127 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 02 Апрель 2015 - 01:09

Не получается создать запись в подчиненной таблице. Все по документации делаю.
Создал вычисление на событие "Сохранение в таблице" Пример на демо аккаунте https://demo.clientb...php?calc_id=931
$data['Компания'] = $id;
insert_query($data,"Работа с клиентами");
При создании нового Контрагента новая запись в таблице "Работа с клиентом" не появляется.
Понимаю что простой вопрос, но все таки не могу разобраться. Подскажите, пожалуйста, как сделать правильно.

#128 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 03 Апрель 2015 - 09:50

Еще заметил, что на демо сервере при создании нового Контрагента автоматом создаются две записи в подтаблице "Работа с клиентами" https://demo.clientb...ge=1&subtable=2
При чем записи создаются только один раз и независимо от добавленного мной вычисления. Если создать второго или больше Контрагента, то записи в Работе с клиентами не появляются. Какое вычисление создает эти записи? Как сделать чтоб всегда при добавлении Контрагента создавалась одна запись в Работе с клиентами?

#129 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Апрель 2015 - 13:28

Просмотр сообщенияf-jeka (02 Апрель 2015 - 01:09) писал:

$data['Компания'] = $id;
insert_query($data,"Работа с клиентами");
При создании нового Контрагента новая запись в таблице "Работа с клиентом" не появляется.

Может плохо смотрю, но ошибок не вижу, код тривиальный. Запись должна добавиться.

#130 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 15 Май 2015 - 02:43

Оказывается запись создается, но она не привязывается к родительской таблице и поэтому в ней не отображается. Как сделать чтоб создаваемая запись в подтаблице в поле связи имела номер родительской таблицы?

#131 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Май 2015 - 09:57

Действительно плохо смотрел в прошлый раз.

$data['Компания'] = $id;

Предустановленной переменной $id в вычислениях нет, есть $ID или эквивалентное ей $line['ID']. В итоге вы записываете в поле пустоту вместо создания связи с родительской таблицей.

#132 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 15 Май 2015 - 11:34

Заменил вычисление на
$data['Компания'] = $line['ID'];
insert_query($data,"Работа с клиентом");
То же самое. Запись создается, но без привязки.
Так тоже не работает
$data['Компания'] = $ID;
insert_query($data,"Работа с клиентом");


#133 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Май 2015 - 11:57

А вы где собственно вычисление запускаете? К какой таблице вычисление относится? Если в Контрагентах - то все должно работать. Или я опять чего-то не вижу...

#134 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 15 Май 2015 - 12:18

Вычисление запускаю в Контрагентах. Разобрался. Заработало.
Подскажите еще один момент. Теперь запись создается каждый раз при нажатии в Контрагенте Редактировать-Сохранить, хотя в вычислении стоит галочка "Запретить рекурсивный вызов"
Можно ли задать условие, что если есть хотя бы одна запись в подтаблице привязанная к основной таблице, то вычисление не срабатывало?

#135 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 15 Май 2015 - 13:35

Поправьте, пожалуйста, проверку условия:
if ($line['Работа с клиентом']['Компания'] == NULL)
{
$data['Компания'] = $line['ID'];
insert_query($data,"Работа с клиентом");
}

#136 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Май 2015 - 14:35

Цитата

Теперь запись создается каждый раз при нажатии в Контрагенте Редактировать-Сохранить, хотя в вычислении стоит галочка "Запретить рекурсивный вызов"

А при чем тут "рекурсивный вызов", не совсем понял? Эта опция запрещает повторный вызов вычисления одномоментно, т.е. когда одно вычисление вызывает другое по кругу (поэтому по сути актуально только для вычислений на событие изменения полей). Она никак не влияет на повторный вызов, если вы сами вручную вызвали событие (т.е. в данном случае нажали на кнопку).

Цитата

Можно ли задать условие, что если есть хотя бы одна запись в подтаблице привязанная к основной таблице, то вычисление не срабатывало?

Почему нет то? Обращаетесь запросом к подтаблице и проверяете, и есть ли там нужная запись. Если она уже есть - код не выполняется.

#137 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Май 2015 - 14:35

Просмотр сообщенияf-jeka (15 Май 2015 - 13:35) писал:

Поправьте, пожалуйста, проверку условия:
if ($line['Работа с клиентом']['Компания'] == NULL)
{
$data['Компания'] = $line['ID'];
insert_query($data,"Работа с клиентом");
}

Где поправить, не понял?

#138 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 15 Май 2015 - 14:49

Нужно поправить условие if ($line['Работа с клиентом']['Компания'] == NULL)
По идее оно обращается к подтаблице с проверкой есть там записи или нет. Если записей нет, то выполняется добавление записи.
Но что то в этом условии не так. Каждый раз при нажатии Редактировать - Сохранить появляется запись в подтаблице.

#139 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Май 2015 - 14:55

Цитата

По идее оно обращается к подтаблице с проверкой есть там записи или нет

К какой подтаблице? Я в этом коде вижу только обращение к некоему полю связи "Работа с клиентом". В переменной $line никаких таблиц нет, только поля.

#140 f-jeka

    Активный участник

  • Пользователи
  • PipPipPip
  • 196 сообщений

Отправлено 15 Май 2015 - 14:58

У меня подтаблица называется "Работа с клиентом"
А как правильно написать проверку есть записи или нет?





Количество пользователей, читающих эту тему: 7

0 пользователей, 7 гостей, 0 анонимных