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


Функции работы с записями


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

#41 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 22 Июль 2015 - 22:25

есть необходимость в вычислении получить внешнее имя поля по внутреннему.

при изменении в таблице, пишется лог в подтаблицу и если внутренние поля являются ключами массива $line, а в $event['changed'] еще и в int_name содержатся, то внешнего имени поля в массивах нет.

как его получить зная fXXX?
есть функция какая?

#42 CbCoder

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

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

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

Готовой функции нет, можно обратится запросом к служебной таблице FIELDS_TABLE, с условием "id равно XXX" и достать внешнее имя из поля "name_field"

#43 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 24 Июль 2015 - 17:58

в mysql такой нет таблицы, есть Таблица: cb_fields
или не напрямую а функцией, которая работает с русскими именами?

#44 CbCoder

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

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

Отправлено 24 Июль 2015 - 18:49

Русские имена тут не причем, это константа, автоматически подставляющая нужный префикс к таблице, т.к. в общем случае может быть и не cb_fields, а к примеру f_fields или что-то еще. Константа подставляется либо в нативный SQL-запрос вместо имени таблицы после FROM, либо используя нашу функцию sql_select_array:

$field = sql_select_array(FIELDS_TABLE, "id=111"); // вместо 111 подставляете id нужного поля


#45 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 04 Ноябрь 2015 - 19:15

function data_update($table_id, $data, $display_notification = 1)
{  

return $sql_query
}
И как давно запрос возвращает текстовый запрос и что такое $display_notification = 1?

#46 CbCoder

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

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

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

Просмотр сообщенияwondertalik (04 Ноябрь 2015 - 19:15) писал:

И как давно запрос возвращает текстовый запрос

С 8 июля 2013 года.

Просмотр сообщенияwondertalik (04 Ноябрь 2015 - 19:15) писал:

и что такое $display_notification = 1?

Вы это сами можете отследить по цепочке, т.к. данный параметр подставляется в функцию popup_event из functions1.php, который также открыт.

#47 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 16 Февраль 2016 - 14:16

    $studentsGroups = [];
    if (intval($line['Участие в группе 1']['ID']) > 0) {
	    $studentsGroups[] = $line['Участие в группе 1']['ID'];
    }
    if (intval($line['Участие в группе 2']['ID']) > 0) {
	    $studentsGroups[] = $line['Участие в группе 2']['ID'];
    }
    if (intval($line['Участие в группе 3']['ID']) > 0) {
	    $studentsGroups[] = $line['Участие в группе 3']['ID'];
    }
    if(count($studentsGroups)) {
	    $result = data_select(611, "`status` = 0 AND `f10491` IN (".implode(",", $studentsGroups).") AND `f10501` = ", $line['ID']);
	   
	    if(sql_num_rows($result) > 0) {
		    global $cancel_delete;
		    $cancel_delete=1;
		   echo "<script>jalert('Студент записан в группе, удаление не возможножно')</script>";
	    }
    }
Имеется такой код, отрабатывает верно - кроме одного но. Запись в реале не удаляется, однако идет перенаправление из режима просмотра записи в режим таблицы - появляется уведомление, что строка удалена успешно (display_notification). Почему так? Баг?

#48 CbCoder

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

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

Отправлено 16 Февраль 2016 - 14:23

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

#49 alexrus

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

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

Отправлено 06 Апрель 2016 - 04:55

CbCoder подскажите пожалуйста
есть функция, один из аргументов функции массив $line
если функцию определять в самом вычислении, то работает, если она в подключаемом файле, то нет.
Не могу записать результат работы функции ни с помощью update_query, ни data_update.(как в теле функции, так и вне её)
Функция возвращает массив.
Ошибка
Ошибка SQL запроса:
UPDATE f_data21 SE WHERE `id`='213'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `id`='213'' at line 1

P.S. Понял почему ошибка (функция возвращает пустой массив)

Сообщение отредактировал alexrus: 06 Апрель 2016 - 06:10


#50 alexrus

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

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

Отправлено 06 Апрель 2016 - 06:12

Такой вопрос остался
Так работает
require_once $config['site_path']."/include/customs_func.php";
$parr['Режим выкуп'] = $line['Режим выкуп'];
$parr['Режим приемка'] = $line['Режим приемка'];
$parr['Режим отправка'] = $line['Режим отправка'];
$parr['Режим клиент'] = $line['Режим клиент'];
$parr['id'] = $ID;
mode(3, $user['id'], $parr);
Так нет
require_once $config['site_path']."/include/customs_func.php";
mode(3, $user['id'], $line);
Просто интересно, почему?

Сообщение отредактировал alexrus: 06 Апрель 2016 - 06:12


#51 CbCoder

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

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

Отправлено 06 Апрель 2016 - 09:08

Потому что в массиве $line нет ключей 'Режим выкуп' и т.д., т.е. видимых названий полей. На самом деле там используются внутренние бд-имена, вида 'f111'. То что вы видите в редакторе - это просто автоматическая замена для удобства работы с полями.

#52 alexrus

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

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

Отправлено 06 Апрель 2016 - 10:55

Блин, вот балбес! Ответ перед носом...
Спасибо!

Сообщение отредактировал alexrus: 06 Апрель 2016 - 10:55


#53 geekvega

    Участник

  • Пользователи
  • PipPip
  • 21 сообщений
  • Пол:Мужчина

Отправлено 22 Апрель 2016 - 15:26

Подскажите где найти названия полей всей crm?
Хочется разбираться в системе, поменьше прибегать к сторонней помощи и делать больше вклада в развитие crm.
Сейчас есть потребность сделать уведомления "обязательными к исполнению" и для этого нужно понять с какой стороны подойти.

#54 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Апрель 2016 - 15:34

Просмотр сообщенияgeekvega (22 Апрель 2016 - 15:26) писал:

Подскажите где найти названия полей всей crm?
Хочется разбираться в системе, поменьше прибегать к сторонней помощи и делать больше вклада в развитие crm.
Сейчас есть потребность сделать уведомления "обязательными к исполнению" и для этого нужно понять с какой стороны подойти.
Заходите в настройке администратора, ставите режим разработчика. Далее в каждой таблице можно выбрать режим разработчика и увидеть поля.

#55 geekvega

    Участник

  • Пользователи
  • PipPip
  • 21 сообщений
  • Пол:Мужчина

Отправлено 22 Апрель 2016 - 15:36

Просмотр сообщенияwondertalik (22 Апрель 2016 - 15:34) писал:

Заходите в настройке администратора, ставите режим разработчика. Далее в каждой таблице можно выбрать режим разработчика и увидеть поля.
Спасибо!

#56 Valerii

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

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

Отправлено 13 Март 2017 - 16:16

Подскажите, есть число 00,00 Как в печатной форме разбить на 00 руб. 00 коп.?

И как сделать, что бы в печатной форме прописывалась сумма прописью с рублями и копейками?

Прошу помидорами не кидать, только недавно к Вам присоединился.

Техподдержка практически всегда отсылает на форум к уважаемому CbCoder.

#57 CbCoder

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

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

Отправлено 13 Март 2017 - 17:35

Вначале придется создать вычисляемое поле, и уже его вставлять в шаблон, т.к. готовой функции нет.

Код вычисления к примеру такой:
$arr = explode(',', number_format($line['Число 1'], 2, ',', ''));
$line['Число 2'] = $arr[0] . ' руб. ' . $arr[1] . ' коп.';
Число 1 - исходное поле
Число 2 - вычисляемое

#58 Valerii

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

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

Отправлено 13 Март 2017 - 19:32

Просмотр сообщенияCbCoder (13 Март 2017 - 17:35) писал:

Вначале придется создать вычисляемое поле, и уже его вставлять в шаблон, т.к. готовой функции нет.

Код вычисления к примеру такой:
$arr = explode(',', number_format($line['Число 1'], 2, ',', ''));
$line['Число 2'] = $arr[0] . ' руб. ' . $arr[1] . ' коп.';
Число 1 - исходное поле
Число 2 - вычисляемое

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

Это нужно сделать для квитанции на оплату, для физических лиц.

Сообщение отредактировал Valerii: 13 Март 2017 - 19:33


#59 CbCoder

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

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

Отправлено 14 Март 2017 - 11:29

Цитата

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

Да, создать новое поле (его можно затем скрыть через права доступа, оставив только права на экспорт) и добавить указанное вычисление на событие изменения исходного поля.

Тип нового поля должен быть "текст", разумеется.





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

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