Может что не так делаю, подскажите.
Есть док, назовем "ТоварыДруга"
При отритии списка попадаею отадчиком в эту процедуру.

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

    Если НЕ объект.ДатаБессрочно Тогда
    Элементы.ДатаОкончания.Доступность = Истина;
    Иначе
    Элементы.ДатаОкончания.Доступность = Ложь;
    КонецЕсли;

    //ИтогоПриИзменении(Объект);

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

Имею колонки "Количечество" и "Цена" нужна "сумма"(ИТОГО).
Создаю реквизит "Итого", сначала с обарботчиком "ПриИзменении"

```1c
    &НаКлиенте
    Процедура ИтогоПриИзменении(Элемент)
    СтрокаТЧ = Элементы.Товары.ТекущиеДанные;
    СтрокаТЧ.Итого = СтрокаТЧ.Количество*СтрокаТЧ.Тариф; //3000 = 3 * 1000
    КонецПроцедуры
```

то есть меняю данные в ИТОГО ,выводятся правильные данные согласно формуле.

Когда пытаюсь внести данные строки

```1c
    СтрокаТЧ = Элементы.Товары.ТекущиеДанные;
    СтрокаТЧ.Итого = СтрокаТЧ.Количество*СтрокаТЧ.Тариф;
```

в процедуру "ПриОткрытии" (первая) то получаю

"Значение не является значением объектного типа (Итого)
 СтрокаТЧ.Итого = СтрокаТЧ.Количество*СтрокаТЧ.Тариф;"
Как нужно в процедуре инициализирвать данные ТЧ, чтобы услвно по моей формуле вывести в колонку ИТОГО нужную сумму?
---
```1c
    &НаКлиенте
    Процедура Пересчитать(Стр)
    Стр.Итого=Стр.Количество+Стр.Тариф;
    КонецПроцедуры

    &НаСервере
    Процедура ПересчитатьСервер(Стр)
    Стр.Итого=Стр.Количество+Стр.Тариф;
    КонецПроцедуры

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //Какой-то текст

    Для каждого Стр Из Объект.Товары Цикл
    Если НЕ ЗначениеЗаполнено(Стр.Итого) Тогда
    ПересчитатьСервер(Стр);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
    Для каждого Стр Из Объект.Товары Цикл
    ПересчитатьСервер(Стр);
    КонецЦикла;
    КонецПроцедуры

    &НаСервере
    Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    Для каждого Стр Из Объект.Товары Цикл
    Если НЕ ЗначениеЗаполнено(Стр.Итого) Тогда
    ПересчитатьСервер(Стр);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    &НаКлиенте
    Процедура ТоварыКоличествоПриИзменении(Элемент)
    Стр=Элементы.Товары.ТекущиеДанные;
    Пересчитать(Стр);
    КонецПроцедуры
```
---
перебирайте и заполняйте непосредственно реквизит "ИТОГО", а не элементы формы
---
В При создании на сервере В цикле

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

```1c
    Для каждого СтрокаТаблицы Из Объект.Таблица Цикл
    СтрокаТаблицы.Итого = СтрокаТаблицы.Количество * СтрокаТаблицы.Тариф;
    КонецЦикла;
```

Либо просто этот код поместить в ПриЧтенииНаСервере
---
Скорее всего просто ТекущиеДанные = Непоределено, т.к. нет выделенной строки
---
Как нужно в процедуре инициализирвать данные ТЧ, чтобы услвно по моей формуле вывести в колонку ИТОГО нужную сумму?

смотря в какой процедуре. В каком событии элемента инициализируется?
---
в первой, ПриОткрытии код выше указал
---
Так при открытии в текущих данных ничего и не будет, т.к. это данные выделенной строки. Данные всех строк пересчитать можно ПриСозданииНаСервере, т.к. доступно Объект.ВашаТабличнаяЧасть.
---
Выведите на форму реквизит выделенный на картинке, это и будет итог по колонке, а вообще лучше посмотреть как в типовых делается!
---
ТАМ нужно тариф множить на количество.
вот как такое провернуть пока не рпзобрался
---
делал так для изменения расчетных данных в таблице
1. ПриОткрытии() - еще нет данных табличной части, произошла только инициализация
2. ПриСозданииНаСервере() - вот после нее уже будет заполнена табличная часть
3. в конце ПриСозданииНаСервере() вызов пересчета данных табличной части на сервере (с расчетом всей ТЧ, параметр текущей строки = Неопределено), для отображения изменений на форме использовал РеквизитФормыВЗначение ()-ЗначениеВРеквизитФормы()
4. ПриИзменении_реквизита строки ТЧ - вызов пересчета данных табличной части на сервере (с расчетом только текущей строки, передается параметром)
---
1. ПриОткрытии() - еще нет данных табличной части, произошла только инициализация
2. ПриСозданииНаСервере() - вот после нее уже будет заполнена табличная часть

То есть по вашему сначала форма открывается, и только потом создается? О_о
Серьезно?
---
каюсь, не проснулся еще...
изменить пост уже не могу, исправляюсь так

1. ПриСозданииНаСервере() - после нее уже будет заполнена табличная часть
2. ПриОткрытии() - выполняется на клиенте, поэтому нужно вызвать серверную функцию
3. в конце ПриСозданииНаСервере() или в конце ПриОткрытии() вызов пересчета данных табличной части на сервере (с расчетом всей ТЧ, параметр текущей строки = Неопределено), для отображения изменений на форме использовал РеквизитФормыВЗначение ()-ЗначениеВРеквизитФормы()
4. ПриИзменении_реквизита строки ТЧ - вызов пересчета данных табличной части на сервере (с расчетом только текущей строки, передается параметром)
---
решил таким образом

```1c
    &НаКлиенте
    Процедура Рассчитать(текДанные)
    текДанные.Итого = текДанные.Количество*текДанные.Тариф;

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

    &НаКлиенте
    Процедура ТоварыКоличествоПриИзменении(Элемент)
    Рассчитать(Элементы.Товары.ТекущиеДанные);
    КонецПроцедуры

    &НаКлиенте
    Процедура ТоварыТарифПриИзменении(Элемент)
    Рассчитать(Элементы.Товары.ТекущиеДанные);

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

но это если создавать новый док, или править в существующем количество или тариф.

нужно чтобы при открытии старых документов (где нет ИТОГО), это ИТОГО считалось сразу в данной колонке.
---
данное итого выводит Итоги в колонку по данным колонки, а мне нужно в строку.
---
Если посмотреть в типовых, то вместо ИТОГО пишут СУММА а итоги (обычно по колонкам) располагают в подвале ТЧ либо отдельным реквизитом на форме. В книге "Практическое пособие разработчика" приводится простейший пример. Где сам пересчет в строке ТЧ происходит в общем модуле (чтобы этот механизм можно было использовать для ТЧ различных документов с однотипным набором реквизитов) , а обращение к нему идет из событий ТЧ. Ниже скриншот БП
---
Здесь свойства общего модуля
---
```1c
    &НаКлиенте
    Процедура Пересчитать(Стр)
    Стр.Итого=Стр.Количество+Стр.Тариф;
    КонецПроцедуры

    &НаСервере
    Процедура ПересчитатьСервер(Стр)
    Стр.Итого=Стр.Количество+Стр.Тариф;
    КонецПроцедуры

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //Какой-то текст

    Для каждого Стр Из Объект.Товары Цикл
    Если НЕ ЗначениеЗаполнено(Стр.Итого) Тогда
    ПересчитатьСервер(Стр);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
    Для каждого Стр Из Объект.Товары Цикл
    ПересчитатьСервер(Стр);
    КонецЦикла;
    КонецПроцедуры

    &НаСервере
    Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    Для каждого Стр Из Объект.Товары Цикл
    Если НЕ ЗначениеЗаполнено(Стр.Итого) Тогда
    ПересчитатьСервер(Стр);
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    &НаКлиенте
    Процедура ТоварыКоличествоПриИзменении(Элемент)
    Стр=Элементы.Товары.ТекущиеДанные;
    Пересчитать(Стр);
    КонецПроцедуры
```
---
&НаСервере
Процедура ПересчитатьСервер(Стр)
 Стр.Итого=Стр.Количество+Стр.Тариф;
КонецПроцедуры

то что нужно
Спасибо!