https://forum.infostart.ru/forum9/topic240475/#message2436969
---
Процедура "КнопкаВыполнитьНажатие"

В блоке кода

```1c
    ИначеЕсли СокрЛП(СтрДерева.ТЧПриемник) = "Табличная часть" Тогда
    Если НЕ ПустаяСтрока(СтрДерева.ИдИсточник) Тогда
    для Каждого стрТчИсточник из ДокИсточник[СтрДерева.ИдИсточник] Цикл //цикл по строкам таб части
    СтрТчПриемник = ДокПриемник[СтрДерева.ИдПриемник].Добавить();

    для Каждого стрТч из СтрДерева.Строки Цикл //цикл по метаданным строки
    Если стрТч.ВведеноЗначение Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТч.Источник;
    ИначеЕсли не ПустаяСтрока(СтрДерева.формула) Тогда
    Попытка
    ОбъектИсточник = ДокИсточник;
    ДанныеСтроки = стрТчИсточник;
    Результат = ";
    Выполнить(СтрДерева.формула);
    ДокПриемник[СтрДерева.ИдПриемник] = Результат;
    Исключение
    сообщить("Не удалось выполнить формулу для реквизита :"+СтрДерева.ИдПриемник+" табличной части:"+СтрДерева.ТЧПриемник);
    КонецПопытки;
    Иначе
    Если НЕ ПустаяСтрока(стрТч.ИдИсточник) Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТчИсточник[стрТч.ИдИсточник];
    КонецЕсли;
    КонецЕсли;
    КонецЦикла; //цикл по метаданным строки

    КонецЦикла; //цикл по строкам таб части

    КонецЕсли;
    КонецЕсли;
```

идет проверка на наличие формулы в строке, но сама формула проверяется не в строке табличной части (переменная "стрТч"), а в реквизитах самого документа.

Следовательно, надо изменить код, чтобы было вот так

```1c
    ИначеЕсли СокрЛП(СтрДерева.ТЧПриемник) = "Табличная часть" Тогда
    Если НЕ ПустаяСтрока(СтрДерева.ИдИсточник) Тогда
    для Каждого стрТчИсточник из ДокИсточник[СтрДерева.ИдИсточник] Цикл //цикл по строкам таб части
    СтрТчПриемник = ДокПриемник[СтрДерева.ИдПриемник].Добавить();

    для Каждого стрТч из СтрДерева.Строки Цикл //цикл по метаданным строки
    Если стрТч.ВведеноЗначение Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТч.Источник;
    ИначеЕсли не ПустаяСтрока(стрТч.формула) Тогда
    Попытка
    ОбъектИсточник = ДокИсточник;
    ДанныеСтроки = стрТчИсточник;
    Результат = ";
    Выполнить(стрТч.формула);
    СтрТчПриемник[стрТч.ИдПриемник] = Результат;
    Исключение
    сообщить("Не удалось выполнить формулу для реквизита :"+стрТч.ИдПриемник+" табличной части:"+стрТч.ТЧПриемник);
    КонецПопытки;
    Иначе
    Если НЕ ПустаяСтрока(стрТч.ИдИсточник) Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТчИсточник[стрТч.ИдИсточник];
    КонецЕсли;
    КонецЕсли;
    КонецЦикла; //цикл по метаданным строки

    КонецЦикла; //цикл по строкам таб части

    КонецЕсли;
    КонецЕсли;
```

Ну, и как говорится, найдите 10 отличий.
---
Процедура "КнопкаВыполнитьНажатие"

В блоке кода

```1c
    ИначеЕсли СокрЛП(СтрДерева.ТЧПриемник) = "Табличная часть" Тогда
    Если НЕ ПустаяСтрока(СтрДерева.ИдИсточник) Тогда
    для Каждого стрТчИсточник из ДокИсточник[СтрДерева.ИдИсточник] Цикл //цикл по строкам таб части
    СтрТчПриемник = ДокПриемник[СтрДерева.ИдПриемник].Добавить();

    для Каждого стрТч из СтрДерева.Строки Цикл //цикл по метаданным строки
    Если стрТч.ВведеноЗначение Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТч.Источник;
    ИначеЕсли не ПустаяСтрока(СтрДерева.формула) Тогда
    Попытка
    ОбъектИсточник = ДокИсточник;
    ДанныеСтроки = стрТчИсточник;
    Результат = ";
    Выполнить(СтрДерева.формула);
    ДокПриемник[СтрДерева.ИдПриемник] = Результат;
    Исключение
    сообщить("Не удалось выполнить формулу для реквизита :"+СтрДерева.ИдПриемник+" табличной части:"+СтрДерева.ТЧПриемник);
    КонецПопытки;
    Иначе
    Если НЕ ПустаяСтрока(стрТч.ИдИсточник) Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТчИсточник[стрТч.ИдИсточник];
    КонецЕсли;
    КонецЕсли;
    КонецЦикла; //цикл по метаданным строки

    КонецЦикла; //цикл по строкам таб части

    КонецЕсли;
    КонецЕсли;
```

идет проверка на наличие формулы в строке, но сама формула проверяется не в строке табличной части (переменная "стрТч"), а в реквизитах самого документа.

Следовательно, надо изменить код, чтобы было вот так

```1c
    ИначеЕсли СокрЛП(СтрДерева.ТЧПриемник) = "Табличная часть" Тогда
    Если НЕ ПустаяСтрока(СтрДерева.ИдИсточник) Тогда
    для Каждого стрТчИсточник из ДокИсточник[СтрДерева.ИдИсточник] Цикл //цикл по строкам таб части
    СтрТчПриемник = ДокПриемник[СтрДерева.ИдПриемник].Добавить();

    для Каждого стрТч из СтрДерева.Строки Цикл //цикл по метаданным строки
    Если стрТч.ВведеноЗначение Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТч.Источник;
    ИначеЕсли не ПустаяСтрока(стрТч.формула) Тогда
    Попытка
    ОбъектИсточник = ДокИсточник;
    ДанныеСтроки = стрТчИсточник;
    Результат = ";
    Выполнить(стрТч.формула);
    СтрТчПриемник[стрТч.ИдПриемник] = Результат;
    Исключение
    сообщить("Не удалось выполнить формулу для реквизита :"+стрТч.ИдПриемник+" табличной части:"+стрТч.ТЧПриемник);
    КонецПопытки;
    Иначе
    Если НЕ ПустаяСтрока(стрТч.ИдИсточник) Тогда
    СтрТчПриемник[стрТч.ИдПриемник] = стрТчИсточник[стрТч.ИдИсточник];
    КонецЕсли;
    КонецЕсли;
    КонецЦикла; //цикл по метаданным строки

    КонецЦикла; //цикл по строкам таб части

    КонецЕсли;
    КонецЕсли;
```

Ну, и как говорится, найдите 10 отличий.
---
Отлично работает. Время и т.д всё отредактировал как надо. Все поменял в обработке. Подскажи как обновить СуммуИтоговую. Количество и цену все ставит, но приходить заводить в документ ставить снова количество и при изменении считает Итоговую.
---
Как понимаю Обработка только данные проставляет. А обычная считает при изменении данных. Ну если не сложно, то как изменить?
---
У вас в реквизитах Количество и Цена в событии ПриИзменении какая процедура стоит?
---
Или самому прописать как формулу Результат=ДанныеСтроки.Количество*ДанныеСтроки.Стоимость;
---
Так не вышло
---
Процедура ИсточникПриИзменении(Элемент)
 СинхронизацияРеквизитов();
 СписокДокументов.Очистить();

 УстановитьТипКолонокВТаблицах();
КонецПроцедуры
---
ДокПриемка.Обновить();
  ДокПриемник.Записать(РежимЗаписиДокумента.Запись);
---
ДокПриемник.дата = ?(ТекущейДатой , ТекущаяДата(),ДокИсточник.Дата - "00000000010000");
  ДокПриемник.Записать(РежимЗаписиДокумента.Запись);