Начиная с версии 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["Остаток"]; в этом случае если вы случайно нажмете кнопку "Принять" еще раз, поле "Оплачено" не обнулиться.

