Как в цикле посчитать сумму значений?

1. Terabaytus 01.07.24 15:32 Сейчас в теме
Всем привет, подскажите, завис, как посчитать сумму приходящих значений

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

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

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

КонецПроцедуры
Показать

Значения приходят в
ДанныеСтроки
как их можно сложить что бы получить итог?
Если применить ЦИКЛ то как оформить?
Версия 8.2 обычные формы
По теме из базы знаний
Найденные решения
63. ico 03.07.24 16:50 Сейчас в теме
(62) Складывать значения в структуру для чего? Оттуда удобнее доставать?

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

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

Процедура ПриВыводеСтроки()
  ...
  СуммаСекретногоПоля = СуммаСекретногоПоля + ХренПоймиОткудаБерущеесяЗначение;
  Элементы.ДекорацияИтогСекретнойКолонки.Заголовок  = Формат(СуммаСекретногоПоля, "Ч5.0");
  ...
КонецПроцедуры
Показать
Terabaytus; +1 Ответить
70. Sashares 35 04.07.24 10:07 Сейчас в теме
(68)Ох, чел...

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

не работает выводит 0
4. Zevzm 01.07.24 15:56 Сейчас в теме
(3) ИтогПоКолонке = ЭлементыФормы.Таблица.Значение.Итог("Колонка");
5. Terabaytus 01.07.24 16:04 Сейчас в теме
(4) Тут решение только в цикле, но как это оформить не могу сообразить?
6. Zevzm 01.07.24 16:05 Сейчас в теме
(5) Ну раз так - дерзайте.
И никогда, не под каким предлогом не используйте отладчик - он для слабаков.
7. Terabaytus 01.07.24 16:10 Сейчас в теме
(6) К чему это? Вот в вопросе прямо говорится про цикл, и что не знаю как его применить ваш ответ уже опробован, тоже написал. К чему вы тут ёрничаете не понятно.
8. Zevzm 01.07.24 16:14 Сейчас в теме
(7) Если конечно и это неправильно, то обойдите ТЗ из .Значение в цикле.
Прикрепленные файлы:
9. Terabaytus 01.07.24 16:33 Сейчас в теме
(8) Если в отладчике смотреть то приходит из данных число, тип поля тоже число, но на шаге Итог в появаляется тип число 0 почему то.
Как в цикле обойти я не могу понять?
11. Zevzm 01.07.24 16:35 Сейчас в теме
(9) Оставьте в покое ДанныеСтроки.
Просто вычислите в отладчике это - ЭлементыФормы.Таблица.Значение. Там есть ТаблицаЗначений?
13. Terabaytus 01.07.24 16:42 Сейчас в теме
(11)Нет такого типа данных у меня не в отладчике не фигурирует только табличная часть. Я пишу обычное приложение на 8.2
14. Zevzm 01.07.24 16:44 Сейчас в теме
(13)
Как называется тот элемент на форме в палитре свойств? Итог по колонке которого вы считаете.
10. user2033930 01.07.24 16:35 Сейчас в теме
Не стоит залезать в задницу, чтобы по составу дерьма посчитать количество зубов.

Это к вопросу про ПриВыводеСтроки(). Думай.
12. Zevzm 01.07.24 16:40 Сейчас в теме
(10) Это он из другой темы перенес.
Я нашел два способа:
1. У табличного поля есть свойство "ВыделенныеСтроки" и оттуда можно посчитать выделенное;
2. В свойстве "Значение" содержится ТЗ с данными и там можно посчитать все.
А ему все цикл подавай...
15. Terabaytus 01.07.24 16:45 Сейчас в теме
(12)Где?
Прикрепленные файлы:
16. Zevzm 01.07.24 16:49 Сейчас в теме
(15)Это колонка. А поле целиком?
Прикрепленные файлы:
17. Terabaytus 01.07.24 16:54 Сейчас в теме
(16)Таблица ТабличноеПоле1 Поле ввода
18. Zevzm 01.07.24 16:57 Сейчас в теме
19. Terabaytus 01.07.24 17:03 Сейчас в теме
(18)
Прикрепленные файлы:
20. Zevzm 01.07.24 20:51 Сейчас в теме
(19) "Услуги" это табличное поле? Можно скрин его свойств?
21. Terabaytus 02.07.24 08:37 Сейчас в теме
(20)
Прикрепленные файлы:
22. Zevzm 02.07.24 08:47 Сейчас в теме
(21) У вас два скрина со свойствами заголовка и поля ввода колонки.
Можете щелкнуть правой кн. по рамке всего табличного поля и показать свойства?
Прикрепленные файлы:
23. Terabaytus 02.07.24 08:59 Сейчас в теме
(22)
Прикрепленные файлы:
24. Zevzm 02.07.24 09:15 Сейчас в теме
(23) Значит точно табличное поле, которое связано с табличной частью объекта.
Если вы хотите посчитать итог по колонке именно через табличное поле пишите: ИтогПоКолонке = ЭлементыФормы.Услуги.Значение.Итог("Количество");
Либо считайте итог по ТЧ Объекта: ИтогПоКолонке = ЭтотОбъект.Услуги.Итог("Количество");

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

Откуда взялось это выражение
ПриВыводеСтроки()
оно у меня в вопросе нигде не фигурирует?
26. Zevzm 02.07.24 09:36 Сейчас в теме
(25)
"Процедура ТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)"

Так если у вас в двух вариантах 0. Может быть вы колонки путаете? Итог по одной, а данные в другой?
27. Terabaytus 02.07.24 09:39 Сейчас в теме
(26)Мне кажется дело втом что в неё как то странно попадают данные

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

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

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

КонецПроцедуры
Показать
29. Zevzm 02.07.24 10:03 Сейчас в теме
(27) Более чем странно. Этот код вы писали? Для чего? Что содержится в ДанныеСтроки.Таблица в отладчике?
30. Terabaytus 02.07.24 10:33 Сейчас в теме
(29)ДанныеСтроки = 0. Может всё же подскаже как в цикле полученные значения сложить?
31. Zevzm 02.07.24 10:44 Сейчас в теме
(30)
Вы можете показать в отладчике что у вас содержится в "ДанныеСтроки.Таблица"?
32. Terabaytus 02.07.24 12:26 Сейчас в теме
(31)
Прикрепленные файлы:
33. spacecraft 02.07.24 13:55 Сейчас в теме
(32) Это услуга. Количество = 0. От этого и Итог = 0.
Есть еще КоличествоЧегоТо, так это строка. Значение которой возможно показывается на форме.
Может будет достаточно просто максимум НомерСтроки получить в Услуга? Или количество элементов
34. Terabaytus 02.07.24 14:55 Сейчас в теме
(33)В ДанныеСтроки это колонки таблицы. Колонка Количество без цыфры = 0 тип число это по ней нужно получить итог.
Далее идёт содержание таблицы услуги что в неё подает и как видно там тоже есть количество тип число оно =0,2 вот это значение и должно попасть в колонку и оно пропадает но почему-то ИтогПоКолонке =0
Ещё раз повторюсь если обратиться к данным строки я получу значение количество как его сложить то, не выходит как надо то хотябы костылно сделать?
35. spacecraft 02.07.24 15:15 Сейчас в теме
(34)
Далее идёт содержание таблицы услуги что в неё подает и как видно там тоже есть количество тип число оно =0,2

Это вообще-то значение реквизита элемента самого справочника
36. Terabaytus 02.07.24 15:16 Сейчас в теме
(35)Вот и выходит что по нему итог не посчитать?
37. spacecraft 02.07.24 15:19 Сейчас в теме
(36) Э... вот это поворот.
Ну, в запросе можно получить эти значения, как и любые реквизиты справочника. Этих значения нет в табличном поле от слова совсем.
38. Terabaytus 02.07.24 15:22 Сейчас в теме
(37) А я самого начала говорил давайте костылить вместе)
39. spacecraft 02.07.24 15:25 Сейчас в теме
(38) получаете все элементы (ссылки) на справочник из табличного поля (тз).
В запрос передаете как массив. В запросе получаете нужные элементы справочника и нужный реквизит у этих элементов.
Применить агрегатную функцию Сумма(значение реквизита).
Terabaytus; +1 Ответить
40. Terabaytus 02.07.24 15:32 Сейчас в теме
(39)А в коде это выразите, пожалуйста?
44. Terabaytus 03.07.24 10:13 Сейчас в теме
(39) Можете объснить в чём ваше предложение отличается от того что я получаю эти значения через данные строки, но только не могу придумать как их сложить?
46. spacecraft 03.07.24 11:05 Сейчас в теме
(44) то что "получаете" это просто отрабатывают функции самого отладчика по получению значений по ссылке. Фактически их нет и за ними нужно идти в базу. Можно конечно через точку от ссылки получать, но это плохо.
Я же предложил получать значения реквизитов ссылки через запрос.
У меня нет вашей базы и посмотреть не могу, что там и как.
47. Terabaytus 03.07.24 14:20 Сейчас в теме
(46)Вы мне может объяснить, а что не так с этой таблицей почему данные добовляються через ОформлениеСтроки? Это всё из-за 8.2 обычных форм? Если в таблицу вводить данные в поле в ручную то Итог() работает.
48. Sashares 35 03.07.24 14:41 Сейчас в теме
(47)В обычных формах нельзя просто так в таблицу вывести реквизит ссылочного поля, как в управляемых формах.
Поэтому добавляют пустую колонку, не связанную с данными и в ПриВыводеСтроки заполняют ее нужным значением.

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

Чтобы в таблице документа для номенклатуры выводилась цена из справочника Номенклатура, добавляют пустую колонку Цена и заполняют ее в ПриВыводеСтроки.
Terabaytus; +1 Ответить
49. Terabaytus 03.07.24 14:49 Сейчас в теме
(48) хорошо, я положил всё значения в коллекцию они уже не ссылочные, но всё равно добавить не выходит, сейчас то почему?
Элемент.ТекущаяСтрока.Количество = Количество.Значение
50. Sashares 35 03.07.24 14:54 Сейчас в теме
(49)По данному куску кода без базы я ничего не могу сказать.
Тут вам только к телепатам.
53. Terabaytus 03.07.24 15:04 Сейчас в теме
(50)зачем вам база тут вопрос как добавить значения в таблицу без ОформленияСтроки просто положить их что бы они там были не как декарация. Значения не ссылочные.
Конкретный вопрос в обычных формах это возможно? Если да то пример пожалуйста из кода.
51. spacecraft 03.07.24 14:56 Сейчас в теме
(47)
почему данные добовляються через ОформлениеСтроки

Это именно оформление. И в данном случае Значение для нее это значение, отображаемое в колонке
Как оформление ячейки. Может быть установлен Цвет, Фон, так и выводимый Текст.
52. Terabaytus 03.07.24 14:58 Сейчас в теме
(51)вот хорошо, а что мне мешает добавить в неё значение ведь в таблицы дабавлют значения просто значения без оформления или это в обычных формах не возможно?
54. spacecraft 03.07.24 15:05 Сейчас в теме
(52) СП:
ОформлениеЯчейки (CellAppearance)
Значение (Value)
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Содержит значение, отображаемое в колонке. Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения.

Это возможность выводить значение в ячейку несвязанное напрямую значение. Оно там будет просто отображаться.
Как на УФ можно выводить на форму значения реквизита ссылки, Но нигде больше не хранится в данных формы. И обратиться в коде к этим значениям нельзя. Только получая из базы.
Terabaytus; +1 Ответить
55. Terabaytus 03.07.24 15:20 Сейчас в теме
(54)а как люди раньше то итог получали в ОФ, я правильно понял, что итог считать нужно в регистре куда будут попадать добавленные услуги в этой таблице?
56. spacecraft 03.07.24 15:25 Сейчас в теме
(55) просто есть колонки, которые связанные с данными, а есть - не связанные. Там выше есть описание.
"Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения."
Если в коде идет присвоение, то данная колонка не связанна с данными.
Terabaytus; +1 Ответить
45. Sashares 35 03.07.24 10:24 Сейчас в теме
(39)Сложно, очень сложно. Если бы мы знали что это такое, но мы не знаем, что это такое.
28. Terabaytus 02.07.24 09:57 Сейчас в теме
41. ico 02.07.24 15:41 Сейчас в теме
Вы хотите подсчитать что-то в цикле внутри процедуры "ПриВыводеСтроки"?
Эта процедура вызывается сама в цикле и городить внутри нее что-то циклическое не имеет смысла.
Можно объявить глобальную переменную и в ней собирать сумму. А для чего все это? Надо же что-то в конце сделать?
Задача целиком как звучит?
Terabaytus; +1 Ответить
42. Terabaytus 02.07.24 15:51 Сейчас в теме
(41)согласен процедура сама как цикл, заголовок немного некоректен. Какой вариант сложения есть номера строк и количество.
43. ico 02.07.24 15:58 Сейчас в теме
Для чего нужна эта сумма? Если для визуализации, то надо создать надпись на форме и там изменять текст внутри процедуры ПриВыводеСтроки. Если для получения итога, то надо к данным обращаться и не в этой процедуре.
Terabaytus; +1 Ответить
57. ico 03.07.24 15:34 Сейчас в теме
Вы о каких таблицах ведете речь?
1. ТаблицаЗначений. Там данные хранятся. Сумма по колонке будет вычислена оператором Табл.Итог("ИмяСтолбца");
2. ТабличнаяЧасть. Там тоже данные хранятся. Но используется у справочников и документов. Сумма по колонке тоже через ТаблЧасть.Итог("ИмяКолонки");
3. ТабличноеПоле. Вот здесь уже сложнее вытащить данные. Это элемент формы для отображения таблицы значений или табличной части. Именно тут начинаем использовать всякие ПриВыводеСтроки() ПриПолученииДанных().
Вы в своем примере пытаетесь получить данные при выводе строки. Зачем? В другом месте - нельзя это сделать? Вас ведь именно это спрашивают!
Terabaytus; +1 Ответить
58. Terabaytus 03.07.24 15:39 Сейчас в теме
(57)Например в каком месте?
59. Sashares 35 03.07.24 15:43 Сейчас в теме
60. Terabaytus 03.07.24 15:46 Сейчас в теме
(59)Что вы под местом подразумеваете можете конкретно сказать?Только вас понимать начал и вот начали загатками говорить.
64. Sashares 35 03.07.24 16:54 Сейчас в теме
(60)В любом событии формы можно посчитать данные таблицы.
Хоть при открытии, хоть в любом другом.
Хоть кнопку добавить - на нажатие кнопки посчитать.
62. Terabaytus 03.07.24 16:38 Сейчас в теме
(57)У меня пунк 3 я работаю в процедуре ПриВыводеСтроки() значения я получаю и даже сложил их в структуру как теперь получить итог?
61. ico 03.07.24 15:59 Сейчас в теме
(60) Место - в какой процедуре будет размещаться код суммирования данных.
У вас есть доступ к данным?
Знаете, как называется таблица и колонки, которые надо суммировать?
Вставьте код получения итога по колонке в какую-нибудь ПриОткрытии или ПриПолученииДанных.
63. ico 03.07.24 16:50 Сейчас в теме
(62) Складывать значения в структуру для чего? Оттуда удобнее доставать?

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

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

Процедура ПриВыводеСтроки()
  ...
  СуммаСекретногоПоля = СуммаСекретногоПоля + ХренПоймиОткудаБерущеесяЗначение;
  Элементы.ДекорацияИтогСекретнойКолонки.Заголовок  = Формат(СуммаСекретногоПоля, "Ч5.0");
  ...
КонецПроцедуры
Показать
Terabaytus; +1 Ответить
65. Terabaytus 03.07.24 17:14 Сейчас в теме
(63)Спасибо то что нужно, но тоже не много не то значения теперь скачут при каждом обращении к таблице.
66. Sashares 35 03.07.24 17:41 Сейчас в теме
(65)Ну так сделай цикл в котором будет расчет суммы по таблице, помести в отдельную процедуру.
Вызывай эту процедуру перед открытием, при изменении количества строк таблицы, при изменении значения в колонке, от которой зависит сумма.
Какие сложности?
ОбщийИтог = 0;
Для Каждого СтрТЧ Из МояТЧ Цикл
ОбщийИтог  = ОбщийИтог  + СтрТЧ.РеквизитТЧ.РеквизитРеквизитаТЧ;
КонецЦикла;
Terabaytus; +1 Ответить
68. Terabaytus 04.07.24 09:41 Сейчас в теме
(66) Сделал не цепляет выводит 0

Процедура РасчётСуммы()
 ОбщийИтог = 0;
 Для Каждого СтрТЧ Из Услуги Цикл
        ОбщийИтог  = ОбщийИтог  + 
 СтрТЧ.Количество;
        Сообщить(ОбщийИтог);
КонецЦикла
КонецПроцедуры
Показать
70. Sashares 35 04.07.24 10:07 Сейчас в теме
(68)Ох, чел...

Процедура РасчётСуммы()
ОбщийИтог = 0;
Для Каждого СтрТЧ Из Услуги Цикл
ОбщийИтог = ОбщийИтог +
СтрТЧ.Услуга.Количество;
Сообщить(ОбщийИтог);
КонецЦикла
КонецПроцедуры
Terabaytus; +1 Ответить
71. Terabaytus 04.07.24 11:42 Сейчас в теме
(70)Спасибо тебе прям то что нужно.
67. ico 04.07.24 09:34 Сейчас в теме
(65) Значения скачут, потому что обнуление один раз, а суммирование ведется в левой процедуре - ПриВыводеСтроки. К ней обращаются при любом сдвиге табличного поля.
Суммировать надо где-то в другом месте, которое не вызывается по сорок раз на дню...
Либо ПриОткрытии, либо ПриСозданииНаСервере, либо в обработчике какого-то единичного события (клик по кнопке, например). Главное счётчик не забудь обнулить ))
odinsmot; Terabaytus; +2 Ответить
69. Terabaytus 04.07.24 09:48 Сейчас в теме
(67)Не получиться данныеСтроки приходят только в ПриВыводеСтроки
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот