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


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


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

#141 CbCoder

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

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

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

К любой таблице обращение идет только через запрос, я об этом уже написал выше. Например, через функцию data_table.

#142 f-jeka

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

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

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

Попробовал так
$work = data_table("Работа с клиентом", "`Компания`='".$line['ID']."'")
if ($work == NULL)
{
$data['Компания'] = $line['ID'];
insert_query($data,"Работа с клиентом");
}
Что то выдает ошибку на запись if ($work == NULL)

#143 CbCoder

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

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

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

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

#144 f-jeka

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

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

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

Супер! Супер! Супер! Заработало!
Спасибо! Спасибо!

#145 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 04 Июль 2015 - 11:37

Просмотр сообщенияOlegSmirnov (11 Март 2014 - 19:44) писал:

Здравствуйте!

Нужно сделать так, чтобы в зависимости от значения одного из полей в таблице, для каждой конкретной строки становились обязательными для заполнения разные колонки. ...... При этом и просто поставить галочку в настройках таблицы, что поле является обязательным - тоже нельзя, поскольку эта галочка применяется для всех записей в таблице. А мне нужно, чтобы для каждой строки в таблице обязательными для заполнения могли быть разные поля в зависимости от значения одного из полей той же строки. Предусмотрена ли такая возможность в программе?

Можно ли это сделать с помощью вычислений? Могу ли я в вычислении на сохранение данных отклонить запись данных из формы в таблицу и сформировать текст сообщения причины отказа? Не нашёл такой информации в описании вычислений...
Такая же проблема, но не могу понять как вы её решили. Как реализовать? "Нужно сделать так, чтобы в зависимости от значения одного из полей в таблице, для каждой конкретной строки становились обязательными для заполнения разные колонки"

#146 CbCoder

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

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

Отправлено 04 Июль 2015 - 16:52

Тут нет стандартного встроенного решения. Нужно хорошо знать JavaScript и сидеть разбираться как работает признак обязательности в текущей форме редактирования записи. OlegSmirnov очевидно это смог, но он может вам уже не ответить (больше года прошло), а у меня готового решения нет. В любом случае тут скорее всего надо быть программистом, чтобы понять что к чему.

#147 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 23 Июль 2015 - 16:34

Печальная новость. Но может у кого-то получилось сделать данное вычисление, прошу откликнуться.

#148 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 17 Ноябрь 2015 - 18:17

Добрый день.

Такая проблема: есть родительская таблица Клиенты с полем Статус клиента и подчиненная таблица Работа с клиентом с полем "Задача".
Необходимо, чтобы при добавлении новой записи (в подтаблице Работа с клиентом) со значением в поле Задача "Перенесен" или "Передан", поле Статус клиента автоматически сменялось на Перенесен или Передан соответственно

Делаю так:

if ($line['Задача'] = 'Перенесен' or $line['Задача'] = 'Передан')
{
$data['Статус клиента'] = $line['Задача'];
update_query($data, "Клиенты");

{

Ничего не выходит. Подскажите что делаю не так?

#149 CbCoder

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

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

Отправлено 18 Ноябрь 2015 - 09:32

Во-первых, неправильно задано условие, не "=" (это операция присвоения), а "=="
Во-вторых, в update_query не задано условие какую именно запись обновлять.
В-третьих, тут и не нужен запрос, обновить можно через поле связи.

if ($line['Задача']=='Перенесен' or $line['Задача']=='Передан')
{
$line['поле связи с клиентом']['Статус клиента'] = $line['Задача'];

{


Если "ничего не происходит", то возможно события не настроены корректно. Должно быть событие на изменение поля Задача.

#150 f-jeka

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

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

Отправлено 29 Ноябрь 2015 - 14:27

Подскажите, пожалуйста, как сделать небольшую доработку. Нужно чтоб в подтаблице в поле Менеджер значение поля было не по умолчанию Administrator, а в зависимости от значения в поле основной таблицы. Делаю вычисление так:

$work = data_table("Работа с клиентом", "`Заявка`='".$line['ID']."'");

if ($work == NULL)
{
$data['Заявка'] = $line['ID'];
insert_query($data,"Работа с клиентом");


if $line['Информация'] == '101';
{
$line['Менеджер'] = 'Иванов';
}
}

То есть если в поле Информация содержится запись 101, то полю Менеджер у которого тип Пользователь, присвоилось бы значение Иванов.

#151 CbCoder

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

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

Отправлено 30 Ноябрь 2015 - 09:18

Если поле Менеджер находится в подтаблице, а вычисление - в основной записи (я так понял, исходя из кода выше), то присвоение в $line['Менеджер'] заведомо некорректно т.к. $line - это текущая запись, т.е. в данном случае - основная. В вашем коде наиболее логично делать данное размещение в переменную $data до ее записи через insert_query. Плюс присвоение полю "пользователь" некорректное, там хранится не ФИО, а id пользователя.

$work = data_table("Работа с клиентом", "`Заявка`='".$line['ID']."'");
if ($work == NULL)
{
    $data['Заявка'] = $line['ID'];
    if $line['Информация'] == '101';
    {
	    $data['Менеджер'] = 123; // вместо 123 ставим id пользователя Иванов
    }
    insert_query($data,"Работа с клиентом");
}


#152 f-jeka

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

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

Отправлено 30 Ноябрь 2015 - 11:18

Спасибо.
Поле Менеджер находится в подтаблице. Но почему-то выходит ошибка:
19:     $data['Заявка'] = $line['id'];
20:     if $line['f1981'] == '101';
21:     {
syntax error, unexpected T_VARIABLE, expecting '('


#153 CbCoder

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

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

Отправлено 30 Ноябрь 2015 - 12:39

Это из вашего кода ошибка перешла, я просто не обратил на нее внимание. Условие после if должно быть в скобках разумеется, согласно правилам PHP. И без точки с запятой на конце (т.к. команда не окончена)

if ($line['Информация'] == '101')


#154 f-jeka

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

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

Отправлено 30 Ноябрь 2015 - 13:10

Спасибо. Теперь работает.
А как лучше записать условия если несколько сотрудников? Каждый раз писать if ?

#155 f-jeka

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

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

Отправлено 30 Ноябрь 2015 - 14:09

И еще небольшой вопросик. Можно ли настроить нечеткое соответствие условию?
Например, если в поле Информация содержится фамилия Иванов, то условие срабатывало, даже если написано "Иванов 101" "Иванов 105" и т.д.
Я так полагаю нужно вместо двойного равенства == какой-то другой знак прописать.

#156 CbCoder

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

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

Отправлено 30 Ноябрь 2015 - 14:38

Цитата

А как лучше записать условия если несколько сотрудников? Каждый раз писать if ?

Где именно несколько сотрудников? В каком поле? Если в "Информации", то используйте OR между условиями

Цитата

Я так полагаю нужно вместо двойного равенства == какой-то другой знак прописать.

Нет. Нужно использовать функцию поиска в строке, например mb_strpos

#157 zima

    Новичок

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

Отправлено 09 Июнь 2016 - 12:14

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

$ins_data['имя тест1'] = $line['имя тест'];
insert_query($ins_data,"сотрудники1");
http://crm.goup.ru

#158 CbCoder

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

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

Отправлено 15 Июнь 2016 - 12:47

В поле связи хранятся id связанных записей, а не текстовые значения, поэтому $ins_data['имя тест1'] = $line['id']; Это очевидно, если внимательно смотреть примеры выше.

#159 f-jeka

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

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

Отправлено 02 Август 2016 - 02:15

Создал вычисление для добавления записей в подтаблицу
$work = data_table("Закрывающие", "`По счету`='".$line['ID']."'");
if ($work == NULL)
{
    $data['По счету'] = $line['ID'];
    
    $data['Документ'] = "Платежка об оплате клиентом";
    insert_query($data,"Закрывающие");
    
    $data['Документ'] = "Счет для клиента";
    insert_query($data,"Закрывающие");
}

Вычисление нормально работает, но только под Администратором.
Под обычным пользователем ничего не происходит, хотя ставил абсолютно все галочки в правах на подтаблицы как у Администратора.
Где именно может не хватать прав на добавление записей в подтаблицу?

#160 CbCoder

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

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

Отправлено 03 Август 2016 - 12:23

Вычисление на какое событие настроено? Скорее всего под обычным пользователем оно просто не вызывается, в силу отсутствия возникновения события для его запуска. Работа же самого кода никак абсолютно не зависит от текущего пользователя и его прав (у вычисления всегда полные права на всё), вне зависимости от того, что за код у вас там написан.





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

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