Подскажите с запросом, не выводит значения

1. aalu14 10.08.22 17:04 Сейчас в теме
Добрый день. Столкнулся с проблемой. Вывожу 4 поля. Если значение не 0, то все выводятся, но если хотя бы одно поле 0, то не выводятся все. Подскажите, как быть? Заранее спасибо!
ВЫБРАТЬ
	ВложенныйЗапрос.Сотрудник,
	СУММА(ВложенныйЗапрос.КоличествоСМС) КАК КоличествоСМС,
	СУММА(ВложенныйЗапрос2.КоличествоЗвонков) КАК КоличествоЗвонков,
	СУММА(ВложенныйЗапрос3.КоличествоWhatsApp) КАК КоличествоWhatsApp,
	СУММА(ВложенныйЗапрос4.КоличествоEmail) КАК КоличествоEmail
ИЗ
    //СМС
	(ВЫБРАТЬ
		Активность.Автор КАК Сотрудник,
		СУММА(1) КАК КоличествоСМС
    ИЗ
		РегистрСведений.Активность КАК Активность
	ГДЕ
		Активность.Период МЕЖДУ &НачалоПериода И &КонецПериода
		И Активность.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.СМС)
		И Активность.Автор = &Сотрудник	
	СГРУППИРОВАТЬ ПО
		Активность.Автор ) Как ВложенныйЗапрос,
	
	//ЗВОНКИ	
	(ВЫБРАТЬ
		Активность.Автор КАК Сотрудник,
		СУММА(1) КАК КоличествоЗвонков
	ИЗ
		РегистрСведений.Активность КАК Активность
	ГДЕ
		Активность.Период МЕЖДУ &НачалоПериода И &КонецПериода
		И Активность.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.Звонок)
		И Активность.Автор = &Сотрудник	
	СГРУППИРОВАТЬ ПО
		Активность.Автор ) Как ВложенныйЗапрос2,
	
	//WhatsApp	
	(ВЫБРАТЬ
		Активность.Автор КАК Сотрудник,
		СУММА(1) КАК КоличествоWhatsApp
    ИЗ
		РегистрСведений.Активность КАК Активность
	ГДЕ
		Активность.Период МЕЖДУ &НачалоПериода И &КонецПериода
		И Активность.Реквизит = "WhatsApp"
		И Активность.Автор = &Сотрудник
	СГРУППИРОВАТЬ ПО
		Активность.Автор ) Как ВложенныйЗапрос3,
	
	//Email	
	 (ВЫБРАТЬ
		Активность.Автор КАК Сотрудник,
		СУММА(1) КАК КоличествоEmail
    ИЗ
		РегистрСведений.Активность КАК Активность
	ГДЕ
		Активность.Период МЕЖДУ &НачалоПериода И &КонецПериода
		И Активность.Реквизит = "E-mail"
		И Активность.Автор = &Сотрудник
	СГРУППИРОВАТЬ ПО
		Активность.Автор ) Как ВложенныйЗапрос4
			
Сгруппировать По ВложенныйЗапрос.Сотрудник
Показать
По теме из базы знаний
Найденные решения
6. FatPanzer 10.08.22 17:31 Сейчас в теме
(5) Тогда может стоит подумать о том - откуда взять строку сотрудника, если у него везде ноль? Может какой-то другой источник найти?
10. soft_wind 10.08.22 17:50 Сейчас в теме
если не пересекаются ТипАктивноси и Реквизит, то попробуйте такой запрос
Выбрать
	рег.ТипАктивности,
	рег.Реквизит, 
	Количество(1) как Количество
поместить Таб
из
        РегистрСведений.Активность КАК рег
где
        рег.Период МЕЖДУ &НачалоПериода И &КонецПериода
        И рег.Автор = &Сотрудник //а если по всем сотрудникам нужна будет таблица?
Сгруппировать по
   	рег.ТипАктивности,
	рег.Реквизит 
;

ВЫБРАТЬ
	Пром.Автор,
	табСМС.Количество как КоличествоСМС,
	табЗв.Количество как КоличествоЗвонков,
	табАпп.Количество как КоличествоWhatsApp,
	табПочта.Количество как КоличествоEmail,
из
	(Выбрать &Сотрудник  как Автор) пром
левое соединение Таб ТабСМС
по табСМС.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.СМС)

левое соединение Таб ТабЗв
по табЗв.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.Звонок)

левое соединение Таб ТабАпп
по табАпп.Реквизит = "WhatsApp"

левое соединение Таб ТабПочта
по ТабПочта.Реквизит = "E-mail"

Упорядочить по
1 автоупорядочивание


Показать
19. soft_wind 12.08.22 11:23 Сейчас в теме
(18) это немного запрос надо подправить, добавить Автора (то что закоментено) и включить его в группировку
и в результирующем запросе, вот это
(Выбрать &Сотрудник как Автор) пром
заменить на справочник (Автор - какой тип?)
и в левые соединения добавить связь СпрАвторы.Ссылка = ПоТипу.Автор (пример)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 10.08.22 17:08 Сейчас в теме
У тебя во всех вложенных запросах 0 строк. Что должен выводить основной запрос?
3. aalu14 10.08.22 17:14 Сейчас в теме
(2)Вот, смотри, если значение не 0, то выводит. Беру период год - выводит, если взять период, где вотсаппа, или звонков, или почты нет, то не выводится.
Прикрепленные файлы:
4. FatPanzer 10.08.22 17:28 Сейчас в теме
(3) Ну и? Количество СМС не ноль, оно и выводится из первого вложенного запроса.
5. aalu14 10.08.22 17:29 Сейчас в теме
(4) Хотелось бы, чтобы если ноль, то выводится ноль, а не "ничего"
6. FatPanzer 10.08.22 17:31 Сейчас в теме
(5) Тогда может стоит подумать о том - откуда взять строку сотрудника, если у него везде ноль? Может какой-то другой источник найти?
7. aalu14 10.08.22 17:33 Сейчас в теме
(6) ТОЧНО! Спасибо большое.
8. aalu14 10.08.22 17:35 Сейчас в теме
(6) Сразу не понял, думал, ты опять издеваешься... спасибо за помощь!
9. FatPanzer 10.08.22 17:38 Сейчас в теме
(8) А вот надо читать и думать о том, что вкладывает автор в свои строки... Обосрать-то меня все готовы всегда.
12. aalu14 11.08.22 08:43 Сейчас в теме
(9)Почему "обосрать"? Наоборот, жду твоей поддержки всегда)
10. soft_wind 10.08.22 17:50 Сейчас в теме
если не пересекаются ТипАктивноси и Реквизит, то попробуйте такой запрос
Выбрать
	рег.ТипАктивности,
	рег.Реквизит, 
	Количество(1) как Количество
поместить Таб
из
        РегистрСведений.Активность КАК рег
где
        рег.Период МЕЖДУ &НачалоПериода И &КонецПериода
        И рег.Автор = &Сотрудник //а если по всем сотрудникам нужна будет таблица?
Сгруппировать по
   	рег.ТипАктивности,
	рег.Реквизит 
;

ВЫБРАТЬ
	Пром.Автор,
	табСМС.Количество как КоличествоСМС,
	табЗв.Количество как КоличествоЗвонков,
	табАпп.Количество как КоличествоWhatsApp,
	табПочта.Количество как КоличествоEmail,
из
	(Выбрать &Сотрудник  как Автор) пром
левое соединение Таб ТабСМС
по табСМС.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.СМС)

левое соединение Таб ТабЗв
по табЗв.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.Звонок)

левое соединение Таб ТабАпп
по табАпп.Реквизит = "WhatsApp"

левое соединение Таб ТабПочта
по ТабПочта.Реквизит = "E-mail"

Упорядочить по
1 автоупорядочивание


Показать
11. FatPanzer 10.08.22 17:53 Сейчас в теме
(10) О, пришла святая сестра Тереза, которая всегда и всем сразу раздаёт код, вместо того, чтобы натолкнуть нуждающегося на мысль...
13. aalu14 11.08.22 08:50 Сейчас в теме
(10) Огромное спасибо, всё супер, но если брать период за год, то выводятся 4 строки. Научиться бы так же красиво запросы писать!
14. aalu14 11.08.22 08:59 Сейчас в теме
(10)
Прикрепленные файлы:
15. soft_wind 11.08.22 10:04 Сейчас в теме
(13) ну вот "двоит" это из-за разных сочетаний типа и реквизита, попробуйте второй вариант запроса,
промежуточный расчет сделан в две временные таблицы, попробуйте его в консоли

Выбрать
// рег.Автор,
рег.ТипАктивности,
Количество(1) как Количество
поместить поТипу
из
РегистрСведений.Активность КАК рег
где
рег.Период МЕЖДУ &НачалоПериода И &КонецПериода
И рег.Автор = &Сотрудник //а если по всем сотрудникам нужна будет таблица?
Сгруппировать по
рег.ТипАктивности
;

Выбрать
// рег.Автор,
рег.Реквизит,
Количество(1) как Количество
поместить поРеквизиту
из
РегистрСведений.Активность КАК рег
где
рег.Период МЕЖДУ &НачалоПериода И &КонецПериода
И рег.Автор = &Сотрудник //а если по всем сотрудникам нужна будет таблица?
Сгруппировать по
рег.Реквизит
;

ВЫБРАТЬ
Пром.Автор,
табСМС.Количество как КоличествоСМС,
табЗв.Количество как КоличествоЗвонков,
табАпп.Количество как КоличествоWhatsApp,
табПочта.Количество как КоличествоEmail,
из
(Выбрать &Сотрудник как Автор) пром
левое соединение поТипу ТабСМС
по табСМС.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.СМС)

левое соединение поТипу ТабЗв
по табЗв.ТипАктивности = ЗНАЧЕНИЕ(Справочник.ТипыАктивности.Звонок)

левое соединение поРеквизиту ТабАпп
по табАпп.Реквизит = "WhatsApp"

левое соединение поРеквизиту ТабПочта
по ТабПочта.Реквизит = "E-mail"

Упорядочить по
1 автоупорядочивание


Показать
16. soft_wind 11.08.22 10:10 Сейчас в теме
(11) очень надеюсь что авторы анализируют и сравнивают свой вариант запроса с предложенным, и понимают какие конструкции/методы приводят к правильному решению. В дальнейшем они смогут использовать данный запрос как шаблон/пример для решения подобных задач.
обучение на примере (правильном) - тоже вариант!
(ну не читать же здесь курс лекций по реляционным таблицам)
17. aalu14 11.08.22 10:15 Сейчас в теме
18. aalu14 11.08.22 15:06 Сейчас в теме
(16) Подскажите, а если я хочу вывести результат по всем сотрудникам, какой параметр передать?
19. soft_wind 12.08.22 11:23 Сейчас в теме
(18) это немного запрос надо подправить, добавить Автора (то что закоментено) и включить его в группировку
и в результирующем запросе, вот это
(Выбрать &Сотрудник как Автор) пром
заменить на справочник (Автор - какой тип?)
и в левые соединения добавить связь СпрАвторы.Ссылка = ПоТипу.Автор (пример)
20. aalu14 12.08.22 11:35 Сейчас в теме
Оставьте свое сообщение

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