Всем привет, подскажите есть поле в табличной части у которого установлен "ТолькоПросмотр = Истина" , как к нему добавить кнопку открытия для просмотра? Поле это справочник.
За ранее спасибо за ответы
---
у ТЧ есть событие выбор. Срабатывает по двойному клику мышкой. Там можно прописать что-то типа.

```1c
    Если Поле.Имя = "ИмяПоляТЧ"
    И Элементы.ТЧ.ТекущиеДанные <> Неопределено
    И Элементы.ТЧ.ТолькоПросмотр
    И ЗначениеЗаполнено(Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ) Тогда
    СтандартнаяОбработка = Ложь;
    ПоказатьЗначение(,Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ);
    КонецЕсли;
```
---
Сделал так, под свои задачи, всем спасибо!

```1c
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    НаименованиеПроизводителя = ПолучитьЗначениеРеквизита(ТекущаяСтрока.этлПроизводитель, "Наименование");

    Если Поле.Имя = "ТоварыэтлПроизводитель" И НЕ НаименованиеПроизводителя = "No name" Тогда
    Производитель = ТекущаяСтрока.этлПроизводитель;
    ПараметрыФормы = Новый Структура("Ключ", Производитель);
    ОткрытьФорму("Справочник.Производители.Форма.ФормаЭлемента", ПараметрыФормы);
    КонецЕсли;
```
---
как вариант:
1) у поля:
ТолькоПросмотр = ложь
РежимВыбораИзСписка = истина
2) у таблицы, в событии ПриАктивизацииСтроки
очищать список выбора и вставлять туда только текущее значение

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

PPS ещё надо запретить очистку
---
В палитре свойств для колонки ТЧ на форме раздел "Использование" свойство "КнопкаОткрытия" = Да.
---
Пробовал , не срабатывает
---
у ТЧ есть событие выбор. Срабатывает по двойному клику мышкой. Там можно прописать что-то типа.

```1c
    Если Поле.Имя = "ИмяПоляТЧ"
    И Элементы.ТЧ.ТекущиеДанные <> Неопределено
    И Элементы.ТЧ.ТолькоПросмотр
    И ЗначениеЗаполнено(Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ) Тогда
    СтандартнаяОбработка = Ложь;
    ПоказатьЗначение(,Элементы.ТЧ.ТекущиеДанные.ИмяПоляТЧ);
    КонецЕсли;
```
---
ТолькоПросмотр может стоять у самой формы...
---
Программно имитирую "Только просмотр" таблицы / поля:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

    // СтандартныеПодсистемы.ВерсионированиеОбъектов
    ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

    СделатьТолькоПросмотрТаблицаНаСервере(Элементы.МояТаблица);
    КонецПроцедуры

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

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

    &НаСервере
    Процедура СделатьТолькоПросмотрТаблицаНаСервере(Таблица)
    Для каждого Поле Из Таблица.ПодчиненныеЭлементы Цикл
    СделатьТолькоПросмотрПолеНаСервере(Поле);
    КонецЦикла;
    КонецПроцедуры
```
---
Еще для события Очистка стоит сделать подобное действие, как для НачалоВыбора. Т.к. есть команды контекстного меню, есть горячие клавиши, из которых можно выполнить очистку.
---
Оставить ТолькоПросмотр = Истина;
А список и обработку выбора заколхозить на свою кнопку?
---
Запретите все кнопки кроме кнопки открытия. И редактирование текста отключить.
---
Если задача открыть значение ячейки, почему бы просто не привязаться к событию Выбор таблицы формы. На основе текущего имени поля (колонки) таблицы открывать значение через ПоказатьЗначение.
---
Извиняюсь, не читал комментарии. Ответ уже был дан в (4).
---
что-то не выходит как 4 , не отрабатывает(
---
Если ТолькоПросмотр указан для всей формы и скопировали код как есть, то вместо
И Элементы.ТЧ.ТолькоПросмотр
надо
И (Элементы.ТЧ.ТолькоПросмотр Или ЭтаФорма.ТолькоПросмотр)
---
у меня ТолькоПросмотр делается условным оформлением тут:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Элемент2 = УсловноеОформление.Элементы.Добавить();

    ПолеЭлемента2 = Элемент2.Поля.Элементы.Добавить();
    ПолеЭлемента2.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыэтлПроизводитель.Имя);

    СписокОтбора2 = Новый СписокЗначений;
    СписокОтбора2.Добавить(Справочники.Производители.ПустаяСсылка());
    СписокОтбора2.Добавить(Справочники.Производители.НайтиПоНаименованию("No name"));

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

    КонецПроцедуры
```
---
Переделал под себя, ошибок не выдает но ничего не происходит

```1c
    Если Поле.Имя = "ТоварыэтлПроизводитель"
    И Элементы.Товары.ТекущиеДанные <> Неопределено
    И (Элементы.Товары.ТолькоПросмотр ИЛИ ЭтаФорма.ТолькоПросмотр)
    И ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ТоварыэтлПроизводитель) Тогда
    СтандартнаяОбработка = Ложь;
    ПоказатьЗначение(,Элементы.Товары.ТекущиеДанные.ТоварыэтлПроизводитель);
    КонецЕсли;
```
---
Сделал так, под свои задачи, всем спасибо!

```1c
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    НаименованиеПроизводителя = ПолучитьЗначениеРеквизита(ТекущаяСтрока.этлПроизводитель, "Наименование");

    Если Поле.Имя = "ТоварыэтлПроизводитель" И НЕ НаименованиеПроизводителя = "No name" Тогда
    Производитель = ТекущаяСтрока.этлПроизводитель;
    ПараметрыФормы = Новый Структура("Ключ", Производитель);
    ОткрытьФорму("Справочник.Производители.Форма.ФормаЭлемента", ПараметрыФормы);
    КонецЕсли;
```