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


Запрет изменения подтаблицы по статусу родительской


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

#1 Игорь Белов

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Город:СПб

Отправлено 20 Апрель 2016 - 19:24

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

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

Для родительской таблицы работает настройка правила доступа с условием по типу статуса.

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

Однако с кнопкой "Добавить" в подтаблице справиться не удалось. Остается вариант прятать ее по условию из JavaScript.

Подскажите, может быть есть возможность сделать как-то проще? Или как кнопку JS спрятать? (я в нем не очень силен)

Всем спасибо!

#2 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 21 Апрель 2016 - 14:19

Просмотр сообщенияИгорь Белов (20 Апрель 2016 - 19:24) писал:

Однако с кнопкой "Добавить" в подтаблице справиться не удалось. Остается вариант прятать ее по условию из JavaScript.
Подскажите, может быть есть возможность сделать как-то проще? Или как кнопку JS спрятать? (я в нем не очень силен)
JS для поля Статус в родительской таблице
$(document).ready(function(){
  if(document.getElementById("value{$one_field.id}").value != "Черновик") {
		var sub_add_w = $(".sub_add_new_line");
		if(sub_add_w != null) {
		  sub_add_w.hide();
		  $("span[class^=sub_add_new_line_top]").hide();
		}
  }
});

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#3 Игорь Белов

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Город:СПб

Отправлено 29 Апрель 2016 - 10:16

Добавил в поле JS для реквизита Статус, консоль валит ошибку "Cannot read property 'value' of null". У пользователя нет прав на изменение поля статус, поэтому скорее всего , этот параметр на клиента через "document" не передается.

Может есть возможность передать статус как-то принудительно?

#4 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 29 Апрель 2016 - 11:21

Просмотр сообщенияИгорь Белов (29 Апрель 2016 - 10:16) писал:

Добавил в поле JS для реквизита Статус, консоль валит ошибку "Cannot read property 'value' of null". У пользователя нет прав на изменение поля статус, поэтому скорее всего , этот параметр на клиента через "document" не передается.
Может есть возможность передать статус как-то принудительно?
Проблема с value действительно существует. Просил несколько лет назад сделать так, чтобы значения всех отображаемых полей были доступны. Целая дискуссия была.Подробно объяснял зачем это нужно. Вроде даже поняли... Бесполезно.
Попробуйте такой костыль:
$(document).ready(function(){
  if($('#view_cell_$one_field.id').text() != "Черновик") {
				var sub_add_w = $(".sub_add_new_line");
				if(sub_add_w != null) {
				  sub_add_w.hide();
				  $("span[class^=sub_add_new_line_top]").hide();
				}
  }
});

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#5 Игорь Белов

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений
  • Пол:Мужчина
  • Город:СПб

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

Спасибо за подсказку, правдаответа не дождался и сделал по своему, может кому пригодится.

В PHP анализирую статус и передаю его эхом в виде хиден инпута с нужным значением. Далее поднимаю в JS значение инпута через GetElementById и все ок.

эт PHP
if ($line['Статус']['ID']!='1'){
	echo ' <input type="hidden" id="flagHideAdd" value="1">';
} else {
	echo ' <input type="hidden" id="flagHideAdd" value="0">';
}

эт JS
$(document).ready(function(){
  if (document.getElementById("flagHideAdd").value == "1") {
				var sub_add_w = $(".sub_add_new_line");
				if(sub_add_w != null) {
				  sub_add_w.hide();
				  $("span[class^=sub_add_new_line_top]").hide();
				}
  };
});

Сообщение отредактировал Игорь Белов: 03 Май 2016 - 14:11






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

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