

Вычисления php и яваскрипт в подчиненных таблицах.
#1
Отправлено 19 Октябрь 2012 - 11:43
#2
Отправлено 19 Октябрь 2012 - 11:49
#3
Отправлено 19 Октябрь 2012 - 12:22
Как ее можно достичь?
И еще, если заполнять подчиненную таблицу из родительской, то записи можно добавлять, даже если поля с отмеченной галочкой "обязательно к заполнению" пусты. Я так понимаю единственный выход проверять на пхп?
Сообщение отредактировал wondertalik: 19 Октябрь 2012 - 13:13
#4
Отправлено 19 Октябрь 2012 - 13:52
Цитата
Теоретически - путем создания своего элемента управления. Конкретный алгоритм я понятное дело расписать тут не могу - т.к. это выходит за рамки техподдержки и потребует уйму времени. Примерное направление есть в текущей стандартной конфигурации, в позициях счетов - там как раз поле номенклатуры формируется динамически, хотя и по иной схеме.
#5
Отправлено 19 Октябрь 2012 - 13:54
Цитата
Это связано с особенностью работы подтаблиц - тем что запись сразу сохраняется при добавлении, еще до заполнения полей. Возможно, в дальнейшем решим эту проблему.
#6
Отправлено 19 Октябрь 2012 - 14:11
CbCoder (19 Октябрь 2012 - 13:54) писал:
#7
Отправлено 19 Октябрь 2012 - 14:13
#8
Отправлено 19 Октябрь 2012 - 14:20
CbCoder (19 Октябрь 2012 - 13:52) писал:
#9
Отправлено 19 Октябрь 2012 - 14:25
Цитата
#10
Отправлено 25 Октябрь 2012 - 01:23
//Определяем к какому наименованию относится текущая строка $sqlQuery = "SELECT f15 as IDnamePozition FROM ".DATA_TABLE."1 WHERE `id`=".$line['id']." AND status=0 LIMIT 1"; $result = sql_query($sqlQuery) or user_error(mysql_error()." <br> ".$sqlQuery." <br> ", E_USER_ERROR); $row = mysql_fetch_assoc($result); //Определяем количество позиций данного наименования на складе $sqlQuery = "SELECT f32 countName FROM ".DATA_TABLE."3 WHERE status=0 AND `id`='".$row['IDnamePozition']."' LIMIT 1"; $result = sql_query($sqlQuery) or user_error(mysql_error()." <br> ".$sqlQuery." <br> ", E_USER_ERROR); $rw = mysql_fetch_assoc($result); //Определяем такие же позиции в текущем акте, //определяем возможный остаток позиций на складе $sqlQuery = "SELECT * FROM ".DATA_TABLE."1 WHERE status=0 AND `f15`=".$row['IDnamePozition']; $result = sql_query($sqlQuery) or user_error(mysql_error()." <br> ".$sqlQuery." <br> ", E_USER_ERROR); if(($nn = mysql_num_rows($result)) > 1) { while($rowPozitionRasxod = mysql_fetch_assoc($result)) { //Отнимаем от общего количества на складе количество указанных позиций в текущем акте расходе $rw['countName'] -= $rowPozitionRasxod['f18']; } if($rw['countName'] < 0) $line['Количество'] = 0; else $line['Количество'] = $rw['countName']; } else { //Если существует только одна позиция на складе if($line['Количество'] > $rw['countName']) $line['Количество'] = $rw['countName']; }
После добавления второй записи выборка того же наименования нечего не дает. Поля больше не заполняются автоматом. Если коментирую этот участок:
if($rw['countName'] < 0) $line['Количество'] = 0; else $line['Количество'] = $rw['countName'];или меняю Количество на состояние, то все работает. В чем проблема?
Сообщение отредактировал wondertalik: 25 Октябрь 2012 - 13:19
#11
Отправлено 25 Октябрь 2012 - 14:50
#12
Отправлено 25 Октябрь 2012 - 15:01
#13
Отправлено 25 Октябрь 2012 - 15:44
CbCoder (25 Октябрь 2012 - 15:01) писал:
$line['Ед. изм.'] = $line['Наименование']['raw']; $line['Количество'] = $line['Наименование']['Количество'];И что содержит в себе $line['Наименование']['raw']?
Сообщение отредактировал wondertalik: 25 Октябрь 2012 - 16:14
#14
Отправлено 25 Октябрь 2012 - 15:55
В порядке очередности.
сработает ли вычисление для поля Количество, которое вычисляется при условии изменения этого поля
Должно сработать, если Наименование - это поле связи и в связанной таблице есть поле Количество.
И что содержит в себе $line['Наименование']['raw']?
http://clientbase.ru...indpost&p=15082
#15
Отправлено 25 Октябрь 2012 - 16:14
$line['Ед. изм.'] = $line['Наименование']['raw']; $line['Количество'] = $line['Наименование']['Количество'];Вычисление работает. Далее добавляю вычисление, которое срабатывает при изменении поля Количество:
$line['Количество']=5;Работает. Меняю вычисление на что-то динамическое типо:
$line['Количество']=$line['Количество'] - 10;Все. Не работает. Отсюда возникают вопросы. Что делается в подчиненных таблицах, когда заполняется массив $line? После нажатия кнопки сохранить или как-то по другому?
Если я изменю поле Количество, но не нажму сохранить и перейду куда-то в другую таблицу, запись останется прежней или уже новое значение?
CbCoder (25 Октябрь 2012 - 15:55) писал:
Должно сработать, если Наименование - это поле связи и в связанной таблице есть поле Количество.
Сообщение отредактировал wondertalik: 25 Октябрь 2012 - 16:19
#16
Отправлено 25 Октябрь 2012 - 16:52
Цитата
$line['Количество']=$line['Количество'] - 10;Все. Не работает.
Цитата
Цитата
#17
Отправлено 25 Октябрь 2012 - 17:23
#18
Отправлено 01 Ноябрь 2012 - 11:03
CbCoder (19 Октябрь 2012 - 14:25) писал:
Разобрался. Все работает. Теперь стала задача сделать строки в подчиненной таблицы только на чтение. Для этого я использовал расширенные права доступа. И вот здесь возникла проблема. Итак если стоят права (СКРИН1, СКРИН2), то после смены поля тип(ввод или номенклатура) наименование меняется на поле обычного текстового ввода или выпадающего списка. При смене пользователя "кто добавил" на администратора например, поля тип и наименования все так же можно редактировать.
Меняю с помощью расширенных прав права(СКРИН4 И СКРИН5). Теоретически должно работать, но смена значения типа не меняет наименование, как было до установки расширенных прав.
#19
Отправлено 01 Ноябрь 2012 - 11:28
#20
Отправлено 15 Ноябрь 2012 - 16:01
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных