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

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

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

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

&НаСервере
Процедура СделатьТолькоПросмотрТаблицаНаСервере(Таблица)
	Для каждого Поле Из Таблица.ПодчиненныеЭлементы Цикл
		СделатьТолькоПросмотрПолеНаСервере(Поле);
	КонецЦикла;
КонецПроцедуры
Показать
9. Sashares 34 01.10.21 13:46 Сейчас в теме
(7)Еще для события Очистка стоит сделать подобное действие, как для НачалоВыбора. Т.к. есть команды контекстного меню, есть горячие клавиши, из которых можно выполнить очистку.
8. Dem0 18 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 14 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" Тогда
		Производитель = ТекущаяСтрока.этлПроизводитель;
		ПараметрыФормы = Новый Структура("Ключ", Производитель);
		ОткрытьФорму("Справочник.Производители.Форма.ФормаЭлемента", ПараметрыФормы);
	КонецЕсли;

Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)