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

    ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтветИмпорт.Имя);
```
---
вот простенький пример выборочной доступности поля в ТЧ в зависимости от значения соседнего поля
---
Через условное оформление можно, что то типа такого

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

    ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТабличнаяЧастьЕсть.Имя);

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

    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
```
---
```1c
    Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
```
---
добавить колонку на форме, в которой хранить булев тип для ТолькоПросмотр.
При Изменении и выборе нужной ссылки, устанавливать в колонку ТолькоПросмотр Истина.
В УО использовать эту колонку для отбора.
---
необходимо обрабатывать два события вашей ТЧ
1.ПередНачаломИзменения - проверяете поле Производитель и блокируете или нет поле Есть
2.ПриИзменении - поля Производитель по новому значению блокируете или нет поле Есть
(бред какой-то)
---
Это понятно. Делаю я вот так:

```1c
    Если НаименованиеПроизводителя = "No name" Тогда
    Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = Истина;
    КонецЕсли;
```

Но так блокирует весь столбец, как мне заблочить ячейку?
---
1с 8.3 при выводе строки управляемые формы (youtube)
---
Я бы с радостью, но я пробовал , у меня поле "Производитель" это справочник, в нем элементы, а мне нужен один элемент из него и указать не получается (( он в условном оформлении пишет (Пустая ссылка) и все.
---
Там ошибка в конце "@" поставил, вместо ", но оно и без " " не работает и с " " не работает
---
так я же написал блокировать или не блокировать, надо так

```1c
    Если НаименованиеПроизводителя = "No name" Тогда
    Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = Истина;
    Иначе
    Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = Ложь;
    КонецЕсли;

    или так, одной командой

    Элементы.ТоварыЕстьОтвет.ТолькоПросмотр = НаименованиеПроизводителя = "No name";
```
---
Правильно, так же и я делаю, блокирует весь столбец!!! а надо ячейку в текущей строке
---
так а чем не устраивает Условное оформление?
---
Я попробовал, на сервере, в событии "При изменении". Сперва ругалось на эту строчку "МассивОтбора.Добавить(Справочники.Производители.ПустаяСсылка);" , ее я удалил, все заработало, но ничего не выполняется
---
не надо при изменении, условное оформление добавляй в событии "ПриСозданииНаСервере"

Есть ещё вариант, добавить условное оформление интерактивно, но лучше сделать программно
---
а ещё неправильно написано

МассивОтбора.Добавить(Справочники.Производители.ПустаяСсылка());

Скобки забыл
---
МассивОтбора.Добавить(Справочники.Производители.ПустаяСсылка());

Сделал, работает. Но снова блокирует весь столбец. Даже если во второй строчке стоит не "No name"
---
Другие обработчики убрали? Изначально поле доступно?

С массивом оказывается не работает, надо изменить на список значений

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

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

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

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

    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
```
---
Да, убрал. Поле доступно всегда
---
Закомментируйте код условного оформления, и проверьте, поле доступно?

Так то условное оформление должно работать,
мне кажется в другом месте где то блокируется поле
---
Доступно. Снова блокирует весь столбец
---
В порядке бреда спрошу, какие значения в поле "Производитель"?
---
В 1 = Artic, во 2 = Russia
Я меняю одно из них на No name и блокируется весь столбец
---
Если при удалении кода с условным оформлением поле доступно, а при добавлении столбец недоступен,
то даже не знаю, в чем причина.

У меня все отрабатывает как надо
---
вот простенький пример выборочной доступности поля в ТЧ в зависимости от значения соседнего поля
---
Сделал у себя. У меня правда поле "Есть ответ" ЧекБокс, но работает! когда схожу с поля где "No name" то оно как бы становиться глазом видно что можно редактировать, но когда обратно хочешь поставить галочку то не ставит.
А когда стоишь на поле которое нельзя редактировать то и нижние показывает что нельзя, но когда перейдешь то становиться можно. Я хз как это поправить, но пойдёт. C фото думаю понятнее будет
Это и нужно было! Спасибо огромное!!!!
---
а теперь попробуйте удалить все строки в Тч, словите ошибку
---
блин, ну это же пример, всего две строчки! понятно в рабочем исполнении там там пяток проверок надо навтыкать!

экий вы формалист, или педант?
---
зачем делать через обработчики событий, если можно УО,
просто у автора изначально где то блокируется поле, поэтому не работает УО,

ваш код сработал, потому что он снимает ТолькоПросмотр

имхо, выглядит не очень с чек боксами, пользователи не поймут, я так понимаю, что блокируется весь столбец
---
Давайте еще раз попробуем через УО, мне тоже интересно. Я вроде везде всё выключил
---
поиграйтесь с его обработкой, чтобы понять как работает УО. В данный момент не могу написать код
---
вот через УО
---
Да, в том и дело что поле Наименование это строка, и там есть пункт в условии "Содержит" , а у меню никчёмный "Справочник" и я там не могу указать "No name", там нету в условии "Содержит".
Вот что я могу:
---
так справочник по плюсику разворачивается и выбираете его реквизит
Спр.Наименование Содержит "No name"
---
Упс, нет там плюсика!
---
тогда программно установить правое значение
(вообще должны быть доступны предопределенные элементы справочника, если заданы)

вот пример с колонкой Валюта, у вас справочник Валюты есть? тогда должно сработать, ну или код смотрите
---
Вроде все сделал как у Вас, но не отрабатывает, так и открыт для редактирования

```1c
    лкЭлементУО = этаформа.УсловноеОформление.Элементы[0];
    лкОтбор = лкЭлементУО.Отбор.Элементы[0];
    лкОтбор.ПравоеЗначение = Справочники.Производители.НайтиПоНаименованию("No name");
```
---
у меня отрабатывает на этой обработке
---
Спасибо огромное) По вашему методу сделал, все пашет как часы из Швейцарии))!!!!
---
Подскажите пожалуйста, а как еще одну ячейку добавить только для просмотра, начал делать так:

```1c
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтвет.Имя);
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтветИмпорт.Имя);
```

но тогда и первая строчка не взлетает
---
```1c
    ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТабЧастьЕстьОтвет.Имя);

    ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕстьОтветИмпорт.Имя);
```
---
Спасибо огромное! работает!
---
полезно будет прочитать

Условное оформление на примере

там в принципе хорошо описано
---
а сам пример работает?

а код в форме добавили?

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

    //установка оформления
    лкЭлементУО = этаформа.УсловноеОформление.Элементы[0];
    лкОтбор = лкЭлементУО.Отбор.Элементы[0];
    лкОтбор.ПравоеЗначение = Справочники.Валюты.НайтиПоКоду("643");

    КонецПроцедуры
```
---
Че огород городить

```1c
    &НаКлиенте
    Процедура ТЧПриАктивизацииЯчейки(Элемент)
    Если Элемент.ТекущаяСтрока = Неопределено Тогда
    Возврат;
    КонецЕсли;
    Если Элемент.ТекущиеДанные.Контрагент.Пустая() Тогда
    Элементы.ТЧСумма.ТолькоПросмотр = Ложь;
    Иначе
    Элементы.ТЧСумма.ТолькоПросмотр = Истина;
    КонецЕсли;

    КонецПроцедуры
```
---
Класс!