Условие для поля табличной части

1. user1290312 29.10.19 09:54 Сейчас в теме
Доброе утро всем.
Нужно установить вот такое условие в табличной части. Тыкаюсь уже 2 часа и все никак.
Устанавливал составной тип и событие ПриИзменеии. Все равно дает право выбора справочника
В какую сторону рыть?)
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
8. dhurricane 29.10.19 11:01 Сейчас в теме
(1) Используйте событие "ПриАктивизацииСтроки". Например:
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
	
	ТекущаяСтрока = Элементы.Мероприятия.ТекущиеДанные;
	Если ТекущаяСтрока = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	
	Если ТекущаяСтрока.ОтветственностьИсполнителя Тогда
		ТипОтветственного = Новый ОписаниеТипов("СправочникСсылка.Пользователи");
	Иначе
		ТипОтветственного = Новый ОписаниеТипов("СправочникСсылка.КонтактныеЛицаКонтрагентов");
	КонецЕсли; 
	
	Элементы.МероприятияОтветственный.ОграничениеТипа = ТипОтветственного;
	
КонецПроцедуры
Показать
sys1c; user1290312; +2 Ответить
12. dhurricane 29.10.19 11:21 Сейчас в теме
(11) Не совсем понял Ваш вопрос.

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

Чтобы ограничить тип значений, выбираемых пользователем, одним справочником, используется свойство колонки (поля формы) "ОграничениеТипа". Оно накладывает ограничение на всю колонку. При этом оно не меняет значение самого реквизита, а влияет только на выбор.

Т.к. в разных строках таблицы признак, отвечающий за тип значения Ответственного, может быть разным, необходимо "переключать" ограничение типа значений всей колонки при навигации пользователем по таблице. Т.е. использовать обработчик события активизации строки.
user1290312; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 29.10.19 09:56 Сейчас в теме
(1) Показывайте код как делали и не получалось.
5. uk09 29.10.19 10:21 Сейчас в теме
(1)
Все равно дает право выбора справочника

Добрый день!

А , Вы - как хотите сделать? Чтобы, после выбора, нельзя было тип изменить ?
8. dhurricane 29.10.19 11:01 Сейчас в теме
(1) Используйте событие "ПриАктивизацииСтроки". Например:
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
	
	ТекущаяСтрока = Элементы.Мероприятия.ТекущиеДанные;
	Если ТекущаяСтрока = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	
	Если ТекущаяСтрока.ОтветственностьИсполнителя Тогда
		ТипОтветственного = Новый ОписаниеТипов("СправочникСсылка.Пользователи");
	Иначе
		ТипОтветственного = Новый ОписаниеТипов("СправочникСсылка.КонтактныеЛицаКонтрагентов");
	КонецЕсли; 
	
	Элементы.МероприятияОтветственный.ОграничениеТипа = ТипОтветственного;
	
КонецПроцедуры
Показать
sys1c; user1290312; +2 Ответить
9. AlexandrSmith 69 29.10.19 11:07 Сейчас в теме
(8)

Элементы.МероприятияОтветственный.ОграничениеТипа
- что за поле
10. dhurricane 29.10.19 11:11 Сейчас в теме
(9) Ну я предположил, что именно так называется колонка (элемент), связанная с реквизитом "Ответственный" табличной части "Мероприятия".
user1290312; +1 Ответить
11. AlexandrSmith 69 29.10.19 11:14 Сейчас в теме
(10) Я ни в коем случае не прикапываюсь,

Я просто не пойму, какой тип объекта будет в этом поле.

Изначально в задаче не совсем понятно, где и что автор предполагает хранить, а ваше поле для меня стало откровением.

Просто, если не очень вас затрудню, расскажите какое именно значение типа поля надо использовать в таких случаях.
12. dhurricane 29.10.19 11:21 Сейчас в теме
(11) Не совсем понял Ваш вопрос.

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

Чтобы ограничить тип значений, выбираемых пользователем, одним справочником, используется свойство колонки (поля формы) "ОграничениеТипа". Оно накладывает ограничение на всю колонку. При этом оно не меняет значение самого реквизита, а влияет только на выбор.

Т.к. в разных строках таблицы признак, отвечающий за тип значения Ответственного, может быть разным, необходимо "переключать" ограничение типа значений всей колонки при навигации пользователем по таблице. Т.е. использовать обработчик события активизации строки.
user1290312; +1 Ответить
13. AlexandrSmith 69 29.10.19 11:31 Сейчас в теме
(12) Все полностью разобрал ваш код и мысль вопросов не имею
3. user1290312 29.10.19 10:05 Сейчас в теме
Если Элементы.Мероприятия.ТекущиеДанные.ОтветственностьИсполнителя = Ложь Тогда
		Объект.Мероприятия.Ответственный =  Справочники.КонтактныеЛицаКонтрагентов;
	КонецЕсли;
6. spacecraft 29.10.19 10:32 Сейчас в теме
(3) программно тип реквизита объекта изменять нельзя. Это метаданные объекта, а не данные.
Для обычного элемента поля ввода можно было бы заменить допустимые типы. Но для таблицы невозможно по условию так делать. Изменение будет для всей колонки.
Наиболее приемлемым вариантом остается: в момент начала выбора ответственного, анализировать условие и программно открывать ту, или иную форму выбора.
user1290312; +1 Ответить
4. fromlion 173 29.10.19 10:21 Сейчас в теме
Отключите стандартную обработку при начале выбора и сами пропишите выбор нужного справочника в зависимости от условий.
7. rusdenol 29.10.19 10:37 Сейчас в теме
Можно попробовать для элемента "Ответственный" снять галочку "Выбирать тип" и в зависимости от галочки "ОтветственностьИсполнителя" присваивать пустую ссылку нужного справочника. Не знаю как для табличной части, но для обычных реквизитов такое прокатывает.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот