Разработка и оптимизация запросов в 1С:Предприятие 8.3. Модуль 3. Работа с итогами в тексте запроса
На данной странице задавайте вопросы по материалам и практическому заданию третьего модуля курса «Разработка и оптимизация запросов в 1С:Предприятие 8.3».
Практические задания
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (89):
Комментарии закрыты
Добрый день!
У меня вопрос как правильно обработать результат запроса.
Например мне нужно из задания 19. Полученный результат вывести в таблицу значений на форме вида: Товар, Количество, Цена, Средняя цена, Сумма
То есть для каждой строчки товара вывести итог для этого товара. Если данные из выборки я заполню просто, через заполнитьзначениясвойств, то как мне обратиться к итоговому значению?
Спасибо
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо!=)
…
(текст комментария доступен только участникам Мастер-группы)
Запрос 1.
ВЫБРАТЬ
Продажи.Номенклатура КАК Товар,
Продажи.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
Продажи.Количество КАК Количество,
Продажи.Сумма КАК Сумма
ИЗ
РегистрНакопления.Продажи КАК Продажи
УПОРЯДОЧИТЬ ПО
Товар
ИТОГИ
СУММА(Количество),
СУММА(Сумма)
ПО
ОБЩИЕ,
Товар ИЕРАРХИЯ,
ЭтоГруппа
Запрос 2.
ВЫБРАТЬ
Продажи.Номенклатура КАК Товар,
Продажи.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
Продажи.Количество КАК Количество,
Продажи.Сумма КАК Сумма
ИЗ
РегистрНакопления.Продажи КАК Продажи
УПОРЯДОЧИТЬ ПО
Товар
ИТОГИ
СУММА(Количество),
СУММА(Сумма)
ПО
ОБЩИЕ,
Товар,
ЭтоГруппа ИЕРАРХИЯ
запросы отличаются последними 2-мя строками, результат разный. Тип итогов надо выставлять одинаковый для всех груррировочных полей?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Подскажите, пожалуйста, почему возникает такая ошибка?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! В СКД есть такая возможность рассчитать на закладке ресурсы произвольное выражение : Сумма(ВычислитьВыражение(“Сумма(Сумма)”,”Партнер”))/Сумма(ВычислитьВыражение(“Сумма(Сумма)”,”Менеджер”))*100, а как такое вычислить в запросе? Можно конечно и в обработке выборки результата запроса рассчитать этот показатель, но тогда я не смогу его добавить в отбор. Пишу отчет с выводом в табличный документ Кросс таблица, колонки в произвольном порядке и нужно рассчитывать и выводить в табличный документ этот показатель (это все получилось), но я рассчитывал на уровне обхода результата запроса, а мне еще нужно отбор делать по этому показателю, если бы была возможность писать в итогах запроса выражения как в скд было бы супер. Как рассчитать такой показатель в итогах запроса?
Заранее спасибо!
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
подскажите можно ли использовать условие при получении итогов в иерархии ?. У меня задача такая : есть дерево подразделений и при данных по сотруднику подразделение должно выводиться само подразделение сотрудника + его иерархия, если на ней установлена соответствующая галочка. То есть Мясокулинарный цех+ Супермаркет №2 , но не Мясокулинарный цех+ ” не нужная цепочка”+”Супермаркет№2+”еще сверху”.
Возможно ли сделать запросом
СотрудникиОрганизаций.Физлицо КАК Физлицо,
СотрудникиОрганизаций.Организация КАК Организация,
СотрудникиОрганизаций.Физлицо.Пол КАК ФизлицоПол,
РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
РаботникиОрганизацийСрезПоследних.Должность КАК Должность1,
РаботникиОрганизацийСрезПоследних.ДолжностьПодразделения КАК ДолжностьПодразделения,
РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.НеВыводитьПодразделениеПриПечатиДолжности КАК ПодразделениеОрганизацииНеВыводитьПодразделениеПриПечатиДолжности
ИЗ
Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
ПО (РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка)
ГДЕ
СотрудникиОрганизаций.Ссылка = &Сотрудник
ИТОГИ
ПодразделениеОрганизацииНеВыводитьПодразделениеПриПечатиДолжности =ИСТИНА КАК ПодразделениеОрганизацииНеВыводитьПодразделениеПриПечатиДолжности
ПО
ПодразделениеОрганизации ТОЛЬКО ИЕРАРХИЯ
…
(текст комментария доступен только участникам Мастер-группы)
Честно говоря в парктической не понял заче мы использовали выбор. я сделал так и все работает:
ВЫБРАТЬ
ПоступлениеТоваровТовары.Номенклатура КАК Товар,
ПоступлениеТоваровТовары.Количество КАК Количество,
ПоступлениеТоваровТовары.Сумма КАК Сумма,
ПоступлениеТоваровТовары.Цена КАК Цена
ИЗ
Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ИТОГИ
СУММА(Количество),
СУММА(Сумма),
СУММА(Сумма) / СУММА(Количество) КАК Цена
ПО
Товар
разве что проверка деления на ноль, но я так понимаю на практике реально ли такое. купить 0 и записать подобное в базу
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
После внесения изменений в Модуль менеджера Справочника Номенклатура конфигурации Query-Homework-Template.dt, невозможно открыть этот справочник в режиме предприятия.
…
(текст комментария доступен только участникам Мастер-группы)
…
(текст комментария доступен только участникам Мастер-группы)
В Query-3-Totals-2 приводится пример использования в одном запросе итогов и группировки. И там одно поле группировки и по этому же полю подводятся итоги.
Хотел спросить, с практической точки зрения имеет смысл использовать итоги и иерархию совместно только в том случае, когда список контрольных точек меньше чем полей группировки?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день
Если запрос содержит объединение, агрегатные функции будут браться из первого запроса.
Собственно не понял как это работает, можно пример.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Вопрос такого плана, есть запрос, выборка данных по которому заполняет макет
| УстановкаБазыРаспределенияЗатратБазаРаспределения.НоменклатурнаяГруппа,
| УстановкаБазыРаспределенияЗатратБазаРаспределения.БазаПриход КАК БазаПриход,
| УстановкаБазыРаспределенияЗатратБазаРаспределения.БазаОстатокНЗП КАК БазаОстатокНЗП,
| УстановкаБазыРаспределенияЗатратБазаРаспределения.База КАК База,
| УстановкаБазыРаспределенияЗатратБазаРаспределения.СчетЗатрат
|ИЗ
| Документ.УстановкаБазыРаспределенияЗатрат.БазаРаспределения КАК УстановкаБазыРаспределенияЗатратБазаРаспределения
|ГДЕ
| УстановкаБазыРаспределенияЗатратБазаРаспределения.Ссылка = &Ссылка
|ИТОГИ
| СУММА(БазаПриход),
| СУММА(БазаОстатокНЗП),
| СУММА(База)
|ПО
| ОБЩИЕ
|
макет заполняется построчно а в последней строке макета выводятся итоги по трем колонкам. Но в консоли когда отрабатывался запрос видно, что при выполнении запроса итоги по трем колонка выводятся в верхней (первой) строчке..а потом в следующих строках идет дальнейшее заполнение данными. Чтобы заполнить печатную форму на основе этого макета можно поступить таким образом – одним запросом заполнять строки печатной формы, а вторым таким же запросом выводить итоги в последней строке печатной формы. Вопрос – можно ли както заполнять печатную форму используя не два а один запрос но при этом будут заполнятся сначала строки с данными а в последней строке печатной формы будут прописаны итоги. Спасибо
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
В чем практический смысл совместного использования группировок и итогов? Имеется в виду часть 2 видеоматериала по третьему модулю. Ведь итоговые записи дублируют детальные. Зачем?
…
(текст комментария доступен только участникам Мастер-группы)
Вопрос по конфигурации ЕРП. Как получить итоги из выборки по некому РН по паре Номенклатура+Характеристика (чтобы они показывались не в виде дерева, а виде простого списка)? Обычный запрос этой задачи не решает:
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика КАК АналитикаУчетаНоменклатурыХарактеристика,
СУММА(ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот) КАК КоличествоОборот,
ВыручкаИСебестоимостьПродажОбороты.Регистратор КАК Регистратор
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&Дата1, &Дата2, Авто, ) КАК ВыручкаИСебестоимостьПродажОбороты
СГРУППИРОВАТЬ ПО
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Характеристика,
ВыручкаИСебестоимостьПродажОбороты.Регистратор
ИТОГИ
СУММА(КоличествоОборот)
ПО
АналитикаУчетаНоменклатурыНоменклатура,
АналитикаУчетаНоменклатурыХарактеристика
Он сначала показывает итоги по Номенклатуре, и только внутри этого итога можно увидеть итоги по Характеристикам. А нужно получить это все на одном уровне. Единственное, до чего мне удалось додуматься, создать вычисляемое поле из суммы наименования номенклатуры и наименования характеристики и вычисление итогов по такому полю. Но мне кажется это далеко не самый оптимальный вариант.
…
(текст комментария доступен только участникам Мастер-группы)
Мне надо именно в запросе, для целей удобства дальнейшей обработки (чтобы сразу определить нужно ли обходить внутренние ветки дерева или нет). Как я понял, ничего стандартного в запросах для подсчета итогов по паре полей нет?
…
(текст комментария доступен только участникам Мастер-группы)
Если у вас в реальности только ОДНА характеристика для каждой номенклатуры, то можно использовать В ИТОГАХ выражение
МАКСИМУМ(АналитикаУчетаНоменклатурыХарактеристика)
и итоги брать только по АналитикаУчетаНоменклатурыНоменклатура.
Тогда у вас на одном уровне выборки будут и номенклатура, и характеристика.
В остальном всё так, как вам Василий сказал.
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо. Закончила модуль 3. Пока вопросов нет. Возможно, сказывается опыт написания запросов. Фишкам полученным очень рада. Консоль запросов настроила и это радует. действительно: были админские права везде, а на conf каталог полных прав не было. Настроила – и все заработало.
…
(текст комментария доступен только участникам Мастер-группы)
не нашел где посмотреть решение преподавателя
…
(текст комментария доступен только участникам Мастер-группы)
в защищенном плеере не открывается, просит код для просмотра или код активации, ввожу присланный код ничего не происходит, окно ввода кода не уходит. Хотя для просмотра модуля обучения проходит видео отображает, для практического курса не работает.
…
(текст комментария доступен только участникам Мастер-группы)
я сохранила для себя код активации для курса в текстовом файле. И когда открываю практические занятия или следующий модуль просто вставляю его и нажимаю ОК. И все в порядке. Попробуйте.
Здравствуйте! Подскажите, пожалуйста, как правильно соединить три таблицы? Имеются три таблицы, в приложении. При соединении я получаю таблицу №4. Но не могу получить нужные итоги. Подскажите, какие функции мне нужно использовать чтобы добиться итогов, которые отмечены зеленым цветом в 4 таблице? Может быть я вообще не правильно алгоритм действий подбираю?
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день. Не могу понять как правильно сделать итоги по иерархии справочника с последующим выводом его кода и наименования. При обходе запроса обращение к выборка.ссылка.код – это запрос в цикле.
Вот мой запрос:
ОбединениеФактИПлан.СуммаПлан КАК СуммаПлан,
ОбединениеФактИПлан.СуммаФакт КАК СуммаФакт,
Статьи.Ссылка КАК Ссылка,
Статьи.СтатьяКод
ИЗ
Статьи КАК Статьи
ПОЛНОЕ СОЕДИНЕНИЕ ОбединениеФактИПлан КАК ОбединениеФактИПлан
ПО Статьи.СтатьяКод = ОбединениеФактИПлан.СтатьяКод
ИТОГИ
СУММА(СуммаПлан),
СУММА(СуммаФакт)
ПО
Ссылка ИЕРАРХИЯ
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
У меня вопрос по теории 3-его модуля. В тексте говорится о контрольных точках, которые описываются после ключевого слова “ПО”. Далее говорится – “каждая контрольная точка содержит выражение, вычисляемое при выполнении запроса”. Объясните, пожалуйста, что подразумевается под “выражением, вычисляемым при выполнении запроса”.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день! Требуется вычислить среднюю сумму продаж за 3 месяца. Вот такой вариант вычисляет среднюю сумму продажи за количество месяцев, указанных в периоде:
ВЫБРАТЬ
Продажи.ВторичныйКлиент.ПартнерCRM,
СУММА(Продажи.СуммаОборот) / (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонецПериода, МЕСЯЦ), МЕСЯЦ) + 1) КАК Поле1
ИЗ
РегистрНакопления.РР_ПродажиВторичнымКлиентам.Обороты(, , Месяц, ) КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.ВторичныйКлиент.ПартнерCRM
А как вычислить среднюю сумму продаж за количество месяцев, в которых были продажи?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо!
Пособие по теории. Страница 99:
“В отличие от предыдущего примера, итогов по отдельным позициям справочника (т.е. по контрольным
точкам) в результате запроса нет.”
А мне кажется, что это неверно. Итоги ЕСТЬ, нет ДЕТАЛЬНЫХ СТРОК…
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день
Требуется, чтобы в поле запроса подсчитывалась сумма только по выбранным производителям
(при том, что в запросе рассчитываются итоги по всем данным)
Как правильно написать выражение для этого поля?
ВЫБРАТЬ
ВЫБОР
КОГДА втВыручка.Производитель В(СписокПроизводителей)
ТОГДА СУММА(втВыручка.СуммаРеализации)
ИНАЧЕ 0
КОНЕЦ КАК СуммаРеализации
Или
СУММА(
ВЫБОР
КОГДА втВыручка.Производитель В(СписокПроизводителей)
ТОГДА СУММА(втВыручка.СуммаРеализации)
ИНАЧЕ 0
КОНЕЦ
) КАК СуммаРеализации
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день.
Рассмотрела данный пример в на своей БДи у меня на второй вариант, там где “Сумма(Выбор Когда…” выдает ошибку “недопустимо использование вложенных агрегатных функций”. Мой пример кода:
СУММА(
ВЫБОР
КОГДА РеализацияТоваровТовары.Ссылка.Контрагент В (&список) ТОГДА СУММА(РеализацияТоваровТовары.Сумма)
ИНАЧЕ 0
КОНЕЦ)
Что я делаю не так?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте.
Возник вопрос по 19 заданию. С методической точки зрения не правильнее ли будет использовать конструкцию
КОГДА СУММА(Количество) = 0
ТОГДА 0
ИНАЧЕ СУММА(Цена * Количество) / СУММА(Количество)
КОНЕЦ КАК Цена
Вместо
КОГДА СУММА(Количество) = 0
ТОГДА 0
ИНАЧЕ СУММА(Сумма) / СУММА(Количество)
КОНЕЦ КАК Цена
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте, у меня вопрос по этой же задаче. В Итогах выражение можно только через выбор писать?(Без проверки на 0). У меня не получилось просто выражение туда засунуть.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день. Как можно запросом получить строку таблицы по максимальному значению поля Х этой таблицы? Если бы значения поля Х были уникальными, то можно было предварительно получить временную таблицу с максимальным значением поля Х и затем соединить с основной таблицей внутренним соединением. Если у таблицы есть синтетический ключ, то можно добавить еще одну временную таблицу с максимальным значением ключа по строкам с максимальным значением поля Х. Если ключ составной, то придется получать максимальные значения по всем ключевым полям по аналогии с синтетическим ключом. А как быть, если ключа у таблицы вообще нет? Во внутреннем языке это решается просто, нужно отсортировать данные по полю Х и прервать цикл после первой же итерации. Можно ли организовать что-то подобное внутри самого запроса? А то очень часто такая задача возникает.
…
(текст комментария доступен только участникам Мастер-группы)
Хочу выразить пожелание по поводу работы с универсальным отчетом -тоже очень хочется разобраться
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
Можно ли получить регистратор с максимальным моментом времени с использованием агрегатной функции МАКСИМУМ?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
В секции ГДЕ можно использовать агрегатную функцию “ИМЕЮЩИЕ”.
А если используем секцию “ИТОГИ” и выбираем некоторое суммируемое поле, как можно наложить условие на суммируемое поле. Например чтобы отбирались значения > 10.
Такое возможно?
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо!
Здравствуйте. Если мы получаем в запросе итоги по полям “Количество” и “Сумма”, можно ли получить общие итоги только по “Сумме” (абсурдно складывать штуки с килограммами и метрами)
…
(текст комментария доступен только участникам Мастер-группы)
У меня тоже возник подобный вопрос. Ситуация такая: в типовой отчет надо добавить вывод телефона контрагента. Отчет формируется на основании универсального отчета, т.е. можно задать запрос, поля вывода, все это передается в универсальный отчет и самими выводом данных уже никак не управляешь.
Телефон был добавлен в реквизиты, а не измерения и пришлось в запросе применить к нему агрегатную функцию МИНИМУМ(). И на уровне высшем, чем контрагент тоже выводился телефон, какой программа посчитала как минимум из всех в группировке. Помог вывод поля телефон через оператор ВЫБОР. Где контрагент пустой, там не выводим. Но тут тоже есть недочеты, что можно поменять местами поля группировок…
…
(текст комментария доступен только участникам Мастер-группы)
Это в Комплексной автоматизации. В УПП должно тоже работать, там эти отчеты одинаковы.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день!
На странице 98 методического пособия сказано “Для полей, по которым рассчитываются итоги, можно назначить псевдонимы для
последующего обращения к ним из встроенного языка”. Могли бы вы привести пример такого обращения и объяснить для чего оно используется?
…
(текст комментария доступен только участникам Мастер-группы)
Кроме того, как оказалось, это знание необходимо для выполнения практического задания №19. Я по привычке, вручную изменил текст запроса СУММА(Сумма) / СУММА(Количество), не указал в итоговом поле “КАК Цена”, и получил “Невозможно определить поле для записи результата…”. Посмотрел в решении, что можно задать условие для поля итогов в самом конструкторе запроса, тогда конструктор автоматически назначил псевдоним Цена. Затем прочел в методичке, в принципе есть возможность задавать псевдоним.
В вашем случае Цена – это псевдоним суммируемого поля, а я спрашивал о псевдониме для поля группировки.
Да, действительно, перепутал, но псевдоним суммируемого поля для меня тоже новая штука.
Поэтому пользуясь случаем благодарю тренера за постоянно и неожиданно открываемые полезности.
…
(текст комментария доступен только участникам Мастер-группы)
Добрый день,
а если не указывать псевдоним для поля, по которому рассчитываются итоги, можно ли получить в Вашем примере имя группировки как-то еще, например, : ВыборкаПокупатель = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, “Контрагент”)?
…
(текст комментария доступен только участникам Мастер-группы)
Я в качестве эксперимента заменил псевдоним Цена на Количество, в ИТОГАХ получилось два поля с псевдонимом Количество. К сожалению, конструктор съел без возражений. :(
…
(текст комментария доступен только участникам Мастер-группы)
Спасибо за Вашу работу!
Спасибо. Теперь разобрался.
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте! У меня при открытии файла Query-1cv8-Practical-Solution-19.ufm дает сообщение
“Не удалось открыть звуковую дорожку” и, соответственно, звук при воспроизведении отсутствует.
До сих пор все другие уроки воспроизводились нормально со звуком. А теперь при попытке просмотра любого урока появляется сообщение “Не удалось открыть звуковую дорожку”. Посоветуйте, что делать?
Здравствуйте, Наталья!
Проверьте, пожалуйста, Вашу почту. Мы отправили Вам письмо с рекомендациями по решению данной проблемы с электронного адреса support@kursy-po-1c.ru .