Доп. действия

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

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

Чтобы добавить "Доп.действие" в нужную нам таблицу, необходимо зайти в "Настройки" — "Конфигурация" — "Таблицы" — и зайти по ссылке "Доп. действия" в строке с нужной таблицей.

Далее нажимаем кноку "Добавить доп. действие"

Заполняем все поля "Доп. действия"

 

Краткая инструкция по заполнению полей:

Название доп. действия — название которое потом будет отображаться на кнопке и в выпадающем списке. Должно быть не более 20 символов

Расположение — выбираем порядок доп. действия

Тип. доп. действия 

     в текущем окне — ставим в случае если нам не требуется ввод дополнительных данных

     в всплывающем окне  — ставим в случае если нам требуется ввод дополнительных данных, например, какое то число или строка

Вычисления — в данном поле вставляем сам код вычисления. Код пишется по аналогии с вычислениями в таблицах.

 

Пример 1. Есть таблица "Задания" и нам необходимо чтобы по нажатию кнопки "Принять" (код которой мы опишем ниже) во всех строках выделенные галочками поле "Принято" менялось свое значение на "Да", а в поле "Дата выполнения" проставлялись текущие дата и время.

Для описанного выше примера нам потребуется вставить следующий код:

$array["Принято"]='Да'; // заносим нужные нам значения в поля
$array["Дата выполнения"]= date("Y-m-d H:i:s"); // заносим нужные нам значения в поля
update_table($array, "Задания", "id={ID}"); // обновляем данные нужных нам полей в текущей строке

Сохраняем данное доп. действие и (ВАЖНО) разрешаем доступ для тех групп, которым разрешено пользоваться данной функцией.

После этого у всех пользователей, у которых разрешен доступ появятся следующие кнопки:

 

Выпадающий список "Дополнительно" (со списком всех доп. действий) в таблице "Задания"

и кнопка "Принять " внутри каждой записи, под кнопками "Редактировать" и "Вернутсься в таблицу"

Теперь принять задание (или сразу несколько заданий) можно будет из общей таблицы, выделив галочками нужные задания и нажав кнопку - "Дополнительно" — "Принять". Либо внутри каждой записи, нажав на аналогичную кнопку.

 

 

Усложним пример 1 и кроме всех описанных в нем действий, по нажатию кнопки "Принять с оценкой" должна еще проставляться оценка в поле "Оценка", которую пользователь должен вводить во всплывающем окне.

Пример 2. Есть таблица "Задания" и нам необходимо чтобы по нажатию кнопки "Принять" (код которой мы опишем ниже) во всех строках выделенные галочками поле "Принято" менялось свое значение на "Да", а в поле "Дата выполнения" проставлялись текущие дата и время. Также в поле "Оценка" должно подставляться значение из всплывающего окна.

В этом случае "Тип доп. действия" ставим "Во всплывающем окне" и пишем следующий код:

if (isset($_REQUEST["rating"]))
   {
     $array["Оценка"]=$_REQUEST["rating"];
     // производим нужные нам действия с необходимыми полями
     $array["Принято"]='Да';
     $array["Дата выполнения"]= date("Y-m-d H:i:s");
     update_table($array, "Задания", "id={ID}"); // обновляем данные нужных нам полей в текущей строке
     echo "n<script>";
     echo "n window.opener.location.reload(1);"; // Перезагружаем родительское окно
     echo "n window.close()"; // Закрываем текущее
     echo "n</script>";
   }
echo "<form method='get'>";
echo "nВведите оценку :";
echo "n<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "n<input type='hidden' name='line_id' value='{ID}'>";  // Значение строки
echo "n<input type='text'   name='rating' value='5'>";  // Передаем оценку
echo "n<input type='submit' value='Оценить'>";
echo "</form>";

Дополнительные примеры доп.действий

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

$nakl = data_table("Счета","id={ID}"); // берем все данные текущей строки и забиваем их массив
$array["Оплачено"]=$nakl["Остаток"]; // производим нужные нам действия с необходимыми полями
$array["Дата платежа"]=date("Y-m-d H:i:s");// производим нужные нам действия с необходимыми полями
update_table($array, "Счета", "id={ID}"); // обновляем данные нужных нам полей в текущей строке записывая в них значения из массива $array

ПРИМЕЧАНИЕ К ПРИМЕРУ.

Вместо строки

$array["Оплачено"]=$nakl["Остаток"];

можно написать

$array["Оплачено"]=$array["Оплачено"]+$nakl["Остаток"];

в этом случае если вы случайно нажмете кнопку "Принять" еще раз, поле "Оплачено" не обнулиться.

Есть вопросы? Задайте их на форуме и мы постараемся ответить Вам как можно быстрее!

Copyright © 2008 — 2012