Расчет суммы значений из нескольких полей

BitG

Посетитель
Здравствуете, подскажите, как рассчитать сумму нескольких числовых значений? Предположим мы создали в конструкторе объект в котором есть несколько полей ( "нарушения", "нарушения-1").
Мы создали несколько сотен итоговых объектов (это то что мы создаем при нажатии на кнопку создать, подскажите, как это правильно обозначать), как сложить количество всех "нарушений" и "нарушений-1" (отдельно от "нарушений") и вывести итоговую сумму?
 

Vladimir

Администратор
Команда форума
Добрый день.
Не совсем понятен вопрос. Под итоговыми объектами подразумеваются запись в дочернем списке?
Нужно сложить количество заполненных полей или получить сумму из их значений?
И что значит отдельно от нарушений?

Как вариант - можете создать упрощённый пример проекта с несколькими объектами/полями в качестве примера.
 

Vladimir

Администратор
Команда форума
Для расчёта значений из числовых полей служит расчётное поле ("Расчёт"). В этом поле также можно оперировать другими расчётными полями, датами и временем:
Поле расчёта.jpg
Перетащите это поле в нужную позицию списка (например рядом с полем "Количество нарушений"). Скопируйте в буфер название старого поля и удалите его, а для нового поля скопируйте старое имя из буфера.
Для этого поля надо составить формулу суммирования значений из указанных полей. Имена полей, используемых в формуле должны быть обрамлены квадратными скобками. Это удобно делать через контекстное меню в формуле, предварительно выделив нужное поле:
Задание формулы расчёта в поле.jpg
Если для расчёта используются поля текущего объекта, то в квадратных скобках указывается только имя поля. Если необходимо получить данные из ссылочного объекта, то перед именем поля вводится имя поля ссылки на объект (имена разделяются точкой). Таким образом можно получать данные любой глубины вложенности.

У Вас достаточно много полей для общего суммирования. Есть смысл сделать промежуточные поля расчётов по группам ("В органах государственной власти и управления, в организациях", "В сфере соблюдения прав и интересов несовершеннолетних", ...), а затем из них собрать данные в общий итог.
Также группы можно выделить цветом для удобства восприятия: можно предположить, что объёмы вводимых данных очень большие и глаза будут уставать от бесконечных рядов цифр.
И ещё можно сделать скрытие блоков, где информацию вводить не надо - также очень упрощает работу с данными.
 

BitG

Посетитель
Но я имел ввиду немного иное, вот в моем примере имеется 2 документа (один адресован директору ООО "Рога и копыта", а другой директору "Копыта и рога"), как сделать так чтобы получить сумму значений из полей с одним названием?

То есть мы берем значение из поля "Количество нарушений" документа № 1 (это будет 2) и суммируем его со значением из поля "Количество нарушений" документа № 2 (это будет 3), аналогично с другими числовыми полями.

Или иначе говоря мне необходимо знать сумму нарушений каждой категории (каждого поля).

Заранее благодарю!
 

Vladimir

Администратор
Команда форума
Т.е. требуется получить итог по каждому полю объекта для всех записей?
Такое нельзя сделать в объекте, так как для числового поля в нём нет данной возможности. Она есть в форме связи, которую надо создать на базе объекта.
В форме, для числовых и расчётных полей есть дополнительные свойства, одно из которых: "(Итог в нижней части списка) Итог":
Итог суммирования для числовых и расчётных полей в форме связи.jpg
Но в Вашем случае такой результат с суммированием итогов для большого числа полей - невозможно, они заполнят всю нижнюю часть под списком и он перестанет быть видимым.
Кстати: на будущее запланировано задание отображения итоговых полей на дополнительной вкладке справа от списка или в нижней части на вкладке за фильтром, что могло бы послужить определённым образом для решения задачи. Но всё равно, для такого числа полей - это не самое красивое решение.

Для решения Вашей задачи желательно построить иную структуру проекта.
1. Создать следующий объекты:
- документ;
- нарушения;
- список нарушений (с полями ссылки на нарушение и числом).
Можно также добавить другие объекты для удобства.

2. На базе документа создать форму связи документов, в которой:
- добавить дочерний объект списка нарушений;
- в поле общего числа указать суммирование из поля числа дочернего списка нарушений.

3. Создать форму итогов на базе объекта нарушений. В нём:
- установить свойства результата "за период";
- добавить результирующее поле числа нарушений со свойством "за период";
- в этом результирующем поле:
--- добавить расчёт из объекта списка нарушений и поля с именем нарушения;
--- определить поле суммирования ("Число");
--- установить условие по дате: [~Документ.Дата].
Данное условие будет определять, из каких записей получать данные по указанному периоду. Период задаётся в фильтре итоговой формы двумя полями: началом и окончанием требуемого периода:
Расчёт итога по числу нарушений.jpg

Пример проекта с минимальной структурой и записями в приложении.
 

Вложения

BitG

Посетитель
Спасибо за пример! Скажите а есть ли возможность выведения итогов в отдельный документ формата word или exel?
 

Vladimir

Администратор
Команда форума
Да, для объектов, форм связи и итогов можно создавать шаблоны MS Word/Excel, на основе которых формируются документы.
В посту Создание шаблона документа в MS Word дано начальное описание: что такое шаблон и как его создавать. А тут описывается создание документа со списком записей: Как вывести список записей в документ.
По шаблонам есть достаточно постов, можно посмотреть по тэгам "шаблоны документов" и "ms word" на странице форума http://runabase.ru/forum/tags/
Но если возникнут вопросы - уточняйте, пожалуйста.
 

BitG

Посетитель
К сожалению не нашел, я имел ввиду выведения итогов по каждому полю объекта в документ Word/Excel.

То есть ли возможность обойти проблему с тем, что списки итогов при большом количестве полей в одном объекте будут бесполезны?
 

BitG

Посетитель
Второй вопрос снят - это можно сделать через форму итогов. И все таки можно вывести итоги в Word/Excel.

Также другой, как использовать результирующие поля и конечные расчеты? https://yadi.sk/i/EDk2iOXSfGP3lw

P.S. почему-то руна не позволяет сделать скрин через программы для быстрых скринов, которые файл с картинкой создают в заданной папке.
Сейчас у меня эту задачу выполняет Screen Capture, ранее пользовался другой программой, но проблема имелась аналогичная.
 

Vladimir

Администратор
Команда форума
К сожалению не нашел, я имел ввиду выведения итогов по каждому полю объекта в документ Word/Excel.
То есть ли возможность обойти проблему с тем, что списки итогов при большом количестве полей в одном объекте будут бесполезны?
Извините, непонятен вопрос. Что именно надо получить на выходе? Отчёт за период по данному типу нарушения?

Второй вопрос снят - это можно сделать через форму итогов. И все таки можно вывести итоги в Word/Excel.
Также другой, как использовать результирующие поля и конечные расчеты? https://yadi.sk/i/EDk2iOXSfGP3lw
Эти поля выводятся в форме и могут быть отображены в отчёте. Результирующие поля строятся на базе полей объекта, а уже они используются для конечных расчётов.

В настройках форума мы задали максимальный размер для скриншотов: 1280 на 800 пикселей - для ограничения размера загружаемого файла. Обычно этого размера хватает для пояснения вопроса.
 

Vladimir

Администратор
Команда форума
Для вывода в документ итоговых значений под списком, в шаблоне указывается имя поля с префиксом total. (справка), например так:
[total.Количество нарушений]
 
Сверху Снизу