В поле табличной части "ТолькоПросмотр = Истина" нужно добавить к нему кнопку открытия

1. Lllypuk 01.10.21 10:41 Сейчас в теме
Всем привет, подскажите есть поле в табличной части у которого установлен "ТолькоПросмотр = Истина" , как к нему добавить кнопку открытия для просмотра? Поле это справочник.
За ранее спасибо за ответы
По теме из базы знаний
Найденные решения
4. EVKash 16 01.10.21 10:58 Сейчас в теме
(1) у ТЧ есть событие выбор. Срабатывает по двойному клику мышкой. Там можно прописать что-то типа.
	Если Поле.Имя = "ИмяПоляТЧ"
		И Элементы.ТЧ.ТекущиеДанные <> Неопределено
		И Элементы.ТЧ.ТолькоПросмотр
		И ЗначениеЗаполнено(Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ) Тогда
		СтандартнаяОбработка = Ложь;
		ПоказатьЗначение(,Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ);
	КонецЕсли; 
Lllypuk; SlavaKron; Sashares; +3 Ответить
17. Lllypuk 01.10.21 21:39 Сейчас в теме
(16) Сделал так, под свои задачи, всем спасибо!
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	НаименованиеПроизводителя = ПолучитьЗначениеРеквизита(ТекущаяСтрока.этлПроизводитель, "Наименование");
	
	Если Поле.Имя = "ТоварыэтлПроизводитель" И НЕ НаименованиеПроизводителя = "No name" Тогда
		Производитель = ТекущаяСтрока.этлПроизводитель;
		ПараметрыФормы = Новый Структура("Ключ", Производитель);
		ОткрытьФорму("Справочник.Производители.Форма.ФормаЭлемента", ПараметрыФормы);
	КонецЕсли;

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. -AI- 01.10.21 11:10 Сейчас в теме
(1) как вариант:
1) у поля:
ТолькоПросмотр = ложь
РежимВыбораИзСписка = истина
2) у таблицы, в событии ПриАктивизацииСтроки
очищать список выбора и вставлять туда только текущее значение

PS у поля РедактированиеТекста = ? - надо пробовать, какое поведение больше нравится

PPS ещё надо запретить очистку
2. provadyuga 99 01.10.21 10:49 Сейчас в теме
В палитре свойств для колонки ТЧ на форме раздел "Использование" свойство "КнопкаОткрытия" = Да.
3. Lllypuk 01.10.21 10:51 Сейчас в теме
(2)Пробовал , не срабатывает
4. EVKash 16 01.10.21 10:58 Сейчас в теме
(1) у ТЧ есть событие выбор. Срабатывает по двойному клику мышкой. Там можно прописать что-то типа.
	Если Поле.Имя = "ИмяПоляТЧ"
		И Элементы.ТЧ.ТекущиеДанные <> Неопределено
		И Элементы.ТЧ.ТолькоПросмотр
		И ЗначениеЗаполнено(Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ) Тогда
		СтандартнаяОбработка = Ложь;
		ПоказатьЗначение(,Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ);
	КонецЕсли; 
Lllypuk; SlavaKron; Sashares; +3 Ответить
6. EVKash 16 01.10.21 11:11 Сейчас в теме
(5) ТолькоПросмотр может стоять у самой формы...
7. VZyryanov 01.10.21 11:23 Сейчас в теме
Программно имитирую "Только просмотр" таблицы / поля:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
		
	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
	
	СделатьТолькоПросмотрТаблицаНаСервере(Элементы.МояТаблица);
КонецПроцедуры

&НаКлиенте
Процедура НачалоВыбораОтказ(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
КонецПроцедуры

&НаСервере
Процедура СделатьТолькоПросмотрПолеНаСервере(Поле)
	Если НЕ Поле.Вид=ВидПоляФормы.ПолеВвода Тогда
		Возврат;
	КонецЕсли;
	Поле.КнопкаВыпадающегоСписка=Ложь;
	Поле.КнопкаВыбора=Ложь;
	Поле.КнопкаОчистки=Ложь;
	Поле.КнопкаРегулирования=Ложь;
	//Поле.КнопкаОткрытия=Истина;
	Поле.КнопкаОткрытия=Неопределено; //Авто
	Поле.КнопкаСоздания=Ложь;
	Поле.РедактированиеТекста=Ложь;
	Поле.БыстрыйВыбор=Ложь;
	Поле.ИсторияВыбораПриВводе=ИсторияВыбораПриВводе.НеИспользовать;
	Поле.УстановитьДействие("НачалоВыбора", "НачалоВыбораОтказ");
КонецПроцедуры

&НаСервере
Процедура СделатьТолькоПросмотрТаблицаНаСервере(Таблица)
	Для каждого Поле Из Таблица.ПодчиненныеЭлементы Цикл
		СделатьТолькоПросмотрПолеНаСервере(Поле);
	КонецЦикла;
КонецПроцедуры
Показать
9. Sashares 33 01.10.21 13:46 Сейчас в теме
(7)Еще для события Очистка стоит сделать подобное действие, как для НачалоВыбора. Т.к. есть команды контекстного меню, есть горячие клавиши, из которых можно выполнить очистку.
8. Dem0 01.10.21 12:38 Сейчас в теме
Оставить ТолькоПросмотр = Истина;
А список и обработку выбора заколхозить на свою кнопку?
10. FatPanzer 01.10.21 14:01 Сейчас в теме
Запретите все кнопки кроме кнопки открытия. И редактирование текста отключить.
11. SlavaKron 01.10.21 14:09 Сейчас в теме
Если задача открыть значение ячейки, почему бы просто не привязаться к событию Выбор таблицы формы. На основе текущего имени поля (колонки) таблицы открывать значение через ПоказатьЗначение.
12. SlavaKron 01.10.21 16:17 Сейчас в теме
Извиняюсь, не читал комментарии. Ответ уже был дан в (4).
13. Lllypuk 01.10.21 17:45 Сейчас в теме
(12) что-то не выходит как 4 , не отрабатывает(
14. EVKash 16 01.10.21 19:05 Сейчас в теме
(13) Если ТолькоПросмотр указан для всей формы и скопировали код как есть, то вместо
И Элементы.ТЧ.ТолькоПросмотр
надо
И (Элементы.ТЧ.ТолькоПросмотр Или ЭтаФорма.ТолькоПросмотр)
15. Lllypuk 01.10.21 19:17 Сейчас в теме
(14) у меня ТолькоПросмотр делается условным оформлением тут:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

        Элемент2 = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента2 = Элемент2.Поля.Элементы.Добавить();
        ПолеЭлемента2.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыэтлПроизводитель.Имя);
	
	СписокОтбора2 = Новый СписокЗначений;
	СписокОтбора2.Добавить(Справочники.Производители.ПустаяСсылка());
	СписокОтбора2.Добавить(Справочники.Производители.НайтиПоНаименованию("No name"));
	
	ОтборЭлемента2 = Элемент2.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.этлПроизводитель");
	ОтборЭлемента2.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
	ОтборЭлемента2.ПравоеЗначение = СписокОтбора2;

КонецПроцедуры

Показать
16. Lllypuk 01.10.21 19:32 Сейчас в теме
(14) Переделал под себя, ошибок не выдает но ничего не происходит

Если Поле.Имя = "ТоварыэтлПроизводитель"
		И Элементы.Товары.ТекущиеДанные <> Неопределено
		И (Элементы.Товары.ТолькоПросмотр ИЛИ ЭтаФорма.ТолькоПросмотр)
		И ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ТоварыэтлПроизводитель) Тогда
		СтандартнаяОбработка = Ложь;
	    ПоказатьЗначение(,Элементы.Товары.ТекущиеДанные.ТоварыэтлПроизводитель);
	КонецЕсли; 
Показать
17. Lllypuk 01.10.21 21:39 Сейчас в теме
(16) Сделал так, под свои задачи, всем спасибо!
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	НаименованиеПроизводителя = ПолучитьЗначениеРеквизита(ТекущаяСтрока.этлПроизводитель, "Наименование");
	
	Если Поле.Имя = "ТоварыэтлПроизводитель" И НЕ НаименованиеПроизводителя = "No name" Тогда
		Производитель = ТекущаяСтрока.этлПроизводитель;
		ПараметрыФормы = Новый Структура("Ключ", Производитель);
		ОткрытьФорму("Справочник.Производители.Форма.ФормаЭлемента", ПараметрыФормы);
	КонецЕсли;

Показать
Оставьте свое сообщение

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