1с как посчитать сумму в табличной части

Обновлено: 07.07.2024

Все работает хорошо, но при добавлении копированием выбранной строки (F9) в первый случай копирования значение Объект.СуммаПоДокументу не обновляется. В дальнейшем расчет идет без данных этой строки. Последующее использование F9 (несколько раз) для любой строки вызывает пересчет за исключением бедной строки. При добавлении строки стандартным способом (ins) и вводе значений - расчет получается правильный. Если добавить копированием (F9) – опять появляется неучтенная в итогах сумма для новой строки.
Рассмотрел значения полей по шагам. В процедуру
Код 1C v 8.2 УП
Передается элемент с типом ТаблицаФормы с новой строкой с нулевыми значениями, установлено значение только в поле НомерСтроки:
Элемент.ТекущиеДанные.НомерСтроки

Вопрос знатокам: это глюк системы или можно обойтись другими программными средствами? Например отслеживать F9 и вызывать функцию РсчетСуммыПоДокументу()

Выбор (S_election)
ВыборЗначения (ValueChoice)
НачалоПеретаскивания (DragStart)
ОбработкаВыбора (ChoiceProcessing)
ОбработкаЗаписиНового (NewWriteProcessing)
ОкончаниеПеретаскивания (DragEnd)
ПередНачаломДобавления (BeforeAddRow)
ПередНачаломИзменения (BeforeRowChange)
ПередОкончаниемРедактирования (BeforeEditEnd)
ПередРазворачиванием (BeforeExpand)
ПередСворачиванием (BeforeCollapse)
ПередУдалением (BeforeDeleteRow)
Перетаскивание (Drag)
ПослеУдаления (AfterDeleteRow)
ПриАктивизацииПоля (OnActivateField)
ПриАктивизацииСтроки (OnActivateRow)
ПриАктивизацииЯчейки (OnActivateCell)
ПриИзменении (OnChange)
ПриНачалеРедактирования (OnStartEdit)
ПриОкончанииРедактирования (OnEditEnd)
ПриСменеТекущегоРодителя (OnCurrentParentChange)
ПроверкаПеретаскивания (DragCheck)

Разбирал глюки системы:
В табличном поле установим флаг «Подвал».
В 1С 8.0 в табличном поле для колонки можно было установить флаг «Показывать итог в подвале». В 1С 8.2 такого нет. Приходится указывать для реквизита «СписокНоменклатурыСумма» путь к данным подвала «Объект.СписокНоменклатуры.ИтогСумма». Для наглядности в окне редактирования формы в правом верхнем углу (в окне реквизитов формы) раскроем основной реквизит формы «Объект», потом раскроем «СписокНоменклатуры». Мышкой «схватим» элемент «ИтогСумма» и перетащим в окно элементов формы (левая верхняя часть окна редактирования формы). Получим поле надписи «СписокНоменклатурыИтогСумма», а на форме надпись «Сумма (итог):». При этом, остается пустым свойство «Заголовок» поля надписи «СписокНоменклатурыИтогСумма».

Для устойчивости добавим процедуру:

В результате на форме отображаются два поля надписи:
«Сумма по документу»,
«Сумма (итог):».
При изменении данных в таблице происходит пересчет суммы, отображаются одинаковые данные. Но если добавить новый элемент копированием текущего (кнопкой или F9), то в подвале таблицы и в поле «Сумма (итог):» отображаются правильные данные, а в поле «Сумма по документу» - нет.
Не получается получить значение (текст) из Элементы.СписокНоменклатурыИтогСумма.

Для дальнейших расчетов в документе «ПриходнаяНакладная» реквизит «СуммаПоДокументу» будет показывать правильное значение.

При создании отчетов очень часто бывают такие ситуации когда необходимых данных просто нет в базе. В таком случае их можно вычислить, в СКД такая возможность есть. Например, вы сделали отчет в котором есть сумма без НДС и собственно сумма самого НДС а итоговой суммы нет. В этом случае необходимо вычислить итог, сложив имеющие данные. Для этого нужно создать вычисляемое поля и добавить его в отчет.

Прежде чем продолжить дальше, советую ознакомиться со следующими статьями, про 1С программирование и администрирование.

Как добавить вычисляемое поле в СКД 1С 8.3

И так еще раз для наглядности примера, есть вот такой отчет, в котором есть сумма НДС и сумма документа (каких-то услуг), нам необходимо добавить еще одну колонку в которой будет выводиться итоговая сумма документа.

1С СКД Вычислить

Для этого открываем схему компоновки данных и смотрим как называются поля которые нужно сложить.

1С СКД вычисляемые поля

И не забываем про заголовок.

Как добавить вычисляемое поле в СКД

1С СКД вычисляемое поле

Сохраняем и проверяем результат, как видим итог добавился и посчитался правильно.

1С СКД как добавить вычисляемое поле

Таким образом можно вычисли все что угодно, произвести любое арифметическое действие, или например, посчитать НДС 18 либо 20 % от числа.

Продолжаем изучать программирование в системе 1С Предприятие. Сегодня поговорим о том, как подсчитать итоги по колонке в табличной части. Нам нужно чтобы итог подсчитывался автоматически.

В предыдущих статья я рассказывал, как создать новый документ потом мы с вами написали пару процедур для автоматического подсчета суммы в табличной части. Теперь сделаем итог для этой колонки. Сегодня в примере я буду использовать тот же документ, который мы создали ранее. Поэтому советую вам ознакомиться с предыдущими статья, Создание документа, Подсчет итогов в строке табличной части.

Авто подсчёт итогов по колонке в табличной части 1С

И так преступим, запускаем 1С в режиме конфигуратора. Далее переходим в созданный ранее документ. Открываем его и переходим на вкладку формы и открываем её.

1с итог по колонке

В окне формы нужно кликнуть два раза на табличную часть справа должно появиться окно свойств таблицы. В нем ищем пункт Подвал и ставим галочку.

1с итог по колонке таблицы значений

После чего на форме в табличной части снизу должен появиться подвал.

итог по колонке 1с

Теперь на нужно чтобы в колонке Сумма подсчитывался итого. Для этого на вкладке Элементы ищем пункт с Название МатериалыСумма и кликаем на нем два раза. Справа появиться свойства поля в них ищем пункт
ТекстПодвала и вписываем Итого. А в пункте ПутьКДаннымПОдвала кликаем на три точечки.

1с итог по колонке в табличной части

В открывшемся окне нужно выбрать ИтогоСумма.

итог по столбцу 1c

Теперь запускаем отладку и проверяем считается ли итог по колонке в табличной части документа.

как сделать итог в 1с

Вот мы и сделали автоматический подсчет итогов по колонке. Таким образом можно подсчитать итого во всех колонках и в любых документах.

Сегодня решить посмотреть Бухгалтерию КОРП. Нашёл в ней очень интересную штуку: поле в котором показан результат сложения выделенных ячеек печатной формы. Конечно, такую штуку бы правильнее реализовать на уровне платформы. Но коль нет, можно оказывается сделать ручками. Как говориться, и за это богам спасибо.

Вот исходный код из Бухгалтерии КОРП:
Код 1C v 8.х

Подумав немного, я добавил в функцию ещё расчёт среднего и определение количества ячеек с числами. Получилось вот что:
Код 1C v 8.х

title

Результат на картинке:

Да, чуть не забыл самое главное, функцию надо вызвать в обработчике ПриАктивизацииОбласти поля табличного документа.

Разместил: E_Migachev  Версии: | 8.x | 8.2 УП |  Дата: 31.03.2010   Прочитано: 22065

Распечатать

Похожие FAQ

Еще в этой же категории

Вывод картинки (изображения) на печать, в макет (табличный документ)  32
// 1-й вариант //Как вывести картинку в табличный документ? ТабДок = Новый ТабличныйДокумент; Макет = ОбработкаОбъект.ПолучитьМакет(" Макет" ); ОбластьКартинки = Макет.ПолучитьОбласть(" ОбластьСКартинкой" ); Картинка = Новый Картинка(ПутьККа Вывести табличный документ в PDF  18
Данный пример работает на платформе выше 8.2.13 Макет = ПолучитьМакет(" Макет" ); ОбластьШапка = Макет.ПолучитьОбласть(" Шапка" ); ТабДок = Новый ТабличныйДокумент; ОбластьШапка.Параметры.НомерДок = Номер; ОбластьШапка.Параметры.ДатаДок = Как в отобразить картинку в табличной части  7
В табличной части есть документы заявки от покупателя, нам нужно добавить картинку для отображения статуса документов заявка - проведен , не проведен, помечен на удаление. //Отобразим картинку Процедура СписокПриВыводеСтроки(Элемент, Оформление Вывод колонтитулов программно ВерхнийКолонтитул, НижнийКолонтитул  6
Колонтитул является специальным текстом, выводимым вверху или внизу каждой страницы при выводе документа на печать. В тексте колонтитула можно использовать следующие управляющие конструкции: > ( >) - при печати в данном месте будет выведен номер ст Функция загружает весь табличный документ в таблицу значений  6
// Вариант 1 // По переданному табличному документу возвращает таблицу значений, // при условии что в первой строке таблицы - идентификаторы колонок // Автор : dimoff Функция ПолучитьТЗИзМакета(ТабДок, КолонкаИндекса = 1) Экспорт ТаблицаДанн Посмотреть все в категории Табличный документ

Ключевые слова и Изображения

Слова упорядочены по частоте использования в тексте

Изображения

Как сделать чтобы при выделении числе в табличном документе, отчете выводилась их сумма?

Да полезная, но если табличный документ большой работает крайне медленно. Да, *08, автор не позаботился о выводе, оставил это нам

Функция лишь вычисляет, а еще необходимо позаботиться о том, чтобы отобразить результат, например в какой-либо надписи
Код 1C v 8.х

Кроме того, раз уж Вы добавили среднее и количество, то их тоже нужно возвращать
Код 1C v 8.х

Процедура ПолеТабличногоДокументаПриАктивизацииОбласти(Элемент)
ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(Элемент);
КонецПроцедуры

Процедура ПолеТабличногоДокументаПриАктивизацииОбласти(Элемент)
ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ЭлементыФормы.ПолеТабличногоДокумента);

Читайте также: