СКД строковое поле в группировке

1. Raskad 10 20.04.21 11:59 Сейчас в теме
Здравствуйте.
А давно у нас СКД строковые поля, если они стоят в группировке, сворачивает по "МАКСИМУМ", а не выводит каждую как положено?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
8. SlavaKron 21.04.21 07:06 Сейчас в теме +0.1 $m
(7)
попытайтесь объяснить разные результаты.
Результаты я уже объяснял в (6). Не защищаю оптимизатор СКД, но примите это как факт, если у поля в роли не указано "Обязательное" и оно не участвует в структуре, это поле будет удалено из запроса макета компоновки. В отладке или консоли СКД можете посмотреть как выглядит результирующий запрос.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 20.04.21 12:36 Сейчас в теме
(1) Только если оно добавлено в ресурсы с Максимум в выражении.
3. Raskad 10 20.04.21 14:40 Сейчас в теме
ВЫБРАТЬ
	ХозрасчетныйОборотыДтКт.Организация КАК Организация,
	ПОДСТРОКА(ДоговорыКонтрагентов.Наименование, 1, 3) КАК Направление,
	ХозрасчетныйОборотыДтКт.Регистратор КАК Регистратор,
	ХозрасчетныйОборотыДтКт.СуммаОборот КАК Выручка,
	0 КАК Затраты,
	ХозрасчетныйОборотыДтКт.СуммаОборот КАК ТорговаяНаценка
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, Регистратор, СчетДт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками)), , СчетКт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи)), , ) КАК ХозрасчетныйОборотыДтКт
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		ПО ХозрасчетныйОборотыДтКт.СубконтоДт2 = ДоговорыКонтрагентов.Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ХозрасчетныйОборотыДтКт.Организация,
	"",
	ХозрасчетныйОборотыДтКт.Регистратор,
	0,
	ХозрасчетныйОборотыДтКт.СуммаОборот,
	-ХозрасчетныйОборотыДтКт.СуммаОборот
ИЗ
	РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, Регистратор, СчетДт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродаж)), , , , ) КАК ХозрасчетныйОборотыДтКт
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Обороты.Организация КАК Организация,
	МАКСИМУМ(ВТ_Обороты.Направление) КАК Направление,
	ВТ_Обороты.Регистратор КАК Регистратор,
	СУММА(ВТ_Обороты.Выручка) КАК Выручка,
	СУММА(ВТ_Обороты.Затраты) КАК Затраты,
	СУММА(ВТ_Обороты.ТорговаяНаценка) КАК ТорговаяНаценка
ПОМЕСТИТЬ ВТ_Группировка
ИЗ
	ВТ_Обороты КАК ВТ_Обороты

СГРУППИРОВАТЬ ПО
	ВТ_Обороты.Организация,
	ВТ_Обороты.Регистратор
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Группировка.Организация КАК Организация,
	ВТ_Группировка.Направление КАК Направление,
	СУММА(ВТ_Группировка.Выручка) КАК Выручка,
	СУММА(ВТ_Группировка.Затраты) КАК Затраты,
	СУММА(ВТ_Группировка.ТорговаяНаценка) КАК ТорговаяНаценка
ПОМЕСТИТЬ ВТ_Итоговая
ИЗ
	ВТ_Группировка КАК ВТ_Группировка

СГРУППИРОВАТЬ ПО
	ВТ_Группировка.Организация,
	ВТ_Группировка.Направление
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Итоговая.Организация КАК Организация,
	ВТ_Итоговая.Направление КАК Направление,
	ВТ_Итоговая.Выручка КАК Выручка,
	ВТ_Итоговая.Затраты КАК Затраты,
	ВТ_Итоговая.ТорговаяНаценка КАК ТорговаяНаценка,
	ВЫРАЗИТЬ(ВТ_Итоговая.ТорговаяНаценка / ВТ_Итоговая.Выручка * 100 КАК ЧИСЛО(15, 2)) КАК ПроцентТорговойНаценки
ИЗ
	ВТ_Итоговая КАК ВТ_Итоговая
Показать
4. Raskad 10 20.04.21 14:41 Сейчас в теме
В консоли запросов все ОК. В СКД - тупо по группировке "Направление" берет максимум. В ресурсах только числовые значения.
5. Raskad 10 20.04.21 16:00 Сейчас в теме
Если делать через соединение, а не через объединение - все работает. Это что, группировка строк в одной из временных таблиц запроса неправильно отрабатывает функцию "МАКСИМУМ"? Тогда бы в детальных записях была бы одна строка. Консоль запросов то как надо все возвращает, а эта свинидла не хочет. Интересно, что в детальных записях присутствуют записи с другим значение поля "Направление". Но, когда это поле ставишь в качестве группировки - тупо одну запись выводит СКД, аут.
6. SlavaKron 20.04.21 16:14 Сейчас в теме
Зачем столько ВТ? СКД это всё сама бы посчитала, вам только нужно правильную структуру настроить.
По теме, у вас поле Регистратор СКД удалила из запроса ВТ_Группировка, так как оно нигде не используется.
Для примера, отчет СКД с таким запросом по умолчанию выведет только одну строку "В":
ВЫБРАТЬ
	1 КАК Число,
	"А" КАК Буква
ПОМЕСТИТЬ ВТ1

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	2,
	"Б"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	3,
	"В"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ1.Число КАК Число,
	МАКСИМУМ(ВТ1.Буква) КАК Буква
ПОМЕСТИТЬ ВТ2
ИЗ
	ВТ1 КАК ВТ1

СГРУППИРОВАТЬ ПО
	ВТ1.Число
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ2.Буква КАК Буква
ИЗ
	ВТ2 КАК ВТ2
Показать
7. Raskad 10 20.04.21 23:35 Сейчас в теме
Еще раз, поле группировки у всех записей - уникальное, следовательно суммируемое поле должно остаться таким, какое оно на входе, а не превратиться в "максимум" при двух уникальных значениях поля группировки. Вот этот пример с буквами на СКД. Сформируйте. Потом уберите из "выбранных полей" число, сформируйте и попытайтесь объяснить разные результаты.
Прикрепленные файлы:
ВнешнийОтчет1.erf
8. SlavaKron 21.04.21 07:06 Сейчас в теме +0.1 $m
(7)
попытайтесь объяснить разные результаты.
Результаты я уже объяснял в (6). Не защищаю оптимизатор СКД, но примите это как факт, если у поля в роли не указано "Обязательное" и оно не участвует в структуре, это поле будет удалено из запроса макета компоновки. В отладке или консоли СКД можете посмотреть как выглядит результирующий запрос.
Прикрепленные файлы:
9. Raskad 10 21.04.21 16:12 Сейчас в теме
(8) Факт отвратительный. В очередной раз убеждаюсь, что СКД - это зло. Хорошо хоть в запросе с "левым соединением" он не убирает "Регистратор" из условий связи таблиц.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот