Всем привет, подскажите, завис, как посчитать сумму приходящих значений
Значения приходят в
Если применить ЦИКЛ то как оформить?
Версия 8.2 обычные формы
Процедура ТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки = Неопределенно Тогда
Возврат;
КонецЕсли;
ОформлениеСтроки.Ячеки.УслугаНаименование.Значение = ДанныеСтроки.Таблица.Наименование;
ОформлениеСтроки.Ячейки.УЕТ.Значение = ДанныеСтроки.Таблица.Количество;
КонецПроцедуры
ПоказатьЗначения приходят в
ДанныеСтроки
как их можно сложить что бы получить итог?
Если применить ЦИКЛ то как оформить?
Версия 8.2 обычные формы
По теме из базы знаний
- Всякие полезности
- Расчет итогов по группам справочника в прямом запросе.
- 1С с "плюсами"
- Нетривиальные подходы в решении всем известных проблем: ускорение «больших» документов в 1С и ускорение поиска по подстроке. Как добиться эффекта в разы?
- Учимся готовить кроликов с редиской: опыт применения Rabbit MQ и Redis в интеграционных проектах
Найденные решения
(62) Складывать значения в структуру для чего? Оттуда удобнее доставать?
Перем СуммаСекретногоПоля;
Процедура ПриОткрытии()
...
СуммаСекретногоПоля = 0;
...
КонецПроцедуры
Процедура ПриВыводеСтроки()
...
СуммаСекретногоПоля = СуммаСекретногоПоля + ХренПоймиОткудаБерущеесяЗначение;
Элементы.ДекорацияИтогСекретнойКолонки.Заголовок = Формат(СуммаСекретногоПоля, "Ч5.0");
...
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(23) Значит точно табличное поле, которое связано с табличной частью объекта.
Если вы хотите посчитать итог по колонке именно через табличное поле пишите: ИтогПоКолонке = ЭлементыФормы.Услуги.Значение.Итог("Количество");
Либо считайте итог по ТЧ Объекта: ИтогПоКолонке = ЭтотОбъект.Услуги.Итог("Количество");
Сделайте кнопку и напишите код в ее обработчике. Оставьте пока "ПриВыводеСтроки()" в покое.
Если вы хотите посчитать итог по колонке именно через табличное поле пишите: ИтогПоКолонке = ЭлементыФормы.Услуги.Значение.Итог("Количество");
Либо считайте итог по ТЧ Объекта: ИтогПоКолонке = ЭтотОбъект.Услуги.Итог("Количество");
Сделайте кнопку и напишите код в ее обработчике. Оставьте пока "ПриВыводеСтроки()" в покое.
(24) Приданной конструкции выводит 0
Тоже самое по этой
Откуда взялось это выражение
ИтогПоКолонке = ЭлементыФормы.Услуги.Значение.Итог("Количество");
Тоже самое по этой
ИтогПоКолонке = ЭтотОбъект.Услуги.Итог("Количество")
Откуда взялось это выражение
ПриВыводеСтроки()
оно у меня в вопросе нигде не фигурирует?
(26)Мне кажется дело втом что в неё как то странно попадают данные
Процедура ТаблицаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки = Неопределенно Тогда
Возврат;
КонецЕсли;
ОформлениеСтроки.Ячеки.УслугаНаименование.Значение = ДанныеСтроки.Таблица.Наименование;
ОформлениеСтроки.Ячейки.УЕТ.Значение = ДанныеСтроки.Таблица.Количество;
КонецПроцедуры
Показать
(33)В ДанныеСтроки это колонки таблицы. Колонка Количество без цыфры = 0 тип число это по ней нужно получить итог.
Далее идёт содержание таблицы услуги что в неё подает и как видно там тоже есть количество тип число оно =0,2 вот это значение и должно попасть в колонку и оно пропадает но почему-то ИтогПоКолонке =0
Ещё раз повторюсь если обратиться к данным строки я получу значение количество как его сложить то, не выходит как надо то хотябы костылно сделать?
Далее идёт содержание таблицы услуги что в неё подает и как видно там тоже есть количество тип число оно =0,2 вот это значение и должно попасть в колонку и оно пропадает но почему-то ИтогПоКолонке =0
Ещё раз повторюсь если обратиться к данным строки я получу значение количество как его сложить то, не выходит как надо то хотябы костылно сделать?
(44) то что "получаете" это просто отрабатывают функции самого отладчика по получению значений по ссылке. Фактически их нет и за ними нужно идти в базу. Можно конечно через точку от ссылки получать, но это плохо.
Я же предложил получать значения реквизитов ссылки через запрос.
У меня нет вашей базы и посмотреть не могу, что там и как.
Я же предложил получать значения реквизитов ссылки через запрос.
У меня нет вашей базы и посмотреть не могу, что там и как.
(47)В обычных формах нельзя просто так в таблицу вывести реквизит ссылочного поля, как в управляемых формах.
Поэтому добавляют пустую колонку, не связанную с данными и в ПриВыводеСтроки заполняют ее нужным значением.
Например, в таблице документа есть колонка Номенклатура - ссылка на справочник Номенклатура.
В справочнике Номенклатура есть реквизит Цена.
Чтобы в таблице документа для номенклатуры выводилась цена из справочника Номенклатура, добавляют пустую колонку Цена и заполняют ее в ПриВыводеСтроки.
Поэтому добавляют пустую колонку, не связанную с данными и в ПриВыводеСтроки заполняют ее нужным значением.
Например, в таблице документа есть колонка Номенклатура - ссылка на справочник Номенклатура.
В справочнике Номенклатура есть реквизит Цена.
Чтобы в таблице документа для номенклатуры выводилась цена из справочника Номенклатура, добавляют пустую колонку Цена и заполняют ее в ПриВыводеСтроки.
(52) СП:
Это возможность выводить значение в ячейку несвязанное напрямую значение. Оно там будет просто отображаться.
Как на УФ можно выводить на форму значения реквизита ссылки, Но нигде больше не хранится в данных формы. И обратиться в коде к этим значениям нельзя. Только получая из базы.
ОформлениеЯчейки (CellAppearance)
Значение (Value)
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Содержит значение, отображаемое в колонке. Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения.
Значение (Value)
Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Содержит значение, отображаемое в колонке. Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения.
Это возможность выводить значение в ячейку несвязанное напрямую значение. Оно там будет просто отображаться.
Как на УФ можно выводить на форму значения реквизита ссылки, Но нигде больше не хранится в данных формы. И обратиться в коде к этим значениям нельзя. Только получая из базы.
(55) просто есть колонки, которые связанные с данными, а есть - не связанные. Там выше есть описание.
"Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения."
Если в коде идет присвоение, то данная колонка не связанна с данными.
"Если колонка, отображающая данное значение связана с данными, то данное свойство доступно только для чтения."
Если в коде идет присвоение, то данная колонка не связанна с данными.
Вы хотите подсчитать что-то в цикле внутри процедуры "ПриВыводеСтроки"?
Эта процедура вызывается сама в цикле и городить внутри нее что-то циклическое не имеет смысла.
Можно объявить глобальную переменную и в ней собирать сумму. А для чего все это? Надо же что-то в конце сделать?
Задача целиком как звучит?
Эта процедура вызывается сама в цикле и городить внутри нее что-то циклическое не имеет смысла.
Можно объявить глобальную переменную и в ней собирать сумму. А для чего все это? Надо же что-то в конце сделать?
Задача целиком как звучит?
Для чего нужна эта сумма? Если для визуализации, то надо создать надпись на форме и там изменять текст внутри процедуры ПриВыводеСтроки. Если для получения итога, то надо к данным обращаться и не в этой процедуре.
Вы о каких таблицах ведете речь?
1. ТаблицаЗначений. Там данные хранятся. Сумма по колонке будет вычислена оператором Табл.Итог("ИмяСтолбца");
2. ТабличнаяЧасть. Там тоже данные хранятся. Но используется у справочников и документов. Сумма по колонке тоже через ТаблЧасть.Итог("ИмяКолонки");
3. ТабличноеПоле. Вот здесь уже сложнее вытащить данные. Это элемент формы для отображения таблицы значений или табличной части. Именно тут начинаем использовать всякие ПриВыводеСтроки() ПриПолученииДанных().
Вы в своем примере пытаетесь получить данные при выводе строки. Зачем? В другом месте - нельзя это сделать? Вас ведь именно это спрашивают!
1. ТаблицаЗначений. Там данные хранятся. Сумма по колонке будет вычислена оператором Табл.Итог("ИмяСтолбца");
2. ТабличнаяЧасть. Там тоже данные хранятся. Но используется у справочников и документов. Сумма по колонке тоже через ТаблЧасть.Итог("ИмяКолонки");
3. ТабличноеПоле. Вот здесь уже сложнее вытащить данные. Это элемент формы для отображения таблицы значений или табличной части. Именно тут начинаем использовать всякие ПриВыводеСтроки() ПриПолученииДанных().
Вы в своем примере пытаетесь получить данные при выводе строки. Зачем? В другом месте - нельзя это сделать? Вас ведь именно это спрашивают!
(60) Место - в какой процедуре будет размещаться код суммирования данных.
У вас есть доступ к данным?
Знаете, как называется таблица и колонки, которые надо суммировать?
Вставьте код получения итога по колонке в какую-нибудь ПриОткрытии или ПриПолученииДанных.
У вас есть доступ к данным?
Знаете, как называется таблица и колонки, которые надо суммировать?
Вставьте код получения итога по колонке в какую-нибудь ПриОткрытии или ПриПолученииДанных.
(62) Складывать значения в структуру для чего? Оттуда удобнее доставать?
Перем СуммаСекретногоПоля;
Процедура ПриОткрытии()
...
СуммаСекретногоПоля = 0;
...
КонецПроцедуры
Процедура ПриВыводеСтроки()
...
СуммаСекретногоПоля = СуммаСекретногоПоля + ХренПоймиОткудаБерущеесяЗначение;
Элементы.ДекорацияИтогСекретнойКолонки.Заголовок = Формат(СуммаСекретногоПоля, "Ч5.0");
...
КонецПроцедуры
Показать
(65)Ну так сделай цикл в котором будет расчет суммы по таблице, помести в отдельную процедуру.
Вызывай эту процедуру перед открытием, при изменении количества строк таблицы, при изменении значения в колонке, от которой зависит сумма.
Какие сложности?
Вызывай эту процедуру перед открытием, при изменении количества строк таблицы, при изменении значения в колонке, от которой зависит сумма.
Какие сложности?
ОбщийИтог = 0;
Для Каждого СтрТЧ Из МояТЧ Цикл
ОбщийИтог = ОбщийИтог + СтрТЧ.РеквизитТЧ.РеквизитРеквизитаТЧ;
КонецЦикла;
(65) Значения скачут, потому что обнуление один раз, а суммирование ведется в левой процедуре - ПриВыводеСтроки. К ней обращаются при любом сдвиге табличного поля.
Суммировать надо где-то в другом месте, которое не вызывается по сорок раз на дню...
Либо ПриОткрытии, либо ПриСозданииНаСервере, либо в обработчике какого-то единичного события (клик по кнопке, например). Главное счётчик не забудь обнулить ))
Суммировать надо где-то в другом месте, которое не вызывается по сорок раз на дню...
Либо ПриОткрытии, либо ПриСозданииНаСервере, либо в обработчике какого-то единичного события (клик по кнопке, например). Главное счётчик не забудь обнулить ))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот