Top.Mail.Ru
image: mail
Попробуйте первые 14 дней бесплатно

Начать бесплатно
+

Вычисления

Разработчику

Общая информация

Использование вычислений в CRM программе "Клиентская База" позволяет расширить ее функционал. С помощью вычислений можно реализовать:

  • Проведение математических операций с числовыми полями
  • Перенос информации из одной таблицы/поля в другую таблицу/поле
  • Обновление данных в одних полях таблицы при изменении значений в других
  • и многое другое.

При этом, многие вычисления можно создать с помощью конструктора.

Конструктор вычислений может быть полезен:

  • Владельцам бизнеса и директорам, так как это решение экономит время и деньги на сторонние доработки.
  • IT-специалистам и техдиректорам, которые собственными силами реализовывают индивидуальные решения в компании. С помощью этого решения ускоряется реализация простых доработок без привлечения сторонних специалистов.
  • Разработчикам и компаниям внедряющим CRM системы, т.к. с помощью конструктора возможно быстро создать шаблон/прототип, на основе которого будет разработано более сложный функционал.

 

Начало работы

Чтобы внести вычисления в таблицу, необходимо

1. Открыть "Настройки" — "Конфигурация"

photo photo

2. Выбрать категорию, в которой находится нужная нам таблица и открыть ее настройки

photo photo

3. Перейдя в меню "Вычисления", мы увидим перечень всех вычислений в этой таблице, снятием галочки рядом с соответствующим вычислением сможем отключить его, а также сможем добавить новое.

photo photo

Конструктор вычислений


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

После того как будет выбран тип вычислений, перед вами появится перечень настроек вычислений. А именно:

Описание вычисления – Название вычисления, по которому можно будет легко определить его функционал.
Условия – условия, при которых происходит выполнение вычисления. В отличие от поля «Вычислять при условии», здесь задаются значения, которым должны соответствовать поля записи, чтобы вычисление по ней сработало. Если заполнить поле, то вычисление будет срабатывать только по записям, соответствующим указанным условиям при действиях, указанных в поле «Вычислять при условии».Если это поле оставить пустым, то вычисление будет срабатывать всегда при выполнении условий, указанных в поле «Вычислять при условии».
Режим – в данном поле выбирается, как мы будет создавать код вычисления – с помощью конструктора (вариант «Режим конструктора») или задав код вручную (вариант «Режим эксперта» рекомендуется только при наличии навыков программирования на PHP и отсутствии подходящих шаблонов).
Шаблон – в данном поле выбирается, какие действия будут происходить с полями. Подробнее о каждом отдельно взятом шаблоне – чуть ниже.
Вычислять при условии – указывается, при каких действиях будет срабатывать вычисление. В отличие от поля «Условия», здесь задаются только действия, которые нужно выполнить, чтобы вычисление сработало.
Кроме этого, у вычисления есть дополнительные настройки:
Запретить рекурсивный вызов – при включении опция отвечает за то, чтобы запретить вызов одного и того же вычисления в строке более одного раза.
Запустить вычисление – данная опция включает для выполнения вычисление. Если галочка снята, то вычисление выполняться не будет.
По фильтру – данная опция позволяет выполнять вычисление только по записям, соответствующим определенному фильтру в таблице.

photo

Перечень вычислений в режиме конструктора

Общие
    Копировать/создать запись. С помощью этого шаблона возможно создать копию записи в другой таблице. Вычисление может быть полезно, когда необходимо скопировать запись при отсутствии прав на добавление новых записей в таблице.

    Выполнить http-запрос. Данный шаблон позволяет выполнить любой html-запрос, в том числе с GET параметрами.

Текущая таблица

     Копировать поле. Копирует значение из одного поля записи в другое.

     Сравнить поля. Данный шаблон вычисления поможет сравнить поля между собой и поместит заданный результат в поле в зависимости от результата. Подробнее

     Генерировать коды (промокоды). Данный шаблон позволяет автоматически генерировать коды (промокоды) типа: 345-643-234, HDHJ-SHWE, CLIENTBASE-J8HSD. Может использоваться для реализации различных акций и скидок. Подробнее

    Отправить запись на e-mail. Данный шаблон позволяет отправить запись из таблицы вместе с вложенными в нее файлами. Подробнее

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

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

    Число: Математическая формула. С помощью вычисления можно создать любое математическое выражение, используя поля таблицы. Может быть полезно, когда необходимо подсчитать сумму позиции счета, с учетом цены, количества и скидки.

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

    Текст: Работа с ФИО. С помощью вычисления можно вытащить имя или имя и отчество из ФИО. Шаблон может быть полезен, когда необходимо вывести данные для обращения в отдельное поле для менеджеров активных продаж.

    Текст: Копировать как текст. Копирует информацию из любого типа поля и переносит ее в виде текста в поле-получатель. Подробнее

    Текст: Обрезать текст. Шаблон позволяет обрезать текстовое поле до заданного количества символов. Подробнее

    Текст: Изменение регистра. Данное вычисление поможет подготовить текст в требуемом формате регистра.

    Текст: Парсинг текста. Данный шаблон позволяет распарсить (разделить) текст из одного поля по другим полям.

    Дата: Установить текущую дату. Заполняет выбранное поле текущей датой. Шаблон может быть полезен, когда нужно одним кликом указать дату подписания договора.

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

    Дата: Разница между датами. Данный шаблон высчитывает разницу в количестве дней между двумя полями типа «Дата». Шаблон может быть полезен, когда нужно рассчитать, сколько дней заняло движение контрагента от одного этапа воронки продаж к другому.

    Дата: Копировать дату или время. Вычисление может быть полезно, когда необходимо зафиксировать время, в которое бывает доступен для разговора контрагент.

    Перевод суммы из числа в текст. Переносит значение из поля типа "число" в поле типа "текст".

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

    История изменения поля. Шаблон, который в подтаблицу сохраняет историю изменения по заданному полю. Шаблон позволит восстановить всю историю измеенений поля, даже если данные были удалены или заменены. История хранится по всем типам полей. Подробнее

    Объединение текста. Шаблон позволяет собрать записи из разных полей в одно поле. Подробнее

    Заполнить поле связи по текстовому полю. Шаблон позволяет на основе текстового поля найти и заполнить аналогичное значение в поле связи. Шаблон пригодится, например, если вы публикуете на сайте внешнюю форму для оформления заказов и не хотите выводить в ней поле связи. Клиент заполняет название своей компании текстом, а вычисление в КБ уже заполнит поле связи на клиента в заказе.


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

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

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

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

    Копировать поле из подтаблицы в основную запись. Данный шаблон заполняет поле основной записи значением выбранного поля подтаблицы. При этом можно указать, из какой записи подтаблицы будет подтягиваться значение – из первой или последней. Доп. действие может быть полезно, когда необходимо подтянуть дату первого или последнего контакта с клиентом на основании записей, внесенных в историю работы с ним.

    Добавление множества записей в подтаблицу. Данный шаблон позволяет расширить возможности по копированию массива данных.
    
Связанная таблица
    Копировать поля из связанной таблицы. Заполняет поле текущей таблицы значением из поля в связанной записи, указанной в выбранном поле «Связь». Вычисление может быть полезно, когда необходимо подтянуть статус из карточки клиента в заявку.
    Изменить поля в связанной таблице. Заполняет поле в связанной записи, указанной в выбранном поле «Связь», значением из поля текущей таблицы. Доп. действие может быть полезно, когда в карточку клиента необходимо подтянуть статус из заявки.

Шаблоны
    Отправить шаблон рассылки. Доп. действие может быть полезно, когда необходимо отправить определенный шаблон одним кликом мыши.
    Отправить шаблон смс рассылки. Единственное отличие от предыдущего шаблона в том, что будет отправлен шаблон СМС.
    Распечатать шаблон печати. Доп. действие может быть полезно, когда необходимо распечатать определенный шаблон одним кликом мыши.
    Сохранить шаблон печати в файл. Доп. действие аналогично функции печати в файл в браузере, при этом файл сразу закрепляется в нужной записи. Может быть полезно для сохранения коммерческого предложения, которое было отправлено клиенту.

Статус записи
    Удалить запись. Доп. действие может быть полезно, когда необходимо удалить запись при отсутствии прав на просмотр удаленных записей в таблице.
    Архивировать запись. Доп. действие может быть полезно, когда необходимо архивировать запись при отсутствии прав на просмотр архивированных записей в таблице.
    Восстановить запись. Доп. действие может быть полезно, когда необходимо восстановить запись при отсутствии прав на просмотр архивированных и удаленных записей в таблице.

Другое
    Отмена редактирования поля.  Вычисление может быть полезно, когда нужно отменять изменение статуса сделки, если были выполнены не все необходимые условия.
    Сброс нумерации с нового года. Вычисление может быть полезно, если традиция документооборота в компании подразумевает ежегодное обновление нумерации определенных документов.
    Копировать значение поля до изменения. Вычисление может быть полезно, когда необходимо оставить предыдущее примечание по клиенту при его обновлении.

Конструктор допдействий

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

Для создания допдействия необходимо перейти в настройки таблицы, раздел “Допдействия”, нажимаем “Добавить допдействие”.

photo

Станут доступны следующие настройки:

photo

Название доп. действия - название, которое будет указано на кнопке ДД.

Режим цвета - выберите “Стандартный”, если хотите указать цвет из предустановленных, или “Палитра”, если хотите задать цвет самостоятельно. В режиме “Палитра”отдельно задаются цвет кнопки и цвет текста (названия).

Режим - в режиме конструктора допдействия создаются по готовым шаблонам, в режиме эксперта необходимо писать код на php.

Ввод параметров. Допдействия могут выполняться сразу, а также можно выводить окно для ввода или выбора какой-то дополнительной информации. Если требуется такое окно, выберите “Да”. Появится кнопка “Добавить новый параметр”, при клике на который можно создать поля, которые потребуется заполнить при клике на допдействие. 

photo

При создании параметра доступны следующие настройки:

Название - название поля ввода. Оно может совпадать с названием поля, в которое будет записываться инфа, а можно и задать свое, свободное название.

Сохранить в поле - выберите поле, в которое требуется сохранить введенную информацию.

Значение по умолчанию - работает так же, как значение по умолчанию в полях - указанное значение будет заполнено автоматически.

Из поля - можно вывести информацию из другого поля.

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

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

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

Задавать условия - выберите “Да”, если допдействие должно выполняться при определенных условиях. 

Запрашивать подтверждение - укажите “Да”, если должно выйти дополнительное окно с вопросом, уверен ли пользователь в своих действиях. Далее можно задать “Текст подтверждения”.

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

photo

Ниже сразу можно настроить доступ к ДД.

photo

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

photo

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

Режим эксперта

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

Если мы переключимся в режим эксперта, то необходимо будет заполнить

  • Вычисление — поле, в которое следует вставить код вычисления

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

  • Вычислять при условии — условие, при котором вычисление будет срабатывать. В этом поле можно указать сразу несколько условий.

photo

Важно: Желательно не указывать в поле "Вычислять при условии" значение "Отображение поля", т.к. оно значительно нагружает систему. По возможности, необходимо заменять его на события изменения полей, как более оптимальный вариант.

Глобальные переменные

В вычислениях нельзя переопределять глобальные переменные, такие как:

  • $line 
  • $table
  • $config
  • $user
  • $ID
  • $lang
  • $smarty
  • $ses_id

Например, код: 

{
	$table='Моя таблица';
}

приведет к ошибке программы. При этом данные переменных могут быть прочитаны и использованы в вычислениях. Переопределение допускается только полей в переменной $line.

Примеры Вычислений

1. Применение вычисляемых полей без использования данных из таблиц

$line - это текущая строка, точнее переменная-массив с данными текущей строки. Например, $line['Сумма'] вернет значение из поля Сумма текущей строки. $line является зарезервированной переменной, создается программой и переопределять ее нельзя.

Простой пример.
Например, создадим вычисление, по которому в поле с названием "Дата" будет внесена текущая дата:

$line['Дата'] = date("Y-m-d 00:00:00");

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

Для этого изменяем наше вычисление

$line['Дата'] = date("Y-m-d 00:00:00", time() + 60*60*24*3);

При этом укажем, что вычисление будет производится при сохранении в таблице.

photo

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

Важно! Реальное обновление данных при записи в массив $line происходит уже после выполнения вычисления, поэтому, если в вычислении нужно, например, обновить e-mail в записи, а затем отправить шаблон рассылки на новый e-mail, то в таком случае необходимо менять не $line, а делать прямой запрос на запись в бд (update_query) перед отправкой шаблона. Проиллюстрируем на примерах:

Вычисление1 - обновит значение поля "E-mail для шаблона", но шаблон письма отправит на старый e-mail:

$line['E-mail для шаблона'] = $line['Исполнитель']['E-mail исполнителя'];

 send_template(91, "id=$ID");

Вычисление2 - обновит значение поля "E-mail для шаблона" таблицы "Заказы" и отправит шаблон рассылки уже на новый e-mail:

$upd_data['E-mail для шаблона'] = $line['Исполнитель']['E-mail исполнителя'];

update_query($upd_data, "Заказы", "id=$ID");

send_template(91, "id=$ID");

 

2. Использование данных из текущей таблицы

Наиболее частым случаем является работа вычислительных полей с данными из текущей таблицы. Наглядный пример представлен в таблице "Позиции счета". В ней в поле "Сумма" вносится число равное "Цене" помноженной на "Количество". Код этого вычисления выглядит так:

$line['Сумма'] = $line['Цена'] * $line['Количество'];

У данного вычисления в поле "Вычислять при условии:"  необходимо выбрать "Изменение поля Цена" или "Изменение поля Количество".

photo

 

3. Использование данных из другой таблицы

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

$line['Телефон'] = $line['Компания']['Телефон'];

И в поле "Вычислять при условии" нужно указать "Сохранение в таблице"

photo

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

$line['Компания']['Телефон'] = $line['Новый телефон'];

Согласно этому вычислению, в родительскую таблицу "Компания" в поле "Телефон" будет внесено значение из поля "Новый телефон" подчиненной таблицы. Вычисление при этом заноситься в подтаблицу.

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


// Получаем сумму содержимого полей "Сумма" таблицы "Позиции счета", где поле "Счет" равно номеру счета.
	$sqlQuery = "SELECT sum(f810) as summa FROM ".DATA_TABLE."74 WHERE status=0 AND f807='".$line['Счет']['ID']."'";
	$res = sql_query($sqlQuery); 
	$row = sql_fetch_array($res);
	$summa = $row['summa']; 
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
	$line['Счет']['Сумма'] = $summa ;

В этом вычислении:

f810 — поле "Сумма" в таблице "Позиции счета",

74 — id таблицы "Позиции счета",

f807 — поле связь указывающее на счет в таблице "Позиции счета".

 

В случае необходимости скопировать данные из записи во все записи подтаблицы, используется следующий код. Например, нам необходимо в подтаблицу внести наименование компании, на которую выписан счет. В таком случае добавим в родительскую таблицу следующее вычисление:

$sqlQuery = "UPDATE ".DATA_TABLE."74 SET f850='".$line['Компания']."' WHERE f807='".$line['ID']."'";
sql_query($sqlQuery);

В этом вычислении:

74 — id таблицы "Позиции счета",

f807 — поле связь указывающее на счет в таблице "Позиции счета".

f850 - поле, в которое будет вносится название компании

 

4. Отмена действий

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

Например, если нам нужно, чтобы было невозможно редактировать поле "Название", мы вносим следующее вычисление:

$line['Название'] = $event['changed']['478']['old'];

Настройки вычисления следующие:

photo

Для того, чтобы невозможно было удалить из таблицы строку, необходимо внести следующее вычисление: 

global $cancel_delete;
$cancel_delete=1;

где приcвоением переменной "$cancel_delete"  значения 1, мы запрещаем удаление строки.

При этом, в поле "Вычислять при условии" указываем значение "Удаление в таблице"

photo

Начиная с версии 2.0.2 появилась возможность добавлять условие для срабатывания вычислений на восстановление записей в таблице. Таким образом, если например, вычисление высчитывает сумму по записям в подтаблице и записывает это значение в поле в основной записи, то логичным будет пересчитывать данную сумму при добавлении записи, изменении поля, по которому считается сумма, при удалении записи и при восстановлении записи. Если планируется импорт в данную подчиненную таблицу, то также необходимо включить срабатывание этого вычисления при импорте.  

photo

5. Добавление записи в таблицу

Для автоматического добавления записи в произвольную таблицу можно использовать функцию insert_query. Функция insert_query, во-первых, позволяет работать с внешними именами полей, а не с внутренними, типа "f235", во-вторых, автоматически заполняются служебные поля и значения по умолчанию, и в-третьих, автоматом запускаются имеющиеся вычисления в таблице (на события изменения полей). 

Алгоритм использования функции такой:
1. Заполняем массив полей нужными нам данными
2. Добавляем новую запись через функцию insert_query

 Пример:

$data['Имя'] = "Петр";
$data['Фамилия'] = "Иванов";
insert_query($data, "Сотрудники");

Примечание: функция insert_query возвращает id добавленной записи, который можно записать в переменную и затем использовать в последующей обработке.

К примеру, доработка вышеприведенного кода:
$data['Имя'] = "Петр";
$data['Фамилия'] = "Иванов";
$new_id = insert_query($data, "Сотрудники");
send_template(35, "id=$new_id"); // отсылаем приглашение сотруднику
Пример создания записи в связанной таблице (полю связи присваеваем ID текущей записи):
if ($line['Статус'] == "Заказывает") 
{
   $data['Заказчик'] = $ID;
   $data['E-mail'] = $line['E-mail'];
   insert_query($data, "Портреты");
}
Если необходимо копировать поле типа файл, необходимо создать текстовое поле с настройкой "Отображать HTML теги". Затем сформировать ссылку в этом поле. Например, поле из которого Вы копируете данные имеет ID 222, а номер таблицы, из которой копируется файл имеет номер 111. Тогда в вычислении строка с ссылкой будет выглядеть так:
$data['Готовый эскиз'] = ".$line['Готовый эскиз']."'>".$line['Готовый эскиз']."";

Чтобы отображалось превью файла типа изображения, нужно сделать так
$data['Готовый эскиз'] = ".$line['Готовый эскиз']."'>.$line['Готовый эскиз']."&show=1&w=100&h=100' alt='' />";

 

6. Обновление записи

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

$data['Компания'] = "Восток";
$data['Дата'] = date("Y-m-d H:i:s");
update_query($data, "Контрагенты", "`id`=8"); // Обновит поля "Компания" и "Дата" в таблице "Контрагенты" для строки с id=8.

7. Удаление записи

// Удаление строки из таблицы "Контрагенты" с id=8
delete_query("Контрагенты", "`id`=8");

Функция delete_query аналогична функциям insert_query и update_query, но в отличии от них, массив данных для ее использования передавать не нужно.

 

8. Вычисление при копировании записи

В этом случае можно использовать событие на сохранение записи, добавив проверку переменной $_REQUEST['copy_line']. Если она заполнена - значит это не обычное сохранение, а сохранение при копировании. В этой же переменной хранится и id оригинальной записи (которую копируем), благодаря чему можно использовать ее поля. К примеру, требуется решение такой задачи: "Необходимо, чтобы при копировании заявки, например, с номером 1000 создавалась заявка с номером 1000/1, если копируем второй раз, то с номером 1000/2". В итоге получаем такой фрагмент кода:

if ($_REQUEST['copy_line']) // проверка копирования
{ 
  // получаем id оригинальной записи
  $orig_line_id = intval($_REQUEST['copy_line']);
  // получаем саму оригинальную запись
  $orig_line = data_select_array($table_id, "id=",$orig_line_id); 
  // получаем новый номер: "оригинальный номер/1"
  $new_number = $orig_line['f111']."/1";
  // присваем следующий номер, если уже есть такой
  for ($i = 2; data_select_array($table_id, "f111='",$new_number,"'"); $i++)
  { 
    $new_number = $orig_line['f111']."/".$i;
  }
  $line['f111'] = $new_number;
}

Подсветка вычисляемых полей

Начиная с версии 2.0.3 появилась возможность выделять цветом поля, заполняемые автоматически. Данная функция доступна в режимах редактирования и добавления записи.

photo

Для этого необходимо отметить опцию «Подсветка вычисляемых полей» в свойствах нужной таблицы.

photo

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

photo

Поля в подтаблице, заполняемые вычислениями, также выделяются цветом.

photo

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

Использование переменной $user

Иногда появляется необходимость использования данных текущего пользователя в вычислениях. Для этого необходимо использовать переменную $user, являющуюся массивом. Ниже приведено соответствие переменных и значений, которым они соответствуют:

$user['login'] - Логин пользователя;
$user['password']- Пароль пользователя. Стоит учесть, что пароль находится в хешированном виде;
$user['fio'] - ФИО пользователя;
$user['e_mail'] - E-mail пользователя;
$user['phone'] - Телефон пользователя (указывается в поле СМС настроек пользователя);
$user['group_id'] - Группа доступа пользователя;
$user['lang'] - Установленный язык пользователя;
$user['time_zone'] - Часовой пояс пользователя;
$user['last_time'] - Время последнего логина в программу;
$user['last_ip'] - IP с которого в последний раз подключался пользователь.

Уведомления после важных действий

В программе "Клиентская база" имеется функционал уведомлений после важных действий, например, сохранения/удаления записей, запуска рассылки.

photo

Для вызова подобных уведомлений в вычислениях можно использовать функцию display_notification($mess, $type), где первым параметром передается сообщение, а вторым тип: 1 - зеленые, 2 - красные, 3 — желтые.

Отключить все уведомления после важных действий можно в настройках пользователя.

Обновление кода вычислений для корректной работы с версией 2.0.8 и выше

В связи прекращением поддержки модуля MySQL в новых версиях PHP, был произведен переход на модуль MySQLi. Если после обновления программы у Вас возникли проблемы с работой некоторых вычислений, внесите изменения в них согласно следующей инструкции. 

1. Подключитесь к базе данных, используемых вашей программы. Это можно сделать как с помощью своих программ для работы с базой данных (phpmyadmin, adminer), так и с помощью встроенного скрипта edit_sql. Если Вы планируете использовать встроенных скрипт, то просто наберите в адресной строке браузера *адрес программы*/edit_sql.php, где вместо *адрес программы* укажите соответствующее значение.

photo

2. Для предварительной оценки количества записей выполните следующие запросы. Сделать запросы можно, перейдя в раздел SQL запрос и выполнив запросы следующего вида

SELECT COUNT(*) FROM `cb_calc` WHERE `calculate` LIKE '%mysql_%';

SELECT COUNT(*) FROM `cb_cron` WHERE `command` LIKE '%mysql_%';

SELECT COUNT(*) FROM `cb_reports` WHERE `code` LIKE '%mysql_%';

Важно: Префикс таблицы базы данных (в примере установлен префикс "cb_") необходимо поменять на тот, который используется в Вашей программе

photo photo

3. Если записи нашлись, то стоит внести в них изменения. Для этого отберем записи в которых нужно внести изменения. Сделать это можно с помощью запросов

Таблица calc поле calculate - SELECT * FROM `cb_calc` WHERE `calculate` LIKE '%mysql_%';

Таблица cron поле command - SELECT * FROM `cb_cron` WHERE `command` LIKE '%mysql_%';

Таблица reports поле code - SELECT * FROM `cb_reports` WHERE `code` LIKE '%mysql_%';

photo

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

photo 

Список соответствия функций:

Обычные функции Функции программы
mysql_query sql_query
mysql_insert_id sql_insert_id
mysql_fetch_assoc sql_fetch_assoc
mysql_error sql_error
mysql_close sql_close
mysql_fetch_array sql_fetch_array
mysql_fetch_row sql_fetch_row
mysql_num_rows sql_num_rows
mysql_numrows sql_num_rows
mysql_free_result sql_free_result
mysql_real_escape_string sql_real_escape_string
mysql_escape_string sql_real_escape_string
mysql_affected_rows sql_affected_rows

Обычные функции

photo

Функции программы

photo

5. После внесения изменений нажмите на кнопку "Сохранить".

Данная документация написана для версии 1.9.5 и выше. Описание вычислений для более ранних версий вы можете найти в соответствующих разделах:

Вычисления для версий программы ниже 1.9.5

Примеры вычислений для версий программы ниже 1.9.5

При переходе с более ранних версий на версию 1.9.5 все вычисления, которые были внесены ранее, будут автоматически конвертированы.

Смотрите также:

Рекомендации по оформлению PHP кода

Подсветка вычисляемых полей

Часто задаваемые вопросы

 



+ сегодня

компаний проявили интерес к нашему продукту!
Узнайте, почему.

  • компания
  • компании
  • компаний
  • выбрала
  • выбрали
  • выбрали

Создание аккаунтов временно приостановлено!

По данному функционалу ведутся технические работы, будем рады Вас видеть через некоторое время

Объедините всю информацию
компании в единой базе

Подключайте сотрудников
и управляйте их доступом

Создавайте собственные
таблицы и отчеты

Выписывайте счета
и создавайте собственные
шаблоны документов

Проводите персонализированные
E-mail и SMS рассылки

Создавайте собственные
напоминания

Ведите учет событий
в календаре

Не волнуйтесь о безопасности,
все данные защищены

Проводите поиск
по любым параметрам
и фильтрам

Интегрируйтесь с сайтом
и получайте заявки прямо в базу

До начала работы
осталось совсем чуть-чуть!