Добрый день, имеется документ в табличной части которого есть реквизит ВидТовара. Как получить значение ВидТовара в процедуре ПриИзменении? Получиться должно что-то вроде:

```1c
    &НаКлиенте
    Процедура ВидТовараПриИзменении(Элемент)
    ЗначениеИзменяемогоЭлемента = Элемент.Значение;
    КонецПроцедуры
```

Но у параметра "Элемент" нету свойства "Значение".
---
```1c
    &НаКлиенте
    Процедура ВидТовара1ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара1;
    КонецПроцедуры

    &НаКлиенте
    Процедура ВидТовара2ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара2;
    КонецПроцедуры

    &НаКлиенте
    Процедура ВидТовара3ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара3;
    КонецПроцедуры

    &НаКлиенте
    Процедура ВидТовара4ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара4;
    КонецПроцедуры
```

либо универсальную процедуру :

```1c
    &НаКлиенте
    Процедура ВидыТоваровПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные[Элемент.Имя]; ///Имя реквизита
    КонецПроцедуры
```
---
```1c
    &НаКлиенте
    Процедура ВидТовараПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара;
    КонецПроцедуры
```
---
А если у меня несколько таких реквизитов, то как получить значение для того в котором происходит изменение?
Допустим у нас есть реквизиты табличной части ВидТовара1, ВидТовара2, ВидТовара3, ВидТовара4. При этом процедура должна получать значение элемента формы который ее вызвал. К примеру изменяем ВидТовара2 и в процедуре получаем его значение.
---
не понял, что именно нужно ?
---
У каждого реквизита есть свойство "ПриИзменении" )
Подробнее напишите
---
```1c
    &НаКлиенте
    Процедура ВидТовара1ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара1;
    КонецПроцедуры

    &НаКлиенте
    Процедура ВидТовара2ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара2;
    КонецПроцедуры

    &НаКлиенте
    Процедура ВидТовара3ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара3;
    КонецПроцедуры

    &НаКлиенте
    Процедура ВидТовара4ПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные.ВидТовара4;
    КонецПроцедуры
```

либо универсальную процедуру :

```1c
    &НаКлиенте
    Процедура ВидыТоваровПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные[Элемент.Имя]; ///Имя реквизита
    КонецПроцедуры
```
---
Спасибо, пытался написать именно универсальную)
Не могли бы подсказать что квадратные скобки обозначают?
---
Индекс ) Обращение к элементу табличной части по индексу (В данном случае по наименованию реквизита)
---
Разве индекс не должен быть числом?
---
а если литералы в квадрат ?
---
Ненаходит таблицу
---
Ваша табличная часть там должна быть )
имя вашей табличной части на форме?
---
Спасибо, видимо ошибся.
---
Подскажите как реализовать, что бы при изменении ВидаТовара изменялась видимость следующего реквизита. Например изменяем ВидТовара1, видимость ВидТовара2 становится истина, изменяем ВидТовара2 меняется видимость ВидТовара3.
---
примерно так :

```1c
    &НаКлиенте
    Процедура ВидыТоваровПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные[Элемент.Имя]; ///Имя реквизита

    Если Элемент.Имя = "ВидТовара1" Тогда
    Элементы.ТаблицаВидТовара2.Видимость = истина;
    ИначеЕсли Элемент.Имя = "ВидТовара2" тогда
    Элементы.ТаблицаВидТовара3.Видимость =истина ;
    ИначеЕсли Элемент.Имя = "ВидТовара3" тогда
    Элементы.ТаблицаВидТовара4.Видимость = истина;
    Конецесли;

    КонецПроцедуры
```
---
А нельзя ли брать имя поля например ВидТовара1 парсить его на "ВидТовара" и "1" к числу прибавлять единицу, конкатенировать обратно и обратиться по полученной строке? Или это уже слишком запарно?
---
это уже на ваше усмотрение, как вам удобнее\проще
---
Спасибо за помощь)
---
можно еще так:

```1c
    &НаКлиенте
    Процедура ВидыТоваровПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Таблица.ТекущиеДанные
    ЗначениеИзменяемогоЭлемента = ТекущиеДанные[Элемент.Имя]; ///Имя реквизита

    Элементы.ТаблицаВидТовара2.Видимость = ЗначениеЗаполнено(ТекущиеДанные.ВидТовара1);

    Элементы.ТаблицаВидТовара3.Видимость =ЗначениеЗаполнено(ТекущиеДанные.ВидТовара1) И ЗначениеЗаполнено(ТекущиеДанные.ВидТовара2);

    Элементы.ТаблицаВидТовара4.Видимость = ЗначениеЗаполнено(ТекущиеДанные.ВидТовара1) И ЗначениеЗаполнено(ТекущиеДанные.ВидТовара2) И ЗначениеЗаполнено(ТекущиеДанные.ВидТовара3);

    КонецПроцедуры
```
---
зачем тогда все элементы ? событийка уже предпологает это. обрабатывайте.
---
Как обратиться к значению ячейки табличного поля, если имя колонки, в которой находится это значение, является вычисляемым и хранится в переменной?
Помимо основного обращения через точку, в языке 1С:Предприятия предусмотрен механизм обращения к свойствам объектов по строке с именем свойства с помощью оператора [] (квадратные скобки). Поэтому для доступа к значению ячейки табличного поля можно использовать следующую конструкцию:

```1c
    Копировать в буфер обмена
    ИмяКолонки = "ГлавныйСклад";

    ЗначениеПоля = ЭлементыФормы.ПолеСписка.ТекущаяСтрока[ИмяКолонки];
```

ИТС
---
Сообщение было скрыто модератором.