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


Вопрос по вычислениям


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

#21 Mult

    Новичок

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

Отправлено 24 Апрель 2012 - 15:38

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

#22 CbCoder

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

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

Отправлено 24 Апрель 2012 - 15:49

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

#23 Mult

    Новичок

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

Отправлено 24 Апрель 2012 - 15:50

Спасибо!

#24 Mult

    Новичок

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

Отправлено 24 Апрель 2012 - 15:53

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

#25 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 02 Май 2012 - 21:45

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

Сообщение отредактировал teacsrem: 02 Май 2012 - 23:05


#26 Гость_Roman_*

  • Гости

Отправлено 03 Май 2012 - 08:26

Выставьте расширенные права на те поля, которые потом надо скрыть от редактирования. По умолчанию в этом поле находится пользователь, который может редатировать поля. После выполнения доп. действия, необходимо, чтоб пользователь в этом поле сменился, например, на администратора. Тогда права на поля перестанут работать и отредактировать их будет нельзя. Скрыть кнопку доп. действия можно с помощью JavaScript
document.getElementById("user_button_div_15").style.display = 'none';
document.getElementById("e_user_button_div_15").style.display = 'none';
, поменяв 15 на id вашего доп. действия.

#27 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 03 Май 2012 - 08:44

Расширенные права на чтение или запись?
Кнопка просто скрывается, действие, которое на нее назначено при этом не выполняется.

#28 Гость_Roman_*

  • Гости

Отправлено 03 Май 2012 - 09:02

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

#29 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 03 Май 2012 - 09:13

Вот код, который выполняется в доп. действии по нажатию на кнопку. Куда можно встроить скрытие кнопки?
При наличии файла меняется общий статус, ставиться дата, и дается команда на отправку в следующий отдел.
if ($line['Файл']!="")
{
  $line['Статус'] = "Выполнен";
  $line['Дата'] = date("Y-m-d 00:00:00");
  $line['Отправлено в отдел 2'] = 'Да';
}

Сообщение отредактировал teacsrem: 03 Май 2012 - 09:14


#30 Гость_Roman_*

  • Гости

Отправлено 03 Май 2012 - 09:21

Например, поле статус имеет номер 222. Тогда код Javascript будет выглядеть примерно так:
if (document.getElementById('value222').value == 'Выполнен')
  {
	document.getElementById("user_button_div_15").style.display = 'none';
	document.getElementById("e_user_button_div_15").style.display = 'none';
  }
Это при условии, что поле "Cтатус" доступно для редаткирования. Иначе первую строчку следует поменять на
if (document.getElementById('view_cell_222').innerHTML == 'Выполнен')


#31 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 03 Май 2012 - 10:19

Например, поле статус имеет номер 222. Тогда код Javascript будет выглядеть примерно так:
if (document.getElementById('value222').value == 'Выполнен')
  {
	    document.getElementById("user_button_div_15").style.display = 'none';
	    document.getElementById("e_user_button_div_15").style.display = 'none';
  }
Это при условии, что поле "Cтатус" доступно для редаткирования. Иначе первую строчку следует поменять на
if (document.getElementById('view_cell_222').innerHTML == 'Выполнен')
Действия не происходит. Кнопка не скрывается.
Пробовал и верхний и нижний вариант.

#32 Гость_Roman_*

  • Гости

Отправлено 03 Май 2012 - 10:27

Попробуйте вызвать код после загрузки страницы, возможно просто код сработал до загрузки элементов.
$(document).ready(function(){
  if (document.getElementById('value222').value == 'Выполнен')
    {
	  document.getElementById("user_button_div_15").style.display = 'none';
	  document.getElementById("e_user_button_div_15").style.display = 'none';
    }
});

или

$(document).ready(function(){
  if (document.getElementById('view_cell_222').innerHTML == 'Выполнен')
    {
	  document.getElementById("user_button_div_15").style.display = 'none';
	  document.getElementById("e_user_button_div_15").style.display = 'none';
    }
});


#33 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 03 Май 2012 - 10:54

Может быть я что-то не так делаю, но не получается даже нажать на кнопку после добавления JavaScript кода в "Доп. действия таблицы".
Убираю код скрипта, все работает отлично, но только кнопки остаются на месте, а нужно, чтобы исчезли =(

Сообщение отредактировал teacsrem: 03 Май 2012 - 10:57


#34 Гость_Roman_*

  • Гости

Отправлено 03 Май 2012 - 11:01

Вставьте Javascript в любое поле, а не в доп. действие.

#35 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 03 Май 2012 - 16:44

Спасибо, очень помогло!

#36 teacs

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

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Май 2012 - 16:44

Подскажите пожалуйста скрипт или вычисление.
В таблице есть группа, в группе 10 полей.
Поля с 1 по 7 заполняет пользователь 1.
В 8 и 9 полях я вношу изменения, а в 10 поле (тип список) меняю значение с "нет" на "да".
И хотелось бы, чтобы после замены значения в 10 поле к этим полям был доступ для редактирования только у администратора, а у всех остальных пользователей (их 10) можно было только читать информацию.

Сообщение отредактировал teacsrem: 04 Май 2012 - 16:45


#37 Гость_Roman_*

  • Гости

Отправлено 05 Май 2012 - 08:29

Опять же следует воспользоваться механизмом расширенных прав и написать небольшое вычисление.
Например, в таблице есть поле "Пользователь", которое по умолчанию равно текущему пользователю и есть поле "Статус", в котором меняются значения с "Нет" на "Да".
if ($line['Статус'] == 'Да') $line['Пользователь'] = 1;
Данное вычисление должно срабатывать по условию "Изменение поля "Статус"".

#38 contrans

    Новичок

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

Отправлено 15 Май 2012 - 15:56

Добрый день!

Нам необходимо в поле одной таблицы выбрать максимальное значение из нескольких полей другой таблицы
написали вычисление
$nakl = data_table("Учет картриджей","id=$ID");
$IDSTR=$nakl["ID"];
//
$sqlQuery = "SELECT max(f1259) as max FROM ".DATA_TABLE."85 WHERE f1259>0 AND f1257=".$IDSTR;
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
//$nakl = data_table("Учет картриджей","id=$ID");
$line['Пробег'] = $row('max');

Но происходит ошибка

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /usr/share/cb/include/functions1.php(240) : eval()'d code on line 6 Fatal error: Function name must be a string in /usr/share/cb/include/functions1.php(240) : eval()'d code on line 8

Не подскажите в чем дело

#39 CbCoder

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

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

Отправлено 15 Май 2012 - 16:04

$line['Пробег'] = $row('max');
Неверные скобки.

Второе, в версии 1.9.5 не нужно использовать data_table для извлечения текущей записи, используйте сразу массив $line:
$IDSTR=$line["ID"];
Это уже не ошибка, а рекомендация, для повышения быстродействия и читабельности кода. Очевидно, вы переходили с 1.9.4.

#40 contrans

    Новичок

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

Отправлено 15 Май 2012 - 16:50

Спасибо за ответ, но теперь другая ошибка

boolean given in /usr/share/cb/include/functions1.php(240) : eval()'d code on line 6 Warning: mysql_fetch_array() expects parameter 1 to be resource

не можем разобраться





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

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