При работе в среде 1С:Предприятие на обычных формах часто возникает необходимость отобразить сумму значений по колонке в подвале списка. Стандартные инструменты не всегда позволяют сделать это «одной галочкой», особенно если список динамический и имеет сложную систему отборов. Давайте разберем, как реализовать эту задачу наиболее эффективно.
Когда вы работаете с журналом документов или списком, важно понимать, что данные в нем отображаются не просто так, а с учетом всех фильтров, установленных пользователем. Если просто пробежаться по всей базе, вы получите неверную сумму. Использование ПостроительЗапроса позволяет связать текущий ИсточникДанных вашего списка с запросом, что гарантирует точное соответствие итогов тому, что видит пользователь на экране.
Для начала разберем алгоритм получения данных из списка. Нам нужно извлечь данные с учетом наложенных отборов, а затем просуммировать их. Рассмотрим пример кода, который делает это корректно:
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЖурналДокументовСписок);
Результат = Построитель.Результат;
ТаблицаДокументов = Результат.Выгрузить();
ИтоговаяСумма = ТаблицаДокументов.Итог("СуммаДокумента");
ЭлементыФормы.ЖурналДокументовСписок.Колонки.СуммаДокумента.ТекстПодвала = Формат(ИтоговаяСумма, "ЧЦ=15; ЧДЦ=2");
В этом коде мы создаем ПостроительЗапроса, передаем ему наш список (например, ЖурналДокументовСписок), выгружаем результат в ТаблицаЗначений и используем метод Итог(). Это самый надежный способ.
Часто требуется не просто вывести одну сумму, а сложить показатели из разных колонок. Давайте посмотрим, как это сделать. Мы можем рассчитать итоги для каждой колонки отдельно, а затем сложить их перед выводом в подвал.
Сумма1 = ТаблицаДокументов.Итог("СуммаОплатаБС");
Сумма2 = ТаблицаДокументов.Итог("СуммаОплата");
ОбщаяСумма = Сумма1 + Сумма2;
ЭлементыФормы.ЖурналДокументовСписок.Колонки.ИмяКолонки.ТекстПодвала = "=" + Формат(ОбщаяСумма, "ЧЦ=15; ЧДЦ=2");
Обратите внимание на использование символа = в свойстве ТекстПодвала. Это позволяет 1С корректно отобразить вычисленное значение как итог. Также мы применяем функцию Формат(), чтобы число выглядело аккуратно и содержало нужное количество знаков после запятой.
Формат(), чтобы избежать проблем с отображением длинных чисел или лишних нулей.Использование ПостроительЗапроса является профессиональным стандартом для решения подобных задач на обычных формах. Этот метод позволяет гибко управлять данными, не создавая лишних запросов к базе данных и обеспечивая высокую точность расчетов. Если вы планируете продолжать разработку на обычных формах, обязательно освойте работу с этим объектом — он сэкономит вам массу времени.
Развивайтесь в программировании 1С, пробуйте предложенные подходы на практике, и со временем решение даже самых «сложных» задач, таких как работа с итогами в журналах, будет занимать у вас считанные минуты!