Всем привет, подскажите, завис, как посчитать сумму приходящих значений

```1c
    Процедура ТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    Если ДанныеСтроки = Неопределенно Тогда
    Возврат;
    КонецЕсли;

    ОформлениеСтроки.Ячеки.УслугаНаименование.Значение = ДанныеСтроки.Таблица.Наименование;
    ОформлениеСтроки.Ячейки.УЕТ.Значение = ДанныеСтроки.Таблица.Количество;

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

Значения приходят в ДанныеСтроки как их можно сложить что бы получить итог?
Если применить ЦИКЛ то как оформить?
Версия 8.2 обычные формы
---
Складывать значения в структуру для чего? Оттуда удобнее доставать?

```1c
    Перем СуммаСекретногоПоля;

    Процедура ПриОткрытии()
    ...
    СуммаСекретногоПоля = 0;
    ...
    КонецПроцедуры

    Процедура ПриВыводеСтроки()
    ...
    СуммаСекретногоПоля = СуммаСекретногоПоля + ХренПоймиОткудаБерущеесяЗначение;
    Элементы.ДекорацияИтогСекретнойКолонки.Заголовок = Формат(СуммаСекретногоПоля, "Ч5.0");
    ...
    КонецПроцедуры
```
---
Ох, чел...

Процедура РасчётСуммы()
 ОбщийИтог = 0;
 Для Каждого СтрТЧ Из Услуги Цикл
        ОбщийИтог = ОбщийИтог +
 СтрТЧ.Услуга.Количество;
        Сообщить(ОбщийИтог);
КонецЦикла
КонецПроцедуры
---
ЭлементыФормы.<Имя вашего табличного поля>.Значение
Там таблица значений с колонками и строками. Посчитайте итог по нужно колонке.
---
(3)
Вот эта конструкция

```1c
    ИтогПоКолонке = Таблица.Итог("Колонка");
    Сообщить(ИтогПоКолонке)
```

не работает выводит 0
---
ИтогПоКолонке = ЭлементыФормы.Таблица.Значение.Итог("Колонка");
---
Тут решение только в цикле, но как это оформить не могу сообразить?
---
Ну раз так - дерзайте.
И никогда, не под каким предлогом не используйте отладчик - он для слабаков.
---
К чему это? Вот в вопросе прямо говорится про цикл, и что не знаю как его применить ваш ответ уже опробован, тоже написал. К чему вы тут ёрничаете не понятно.
---
Если конечно и это неправильно, то обойдите ТЗ из .Значение в цикле.
---
Если в отладчике смотреть то приходит из данных число, тип поля тоже число, но на шаге Итог в появаляется тип число 0 почему то.
Как в цикле обойти я не могу понять?
---
Оставьте в покое ДанныеСтроки.
Просто вычислите в отладчике это - ЭлементыФормы.Таблица.Значение. Там есть ТаблицаЗначений?
---
Нет такого типа данных у меня не в отладчике не фигурирует только табличная часть. Я пишу обычное приложение на 8.2
---
Как называется тот элемент на форме в палитре свойств? Итог по колонке которого вы считаете.
---
Не стоит залезать в задницу, чтобы по составу дерьма посчитать количество зубов.

Это к вопросу про ПриВыводеСтроки(). Думай.
---
Это он из другой темы перенес.
Я нашел два способа:
1. У табличного поля есть свойство "ВыделенныеСтроки" и оттуда можно посчитать выделенное;
2. В свойстве "Значение" содержится ТЗ с данными и там можно посчитать все.
А ему все цикл подавай...
---
Где?
---
Это колонка. А поле целиком?
---
Таблица ТабличноеПоле1 Поле ввода
---
Давай лучше скрин.
---
"Услуги" это табличное поле? Можно скрин его свойств?
---
У вас два скрина со свойствами заголовка и поля ввода колонки.
Можете щелкнуть правой кн. по рамке всего табличного поля и показать свойства?
---
Значит точно табличное поле, которое связано с табличной частью объекта.
Если вы хотите посчитать итог по колонке именно через табличное поле пишите: ИтогПоКолонке = ЭлементыФормы.Услуги.Значение.Итог("Количество");
Либо считайте итог по ТЧ Объекта: ИтогПоКолонке = ЭтотОбъект.Услуги.Итог("Количество");

Сделайте кнопку и напишите код в ее обработчике. Оставьте пока "ПриВыводеСтроки()" в покое.
---
Приданной конструкции
```1c
    ИтогПоКолонке = ЭлементыФормы.Услуги.Значение.Итог("Количество");
```
выводит 0
Тоже самое по этой
```1c
    ИтогПоКолонке = ЭтотОбъект.Услуги.Итог("Количество")
```

Откуда взялось это выражение ПриВыводеСтроки() оно у меня в вопросе нигде не фигурирует?
---
"Процедура ТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)"

Так если у вас в двух вариантах 0. Может быть вы колонки путаете? Итог по одной, а данные в другой?
---
Мне кажется дело втом что в неё как то странно попадают данные

```1c
    Процедура ТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    Если ДанныеСтроки = Неопределенно Тогда
    Возврат;
    КонецЕсли;

    ОформлениеСтроки.Ячеки.УслугаНаименование.Значение = ДанныеСтроки.Таблица.Наименование;
    ОформлениеСтроки.Ячейки.УЕТ.Значение = ДанныеСтроки.Таблица.Количество;

    КонецПроцедуры
```
---
Более чем странно. Этот код вы писали? Для чего? Что содержится в ДанныеСтроки.Таблица в отладчике?
---
ДанныеСтроки = 0. Может всё же подскаже как в цикле полученные значения сложить?
---
Вы можете показать в отладчике что у вас содержится в "ДанныеСтроки.Таблица"?
---
Это услуга. Количество = 0. От этого и Итог = 0.
Есть еще КоличествоЧегоТо, так это строка. Значение которой возможно показывается на форме.
Может будет достаточно просто максимум НомерСтроки получить в Услуга? Или количество элементов
---
В ДанныеСтроки это колонки таблицы. Колонка Количество без цыфры = 0 тип число это по ней нужно получить итог.
Далее идёт содержание таблицы услуги что в неё подает и как видно там тоже есть количество тип число оно =0,2 вот это значение и должно попасть в колонку и оно пропадает но почему-то ИтогПоКолонке =0
Ещё раз повторюсь если обратиться к данным строки я получу значение количество как его сложить то, не выходит как надо то хотябы костылно сделать?
---
Далее идёт содержание таблицы услуги что в неё подает и как видно там тоже есть количество тип число оно =0,2
Это вообще-то значение реквизита элемента самого справочника
---
Вот и выходит что по нему итог не посчитать?
---
Э... вот это поворот.
Ну, в запросе можно получить эти значения, как и любые реквизиты справочника. Этих значения нет в табличном поле от слова совсем.
---
А я самого начала говорил давайте костылить вместе)
---
получаете все элементы (ссылки) на справочник из табличного поля (тз).
В запрос передаете как массив. В запросе получаете нужные элементы справочника и нужный реквизит у этих элементов.
Применить агрегатную функцию Сумма(значение реквизита).
---
А в коде это выразите, пожалуйста?
---
Можете объснить в чём ваше предложение отличается от того что я получаю эти значения через данные строки, но только не могу придумать как их сложить?
---
то что "получаете" это просто отрабатывают функции самого отладчика по получению значений по ссылке. Фактически их нет и за ними нужно идти в базу. Можно конечно через точку от ссылки получать, но это плохо.
Я же предложил получать значения реквизитов ссылки через запрос.
У меня нет вашей базы и посмотреть не могу, что там и как.
---
Вы мне может объяснить, а что не так с этой таблицей почему данные добовляються через ОформлениеСтроки? Это всё из-за 8.2 обычных форм? Если в таблицу вводить данные в поле в ручную то Итог() работает.
---
В обычных формах нельзя просто так в таблицу вывести реквизит ссылочного поля, как в управляемых формах.
Поэтому добавляют пустую колонку, не связанную с данными и в ПриВыводеСтроки заполняют ее нужным значением.

Например, в таблице документа есть колонка Номенклатура - ссылка на справочник Номенклатура.
В справочнике Номенклатура есть реквизит Цена.

Чтобы в таблице документа для номенклатуры выводилась цена из справочника Номенклатура, добавляют пустую колонку Цена и заполняют ее в ПриВыводеСтроки.
---
хорошо, я положил всё значения в коллекцию они уже не ссылочные, но всё равно добавить не выходит, сейчас то почему?
```1c
    Элемент.ТекущаяСтрока.Количество = Количество.Значение
```
---
По данному куску кода без базы я ничего не могу сказать.
Тут вам только к телепатам.
---
зачем вам база тут вопрос как добавить значения в таблицу без ОформленияСтроки просто положить их что бы они там были не как декарация. Значения не ссылочные.
Конкретный вопрос в обычных формах это возможно? Если да то пример пожалуйста из кода.
---
почему данные добовляються через ОформлениеСтроки
Это именно оформление. И в данном случае Значение для нее это значение, отображаемое в колонке
Как оформление ячейки. Может быть установлен Цвет, Фон, так и выводимый Текст.
---
вот хорошо, а что мне мешает добавить в неё значение ведь в таблицы дабавлют значения просто значения без оформления или это в обычных формах не возможно?
---
СП:
ОформлениеЯчейки (CellAppearance)
Значение (Value)
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Содержит значение, отображаемое в колонке. Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения.
Это возможность выводить значение в ячейку несвязанное напрямую значение. Оно там будет просто отображаться.
Как на УФ можно выводить на форму значения реквизита ссылки, Но нигде больше не хранится в данных формы. И обратиться в коде к этим значениям нельзя. Только получая из базы.
---
а как люди раньше то итог получали в ОФ, я правильно понял, что итог считать нужно в регистре куда будут попадать добавленные услуги в этой таблице?
---
просто есть колонки, которые связанные с данными, а есть - не связанные. Там выше есть описание.
"Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения."
Если в коде идет присвоение, то данная колонка не связанна с данными.
---
Сложно, очень сложно. Если бы мы знали что это такое, но мы не знаем, что это такое.
---
Вот точно не путаю.
---
Вы хотите подсчитать что-то в цикле внутри процедуры "ПриВыводеСтроки"?
Эта процедура вызывается сама в цикле и городить внутри нее что-то циклическое не имеет смысла.
Можно объявить глобальную переменную и в ней собирать сумму. А для чего все это? Надо же что-то в конце сделать?
Задача целиком как звучит?
---
согласен процедура сама как цикл, заголовок немного некоректен. Какой вариант сложения есть номера строк и количество.
---
Для чего нужна эта сумма? Если для визуализации, то надо создать надпись на форме и там изменять текст внутри процедуры ПриВыводеСтроки. Если для получения итога, то надо к данным обращаться и не в этой процедуре.
---
Вы о каких таблицах ведете речь?
1. ТаблицаЗначений. Там данные хранятся. Сумма по колонке будет вычислена оператором Табл.Итог("ИмяСтолбца");
2. ТабличнаяЧасть. Там тоже данные хранятся. Но используется у справочников и документов. Сумма по колонке тоже через ТаблЧасть.Итог("ИмяКолонки");
3. ТабличноеПоле. Вот здесь уже сложнее вытащить данные. Это элемент формы для отображения таблицы значений или табличной части. Именно тут начинаем использовать всякие ПриВыводеСтроки() ПриПолученииДанных().
Вы в своем примере пытаетесь получить данные при выводе строки. Зачем? В другом месте - нельзя это сделать? Вас ведь именно это спрашивают!
---
Например в каком месте?
---
В любом.
---
Что вы под местом подразумеваете можете конкретно сказать?Только вас понимать начал и вот начали загатками говорить.
---
В любом событии формы можно посчитать данные таблицы.
Хоть при открытии, хоть в любом другом.
Хоть кнопку добавить - на нажатие кнопки посчитать.
---
У меня пунк 3 я работаю в процедуре ПриВыводеСтроки() значения я получаю и даже сложил их в структуру как теперь получить итог?
---
Место - в какой процедуре будет размещаться код суммирования данных.
У вас есть доступ к данным?
Знаете, как называется таблица и колонки, которые надо суммировать?
Вставьте код получения итога по колонке в какую-нибудь ПриОткрытии или ПриПолученииДанных.
---
Складывать значения в структуру для чего? Оттуда удобнее доставать?

```1c
    Перем СуммаСекретногоПоля;

    Процедура ПриОткрытии()
    ...
    СуммаСекретногоПоля = 0;
    ...
    КонецПроцедуры

    Процедура ПриВыводеСтроки()
    ...
    СуммаСекретногоПоля = СуммаСекретногоПоля + ХренПоймиОткудаБерущеесяЗначение;
    Элементы.ДекорацияИтогСекретнойКолонки.Заголовок = Формат(СуммаСекретногоПоля, "Ч5.0");
    ...
    КонецПроцедуры
```
---
Спасибо то что нужно, но тоже не много не то значения теперь скачут при каждом обращении к таблице.
---
Ну так сделай цикл в котором будет расчет суммы по таблице, помести в отдельную процедуру.
Вызывай эту процедуру перед открытием, при изменении количества строк таблицы, при изменении значения в колонке, от которой зависит сумма.
Какие сложности?

```1c
    ОбщийИтог = 0;
    Для Каждого СтрТЧ Из МояТЧ Цикл
    ОбщийИтог = ОбщийИтог + СтрТЧ.РеквизитТЧ.РеквизитРеквизитаТЧ;
    КонецЦикла;
```
---
Сделал не цепляет выводит 0

```1c
    Процедура РасчётСуммы()
    ОбщийИтог = 0;
    Для Каждого СтрТЧ Из Услуги Цикл
    ОбщийИтог = ОбщийИтог +
    СтрТЧ.Количество;
    Сообщить(ОбщийИтог);
    КонецЦикла
    КонецПроцедуры
```
---
Ох, чел...

Процедура РасчётСуммы()
 ОбщийИтог = 0;
 Для Каждого СтрТЧ Из Услуги Цикл
        ОбщийИтог = ОбщийИтог +
 СтрТЧ.Услуга.Количество;
        Сообщить(ОбщийИтог);
КонецЦикла
КонецПроцедуры
---
Спасибо тебе прям то что нужно.
---
Значения скачут, потому что обнуление один раз, а суммирование ведется в левой процедуре - ПриВыводеСтроки. К ней обращаются при любом сдвиге табличного поля.
Суммировать надо где-то в другом месте, которое не вызывается по сорок раз на дню...
Либо ПриОткрытии, либо ПриСозданииНаСервере, либо в обработчике какого-то единичного события (клик по кнопке, например). Главное счётчик не забудь обнулить ))
---
Не получиться данныеСтроки приходят только в ПриВыводеСтроки