1с как сделать запрос нарастающим итогом

Обновлено: 07.07.2024

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

Будет полезна изучающим запросы.

Ссылки при написании:

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

Нумерация строк в запросе как яркий пример нарастающего итога. В качестве колонки_выбора выбран «код».

Реализован нарастающий итог по колонке «сумма документа». В качестве колонки_выбора выбран «номер».

Примечание1. Во всех примерах в условиях отбора в запросе используется «пометка на удаление».

Последовательность действия при получении в запросе "НарастающихИтогов".

Перед написание запроса необходимо определить колонку по которой хотим получить нарастающий итог.

Если мы хотим получить нумерацию строк в результате запроса то выибирать можно любую колонку.

По выбранной_колонке будем сортировать, соединять и использовать при группировки в нашем итоговом запросе.

Шаг1. Составляем запрос в который должны попасть то что мы хотим видеть.

Шаг2. Дополнем наш запрос из Шаг1. его точной копией.

Шаг3. Соединяем таблицу и таблицу_копию по выбранной_колонке и по ней же упорядочиваем.

Шаг4. Группируем наш запрос так чтобы в суммируемые колонки попала выбранная_колонка

Шаг5. Меняем условие соединения таблиц на больше_равно

Готово. Смотрим результат. Вот.

Примечание2. Последовательность «шагов» может быть любая. Так данное описание составление запросов с нарастающим итогом условное.

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

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

насмешил :D , какая следующая статья будет ". как его понимаю" . (2) а ослик, потому что "душераздирающее зрелище" эти нарастающие итоги в запросе.

гыы. все ссылки уже помечены как прочтенные (:
Шепот, на самом деле показан очень конкретный пример. Вместо больше равно может быть и меньше равно. в зависимости от целей.
Но для тех кто изучает сложное на примерах (как я например (% ) зер гуд.

Я очень рад, что моя статья вызвала-таки наконец ряд статей по теме.
А то если что и есть в инете, то только основы. Мне пришлось очень долго копаться прежде чем нашел упоминание об ограничении нарастающих итогов в запросах - большие объемы данных начинают существенно тормозить.
А уж метод обхода этого ограничения - это был вообще алес. ограничить выборку.

З.Ы. Предлагаю название изменить. Двухпальцевые нарастающие итоги и нумерация строк в запросе. Всё-таки если быть последовательным и логичным, то "понимаешь" ты в статьях, а вот обработки у тебя "двухпальцевые". Это без иронии.

. БОЛЬШОЕ видится на расстоянии, а начинается с МАЛОГО …

. если ВЫ умеете делать это в МАЛОМ то сделаете это и в БОЛЬШОМ .

.
п.с.
Около ста пятидесяти лет назад возникла новая область научного знания - учение о подобии явлений.
Гениальное предвидение этой науки было высказано Ньютоном в 1686 г. Но только в 1848 г. Член французской академии наук Жозеф Бертран впервые установил основное свойство подобных явлений, сформулировав первую теорему подобия, теорему о существовании инвариантов подобия.
Подобными называются явления, происходящие в геометрически подобных системах, если у них во всех сходственных точках отношения одноимённых величин есть постоянные числа.

. писать "нарастающие итоги" - это доставать кость попавшую в горло через задний проход .

. при помощи простого Запроса+ТаблицаЗначений = Результат любой сложности . эффективнее и проще и предсказуемо .

Категория: Администрирование
Версии: 8.3
Бывают случаи когда нужно восстановить доступ к 1С, но пароль утерян или прошлый программист уволился и прочее. Доступные методы в интернете не работают с версии 8.3.17, а некоторые методы полностью вычищают список пользователей. Данный метод позвол Категория: 1С Управление производственным предприятием
Версии: 8.3
УПП 1.3. Делаю отчет с помощью Универсального отчета. Как вывести количество дней в выбранном периоде? РАЗНОСТЬДАТ( ДатаНач,ДатаКон, ДЕНЬ) не подошло. Не видит параметров ДатаНач и ДатаКон. Категория: Регистры бухгалтерии
Версии: 8.3
Добрый день! В счете учета включили Субконто3=Партии. Как заполнить партии в проводках, которые уже проведены ранее? Спасибо. Категория: Работа с Текстом (Строкой)
Версии: 8.3
//////////////////////////// Разборка на инициалы Руководителя ////////////////////////////Выборка.ОРуководитель = "Иванов Иван Иванович" ПервИнициалР = 0; ПервИнициалР = СтрНайти(Выборка.ОРуководитель, " ") + 1; ПервИнициалР = Сред(Вы Категория: Работа с Текстом (Строкой)
Версии: 8.3
Данная конструкция формирует строку с нужным фрагментом, повторенным N раз. КоличествоПовторов = 10; ПовторяемыйФрагмент = "*"; СтрокаРезультат = СтрСоединить(новый массив(КоличествоПовторов + 1), ПовторяемыйФрагмент); Категория: 1С Зарплата и Управление Персоналом 3.0
Версии: 8.3
Здравствуйте! Прошу помощи. Зарплата и управление персоналом, редакция 3.1 (3.1.16.108) Столкнулся с такой ситуацией: При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов д Категория: 1С Зарплата и Управление Персоналом 3.0
Версии: 8.3
Здравствуйте! Прошу помощи. Зарплата и управление персоналом, редакция 3.1 (3.1.16.108) Столкнулся с такой ситуацией: При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов д Категория: 1С Зарплата и Управление Персоналом 3.0
Версии: 8.3
Здравствуйте! Прошу помощи. Зарплата и управление персоналом, редакция 3.1 (3.1.16.108) Столкнулся с такой ситуацией: При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов д


Категория: 1С Бухгалтерия 3.0
Версии: 8.3
Подскажите пожалуйста, формирую отчет по остаткам сумм на бух счетах. В запросе необходимо выбрать конкретные счета для вывода остатков.Но план счетов нетиповой, имеются счета, с маской ******** в которых присутствуют пробелы, т.е формат 1110 21, 1 Всего 1874 на 188 страницах по 10 на каждой странице

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: считаем итоги (ресурсы)

Автор уроков и преподаватель школы: Владимир Милькин

Ставим цель

Целью этого урока будет:

  • Написать отчёт, который выводит список продуктов (справочник Еда), их калорийность и вкус.
  • Сделать группировку продуктов по их цвету.
  • Познакомиться с возможностью подведения итогов (ресурсы) и вычисляемыми полями.

Создаём новый отчёт

Как и на предыдущих уроках открываем базу "Гастроном" в конфигураторе и создаём новый отчёт через меню "Файл"->"Новый. ":

Вид документа - внешний отчёт:

В форме настройки отчёта пишем имя "Урок3" и нажимаем кнопку "Открыть схему компоновки данных":

Оставляем имя схемы по умолчанию и нажимаем кнопку "Готово":

Добавляем запрос через конструктор

На закладке "Набор данных" нажимаем зелёный плюсик и выбираем пункт "Добавить набор данных - запрос":

Вместо того, чтобы писать текст запроса вручную, вновь запускаем конструктор запроса:

На вкладке "Таблицы" перетягиваем таблицу "Еда" из первой колонки во вторую:

Выбираем из таблицы "Еда" поля, которые будем запрашивать. Для этого перетаскиваем поля "Наименование", "Вкус", "Цвет" и "Калорийность" из второй колонки в третью:

Получилось вот так:

Нажимаем кнопку "ОК" - текст запроса сформировался автоматически:

Формируем настройки представления отчёта

Переходим на закладку "Настройки" и нажимаем на волшебную палочку, чтобы вызвать конструктор настроек:

Выбираем вид отчета "Список. " и нажимаем кнопку "Далее":

Перетаскиваем из левой колонки в правую поля, которые будут отображаться в списке и нажимаем "Далее":

Перетаскиваем из левой колонки в правую поле "Цвет" - по нему будет происходить группировка строк в отчёте. Нажимаем "ОК":

А вот и результат работы конструктора. Иерархия нашего отчёта:

  • отчёт в целом
  • группировка "Цвет"
  • детальные записи - строки с названиями еды

Сохраним отчёт (кнопка дискета) и не закрывая конфигуратора тут же откроем его в режиме пользователя. Получилось вот так:

Меняем порядок колонок

Но давайте поменяем порядок колонок (стрелки вверх-вниз), чтобы он был таким как на рисунке ниже:

Сохраним отчёт и вновь откроем в режиме пользователя:

Отлично, так гораздо лучше.

Подводим итог (сумму) по калорийности

Было бы неплохо выводить итог калорийности продуктов по группам. Чтобы видеть сумму калорийности всех продуктов, скажем, белого или жёлтого цвета. Или узнать общую калорийность вообще всех продуктов в базе.

Для этого существует механизм вычисления ресурсов.

Переходим на вкладку "Ресурсы" и перетаскиваем поле "Калорийность" (мы же по нему собираемся итог подводить) из левой колонки в правую.

При этом в поле выражение выбираем из выпадающего списка "Сумма(Калорийность)", так как итогом будет являться сумма всех входящих в итог элементов:

Сохраняем и формируем отчёт:

У нас появились итоги по каждой из групп и по отчёту в целом.

Подводим итог (среднее) по калорийности

Теперь давайте сделаем так, чтобы в ещё одной колонке выводилась средняя калорийность продуктов по группам и в целом по отчёту.

Трогать уже имеющуюся колонку "Калорийность" нельзя - в неё уже выводится итог-сумма, поэтому заведём ещё одно поле, которое будет являться точной копией поля "Калорийность".

Чтобы завести такое "виртуальное" поле воспользуемся механизмом вычисляемых полей.

Переходим на закладку "Вычисляемые поля" и нажимаем зелёный плюсик:

В колонке "Путь к данным" пишем имя нового поля (слитно, без пробелов). Пусть оно будет называться "СредняяКалорийность", а в колонке "Выражение" пишем имя уже существующего поля, на основании которого будет рассчитываться новое поле. Пишем туда "Калорийность". Колонка "Заголовок" заполнится автоматически.

Мы добавили новое поле ("СредняяКалорийность"), но в отчёте оно само по себе не появится - нужно или вновь вызывать конструктор настроек ("волшебная палочка") или добавить это поле вручную.

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

Получилось вот так:

Сохраняем и формируем отчет:

Поле появилось и мы видим, что его значениями являются значения поля "Калорийность". Отлично!

Но мы помним, что конечная цель - посчитать среднюю калорийность по группам и в целом по отчёту.

Для этого вновь воспользуемся уже знакомым нам механизмом ресурсов (подведение итогов). Переходим на закладку "Ресурсы" и перетаскиваем поле "СредняяКалорийность" из левой колонки в правую:

При этом в колонке "Выражение" выбираем "Среднее(СредняяКалорийность)":

Сохраняем и формируем отчёт:

Видим, что по группам, то есть по каждому цвету, и по отчёту в целом совершенно верно посчиталось среднее значение. Но присутствуют лишние записи по отдельным продуктам (не по группам), которые хотелось бы убрать из отчёта.

Знаете почему они появились (значения не по группам)? Потому что, когда мы добавляли поле "СредняяКалорийность" в настройки отчёта, на втором шаге мы выделили весь отчёт в целом и это новое поле попало в элемент "Детальные записи".

Исправим ошибку. Для этого вернёмся на закладку "Настройки", выберем "Детальные записи" сначала сверху (шаг 2), а затем "Детальные записи" снизу (шаг 3), перейдём на закладку "Выбранные поля" и увидим в её правой колонке элемент "Авто".

Элемент "Авто" - это не одно поле. Это несколько полей, которые попадают сюда автоматически на основании вышестоящих настроек.

Чтобы увидеть, что это за поля - нажмём на элемент "Авто" правой кнопкой и выберем пункт "Развернуть":

Элемент "Авто" раскрылся в следующие поля:

А вот и наше поле "СредняяКалорийность", которое попало сюда из пункта "Отчет", когда мы его туда перетаскивали. Просто снимем галку рядом с этим полем, чтобы убрать его вывода:

Сохраним и сформируем отчёт:

То, что надо! Значения "СредняяКалорийность" остались только в группах (цвет) и в итоге по отчёту в целом.

Подводим итог (количество) по вкусам

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

Ну, например, для белого цвета, это значение будет равно 2 (всего два вкуса "Кислый" и "Сладкий"), а для жёлтого 3 ("Сладкий", "Солёный" и "Кислый").

Переходим на закладку "Ресурсы" и перетаскиваем поле "Вкус" из левой колонки в правую:

В качестве выражения выбираем "Количество(Различные Вкус)":

Сохраняем и формируем отчёт:

Эталонная обработка, после выполнения всех шагов этого урока

Войдите на сайт как ученик

Для учеников

Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.

На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .

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