компаний проявили интерес к нашему продукту!
Узнайте, почему.
Внимание! Настраивать вычисляемые поля рекомендуется только программистам обладающим необходимыми знаниями в этой области. В случае отсутствия данных специалистов вы всегда можете заказать написание кода для данных полей в нашей компании. Для заказа сформулируйте данные в техзадании и пришлите на info@clientbase.ru.
Внимание! Вычисляемые поля срабатывают и вычисляются заново каждый раз при отображении строк таблицы.
Для начала разъясним разницу между вычислениями в полях и таблицах.
Вычисления в полях | Вычисления в таблицах |
Код вычисления в полях срабатывает при любом ОТОБРАЖЕНИИ ПОЛЯ. | Код вычисления в таблицах срабатывает при каждом СОХРАНЕНИИ ЗАПИСИ в данной таблице. |
Таким образом вычисления в полях удобно использовать, например в случае когда есть поля A, B, C, где поле С должно заполняться автоматически в каждой записи таблицы и должно быть равно C = А — B. В этом случае используем "вычисление" в поле С (код для данного вычисления примерно приведен в пункте 3 данного раздела). Данное вычисление будет срабатывать и пересчитываться заново КАЖДЫЙ РАЗ при отображении данной таблицы. |
Вычисления в таблицах срабатывает по нажатию кнопки "Сохранить". Пример использования поля: есть поле A в котором нужно сохранять дату и время последнего изменения записи. (код данного примера смотрите в разделе "Примеры вычислений"). |
Срабатывают чаще и во всех записях таблицы, а следовательно более затратны по ресурсам | Срабатывают реже, и только в тех записях, которые определены кодом, а следовательно менее затратны по ресурсам. |
Возвращают результат вычислений через return и отображают его в поле. | Ничего не возвращают, а только исполняют заложенный код. |
Простой пример.
Вы можете задавать любые собственные переменные.
Результатом будет переменная возвращенная через return. Она отобразится во всех строках таблицы. В данном случае во всех строках отобразится одно и то же число.
$a = 25; $b = 2; $result = $a*$b; return $result;
Наиболее частным случаем является работа вычислительных полей с данными из текущей таблицы.
Допустим мы имеем таблицу "Счета" в которой заведены поля "Сумма" и "Количество" и нам нужно создать поле "Цена", которое бы автоматически заполнялось бы значением "Сумма"/"Количество.
Для этого воспользуемся специальной функцией data_table($table, $index), где $table — название таблицы, $index — выбор строк которые нам необходимы.
В данном случае нам нужно получить данные из текущей строки таблицы "Счета", используем специальную переменную {ID} — которая равна ID текущей строки.
$nakl = data_table("Счета","id={ID}"); // берем все данные текущей строки и забиваем их массив $result = $nakl["Сумма"]/$nakl["Количество"]; // элементы массива по названию столбцов. return $result;
Если возникает необходимость работать с данными не только из текущей таблицы, но и из других, то мы также используем функцию data_table().
Такой пример в нашей базе случай с реквизитами, где нам необходимо получать адрес из таблицы "Контрагенты"
$rekv = data_table("Реквизиты","id={ID}");// получаем данные из текущей строки $org = data_table("Контрагенты","id='".$rekv['Организация']."'");//получаем данные из таблицы "Контрагенты", где id равен $rekv['Организация'] return $org['Адрес'];
Также может возникнуть необходимость, когда мы не просто должны взять данные из другой таблицы, но, например просуммировать их. Такая ситуация в нашей конфигурации с таблицей счета, в которой мы в поле "Сумма" заносим сумму из позиций счёта, по данному счету. Но через упрощенную функциональность (зная только имена таблиц и полей) на данный момент вы это не реализуете, здесь необходимо знать структуру базы данных, в частности как задавать таблицы и поля (физически в базе они хранятся под номерами, а не под "русскими" именами). Например, таблица "Позиции счета" в стандартной конфигурации имеет номер 74, поле Сумма в той же таблице — номер 812. Их истинные имена выглядят как <prefix>data74 и f812 соответственно, где <prefix> — текущий префикс таблиц. Таким образом запрос на выборку данных из поля Сумма таблицы "Позиции счета", при том что поле Счет будет равно номеру счета из таблицы "Счета", будет выглядеть так:
$sqlQuery = "SELECT sum(f812) as summa FROM ".DATA_TABLE."74 WHERE f807={ID}";//Получаем сумму содержимого полей "Сумма" таблицы "Позиции счета", где поле "Счет" равно номеру счета. $result = mysql_query($sqlQuery); $row = mysql_fetch_array($result); return $row['summa'];
Здесь DATA_TABLE — константа, равная <prefix>data (текущий префикс берется из файла config.php, он задается при установке программы), {ID} — шаблон номера ID текущей записи, подставляется при выполнении кода вычисляемого поля. Номера полей и таблиц можно посмотреть в Настройках соответствующих таблиц и полей, в адресной строке браузера (table и field соответственно)
В целях упрощения работы с вычисляемыми полями (чтобы не запутаться в этих всех номерах), нами была написана функция data_table, которая работает напрямую с русскими именами, но она пока не не позволяет делать сложные запросы, в частности вычисление групповых функций sql, как в нашем примере. Упрощенную функциональность мы будем развивать в следующих версиях.
Используем специальную функцию update_query($array, $table, $index), где
$array = это массив с переменными которые мы записываем,
$table = таблица в которую производится запись
$index — выбор строк которые нам необходимы
Пример. Допустим мы вычисляем расчетную сумму и потом должны записать это число в одно из полей.
$nakl = data_table("Счета","id={ID}"); // берем все данные текущей строки и забиваем их массив $array["Сумма"]=$nakl["Сумма"]*2-51; // производим нужные нам действия с необходимыми полями update_query($array, "Счета", "id={ID}"); // обновляем данные нужных нам полей в текущей строке
Рекомендуем также ознакомиться с разделом "Примеры вычислений".
Внимание! Не рекомендуется создавать вычисляемое поле на основе другого вычисляемого поля . Вычисления могут сработать не в том порядке или вообще не сработать, если к полю-источнику нет доступа. Если вы хотите использовать другое вычисляемое поле в качестве источника данных, то его вычисление должно войти в итоговое.
Пример:
1. Вычисляем Поле3 = Поле1 + Поле2, где оба поля — обычные поля без вычислений
2. Затем если вычислять на основе предыдущего поля скажем Поле5 = Поле3 (вычисляемое) + Поле 4 (обычное), то напрямую данный код употреблять не рекомендуется. Правильнее задать Поле5 = (Поле1 + Поле2) + Поле 4, где все поля — обычные. Результат будет тот же, но без обозначенных выше возможных ошибок.
Мы отправили SMS c кодом на номер
SMS придёт в течение
Если вам не пришла смс с кодом, для регистрации аккаунта напишите нам
Благодарим за регистрацию, скоро мы свяжемся с вами
По данному функционалу ведутся технические работы, будем рады Вас видеть через некоторое время
Объедините всю информацию
компании в единой базе
Подключайте сотрудников
и управляйте их доступом
Создавайте собственные
таблицы и отчеты
Выписывайте счета
и создавайте собственные
шаблоны документов
Проводите персонализированные
E-mail и SMS рассылки
Создавайте собственные
напоминания
Ведите учет событий
в календаре
Не волнуйтесь о безопасности,
все данные защищены
Проводите поиск
по любым параметрам
и фильтрам
Интегрируйтесь с сайтом
и получайте заявки прямо в базу
До начала работы
осталось совсем чуть-чуть!