В Консоли запросов выводит, а в СКД и в Консоли Отчетов нет.

1. olleksa 01.03.17 16:11 Сейчас в теме
Добрый день. Подскажите, люди добрые, где ошибка?
Делаю отчет, создала запрос. В консоли запросов он срабатывает и выводит все данные. А в СКД и в Консоли отчетов - не выводит ту часть, которая соедина по Левому соединению. Причем Левых соединений 2. Не выводит второе.

Код:
ВЫБРАТЬ
	НачислениеПоБольничномуЛисту.Физлицо КАК ФИО,
	НачислениеПоБольничномуЛисту.ДатаНачалаСобытия,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации КАК МесяцНачисления,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента КАК СерияЛисткаНетрудоспособности,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента КАК NЛисткаНетрудоспособности,
	НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности КАК ПричинаНетрудоспособности,
	НачислениеПоБольничномуЛисту.ПроцентОплаты,
	СУММА(Начисления2.ОплаченоДнейЧасов) КАК ДниЗаСчетФСС,
	СУММА(Начисления1.ОплаченоДнейЧасов) КАК ДниЗаСчетРаботодателя,
	СУММА(Начисления2.Результат) КАК ПособиеЗаСчетФСС,
	СУММА(Начисления1.Результат) КАК ПособиеЗаСчетРаботодателя,
	Начисления1.ВидРасчета КАК ВидРасчета,
	Начисления1.Сторно КАК Сторно
	    {ВЫБРАТЬ ФИО, ДатаНачалаСобытия, ДатаОкончания, МесяцНачисления, СерияЛисткаНетрудоспособности, NЛисткаНетрудоспособности, ПричинаНетрудоспособности, ПроцентОплаты, ДниЗаСчетФСС, ДниЗаСчетРаботодателя, ПособиеЗаСчетФСС, ПособиеЗаСчетРаботодателя, ВидРасчета, Сторно}
ИЗ
	Документ.НачислениеПоБольничномуЛисту КАК НачислениеПоБольничномуЛисту
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.НачислениеПоБольничномуЛисту.Начисления КАК Начисления1
		ПО НачислениеПоБольничномуЛисту.Ссылка = Начисления1.Ссылка
			И (Начисления1.Сторно = ЛОЖЬ)
			И (Начисления1.ВидРасчета.Код = "00025")
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.НачислениеПоБольничномуЛисту.Начисления КАК Начисления2
		ПО НачислениеПоБольничномуЛисту.Ссылка = Начисления2.Ссылка
			И (Начисления2.Сторно = ЛОЖЬ)
			И (Начисления2.ВидРасчета.Код В ("00021", "00022"))
ГДЕ

	НачислениеПоБольничномуЛисту.ПометкаУдаления = ЛОЖЬ
	И НачислениеПоБольничномуЛисту.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
	НачислениеПоБольничномуЛисту.Физлицо,
	НачислениеПоБольничномуЛисту.ДатаНачалаСобытия,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента,
	НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности,
	НачислениеПоБольничномуЛисту.ПроцентОплаты,
	Начисления1.ВидРасчета,
	Начисления1.Сторноф

УПОРЯДОЧИТЬ ПО
	МесяцНачисления,
	ФИО
Показать
Прикрепленные файлы:
1.sel
+
По теме из базы знаний
Найденные решения
27. olleksa 05.03.17 05:53 Сейчас в теме
Спасибо всем за неравнодушие, у меня получилось.

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

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

Решение:
ВЫБРАТЬ
	НачислениеПоБольничномуЛисту.Физлицо КАК ФИО,
	НачислениеПоБольничномуЛисту.ДатаНачала,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации КАК МесяцНачисления,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента КАК СерияЛисткаНетрудоспособности,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента КАК NЛисткаНетрудоспособности,
	НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности КАК ПричинаНетрудоспособности,
	НачислениеПоБольничномуЛисту.ПроцентОплаты,
	СУММА(НачисленияБольничныхОбщее.ДниЗаСчетРаботодателя) КАК ДниЗаСчетРаботодателя,
	СУММА(НачисленияБольничныхОбщее.ДниЗаСчетФСС) КАК ДниЗаСчетФСС,
 СУММА(НачисленияБольничныхОбщее.ДниЗаСчетРаботодателя)+СУММА(НачисленияБольничныхОбщее.ДниЗаСчетФСС) КАК ИтогоДней,
	СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетРаботодателя) КАК ПособиеЗаСчетРаботодателя,
	СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетФСС) КАК ПособиеЗаСчетФСС,
	СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетРаботодателя)+СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетФСС) КАК ИтогоПособие
	
ИЗ
	Документ.НачислениеПоБольничномуЛисту КАК НачислениеПоБольничномуЛисту
		ЛЕВОЕ СОЕДИНЕНИЕ 
 (
ВЫБРАТЬ
			НачислениеПоБЛЗаСчРаботодателя.Ссылка КАК Ссылка,
			СУММА(ЕСТЬNULL(НачислениеПоБЛЗаСчРаботодателя.ОплаченоДнейЧасов, 0)) КАК ДниЗаСчетРаботодателя,
			0 КАК ДниЗаСчетФСС,
			СУММА(ЕСТЬNULL(НачислениеПоБЛЗаСчРаботодателя.Результат, 0)) КАК ПособиеЗаСчетРаботодателя,
			0 КАК ПособиеЗаСчетФСС
		ИЗ
			Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеПоБЛЗаСчРаботодателя
		ГДЕ
			НачислениеПоБЛЗаСчРаботодателя.Сторно = ЛОЖЬ
			И НачислениеПоБЛЗаСчРаботодателя.ВидРасчета.Код В ("00025")	
		СГРУППИРОВАТЬ ПО
			НачислениеПоБЛЗаСчРаботодателя.Ссылка
	ОБЪЕДИНИТЬ
		ВЫБРАТЬ
			НачислениеЗаСчетФСС.Ссылка,
			0,
			СУММА(ЕСТЬNULL(НачислениеЗаСчетФСС.ОплаченоДнейЧасов, 0)),
			0,
			СУММА(ЕСТЬNULL(НачислениеЗаСчетФСС.Результат, 0))
		ИЗ
			Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеЗаСчетФСС
		ГДЕ
			НачислениеЗаСчетФСС.Сторно = ЛОЖЬ
			И НачислениеЗаСчетФСС.ВидРасчета.Код В ("00021", "00022", "00023")		
		СГРУППИРОВАТЬ ПО
			НачислениеЗаСчетФСС.Ссылка
 ) КАК НачисленияБольничныхОбщее
		ПО НачислениеПоБольничномуЛисту.Ссылка = НачисленияБольничныхОбщее.Ссылка
ГДЕ
	НачислениеПоБольничномуЛисту.Организация В(&Организация)
	И НачислениеПоБольничномуЛисту.ПериодРегистрации МЕЖДУ &Дата1 И &Дата2
	И НачислениеПоБольничномуЛисту.ПометкаУдаления = ЛОЖЬ
	И НачислениеПоБольничномуЛисту.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
	НачислениеПоБольничномуЛисту.Физлицо,
	НачислениеПоБольничномуЛисту.ДатаНачала,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента,
	НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности,
	НачислениеПоБольничномуЛисту.ПроцентОплаты
	
	УПОРЯДОЧИТЬ ПО МесяцНачисления, ФИО	
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. alex-l19041 8 01.03.17 17:02 Сейчас в теме
(1) попробуйте воспользоваться консолью СКД
+
17. olleksa 03.03.17 08:31 Сейчас в теме
(3) Николай, Стенд не открывается. Я правильно понимаю, его надо запускать в режиме Предприятие? При открытии спрашивает разрешение на открытие и ничего не происходит. Так же с Консолью СКД 1-Совской.

Версия программы у меня 8.3, но базы от 8.2, если это имеет значение.

И вообще,я только начинаю с 1С, раньше я занималась Epicor iScala. И для меня этот переход очень болезнен. Может подскажите, с чего начать, что почитать, какими инструментами лучше пользоваться? Меня в первую очередь очень напрягает неполноценный скриптовый редактор, я пользуюсь Консолью запросов. Может есть что-нибудь альтернативное, более похожее на SQL Server Management Studio?
+
18. igel9780 171 03.03.17 08:55 Сейчас в теме
(17) В свежих версиях стандартных конфигураций надо выдавать специальное право на открытие внешних обработок. Сделано для защиты от вредоносного ПО.

А насчёт неполноценности. Ну так нет ничего полноценного. Везде есть свои плюсы и минусы.
+
21. boln 1040 03.03.17 11:31 Сейчас в теме
(17) Олеся, Вы, наверное, работаете в обычном режиме. Я написал в личку, что надо сделать.

Переход у всех бывает болезненный, 1С - уже огромный агрегат, который трудно воспринимается сразу. Начните с самостоятельного изучения, хотя бы с книги Радченко. Если не получится, тогда курсы помогут.
http://v8.1c.ru/metod/
+
5. Xershi 1484 01.03.17 17:51 Сейчас в теме
(1) удали из запроса текст в скобках. Он СКД не читался
+
8. olleksa 01.03.17 17:55 Сейчас в теме
(5) Результат тот же:(
+
10. Xershi 1484 01.03.17 18:21 Сейчас в теме
(8) раз есть левое соединение, то они могут быть равны нуль, проверки на нуль у тебя не вижу!
+
2. Turn123 18 01.03.17 16:27 Сейчас в теме
7. olleksa 01.03.17 17:54 Сейчас в теме
(2) Отчет для ЗиКБУ 8.2
Прикрепленные файлы:
Перечень_больничных.erf
+
4. boln 1040 01.03.17 17:47 Сейчас в теме
попробуйте воспользоваться консолью СКД
Конкретно - можно этой обработкой:
http://infostart.ru/public/179939/

Там на закладке "Макет СКД" нажмите "Обновить" - обработка покажет запрос, который СКД выполняет. Там же можно выполнить этот запрос и посмотреть результат.

Предположительно: в секции СГРУППИРОВАТЬ не участвуют поля из второй таблицы (Начисления2) - СКД поэтому может убрать эту таблицу из запроса. Но не настаиваю, что в этом причина.
+
6. olleksa 01.03.17 17:52 Сейчас в теме
(4) Консоль СКД, к сожалению, не открывается. Поэтому решила попробовать в Консоли Отчетов, но результат тот же, что и в СКД.
+
9. boln 1040 01.03.17 17:56 Сейчас в теме
(6) Что не открывается - 1С-овская Консоль или Стенд СКД?
+
11. olleksa 02.03.17 06:39 Сейчас в теме
(9) 1-C-овская не открывается, а Стенд как скачать? Я только что зарегистрировалась, у меня все по нулям.
+
14. boln 1040 02.03.17 11:02 Сейчас в теме
(11)
1-C-овская не открывается, а Стенд как скачать? Я только что зарегистрировалась, у меня все по нулям.
См. личку.
+
12. igel9780 171 02.03.17 07:39 Сейчас в теме
Я бы не стал искать, почему СКД что-то видит, а что-то не видит. Я бы оставил одно левое соединение:
ЛЕВОЕ СОЕДИНЕНИЕ Документ.НачислениеПоБольничномуЛисту.Начисления КАК Начисления
ПО НачислениеПоБольничномуЛисту.Ссылка = Начисления.Ссылка 
И (Начисления.Сторно = ЛОЖЬ) 
И (Начисления.ВидРасчета.Код В ("00021", "00022", "00025")) 


А цифры считал бы так:
ЕстьNULL(СУММА(ВЫБОР КОГДА Начисления.КодРасчета<>"00025" ТОГДА Начисления.ОплаченоДнейЧасов ИНАЧЕ 0 КОНЕЦ), 0) КАК ДниЗаСчетФСС, 
ЕстьNULL(СУММА(ВЫБОР КОГДА Начисления.КодРасчета="00025" ТОГДА Начисления.ОплаченоДнейЧасов ИНАЧЕ 0 КОНЕЦ), 0) КАК ДниЗаСчетРаботодателя, 


И если бы это решило проблему, то плюнул бы: "СКД что-то в себе оптимизировало-оптимизировало, да не выоптимизировало".
alex-l19041; +1
13. olleksa 02.03.17 09:29 Сейчас в теме
Ругается: "Группировка по таблицам верхнего уровня и вложенным таблицам"
+
15. igel9780 171 02.03.17 11:06 Сейчас в теме
(13) Так вопрос не в той части кода, которую я привёл. А в той части кода, который вы не переделали. Чтоб совсем снять с себя ответственность, поменяйте синоним таблицы для левого соединения.
+
16. igel9780 171 02.03.17 11:16 Сейчас в теме
(13) И, кстати. Зачем вы вообще группируете по полям

Начисления1.ВидРасчета КАК ВидРасчета, 
Начисления1.Сторно КАК Сторно


Судя по вашему коду, они принимают либо (NULL, NULL), либо ("00025", ЛОЖЬ).

Возьмите аггрегат по этим полям:
МАКСИМУМ(Начисления.ВидРасчета) КАК ВидРасчета, 
МАКСИМУМ(Начисления.Сторно) КАК Сторно
+
26. olleksa 03.03.17 15:42 Сейчас в теме
(16) Павел, спасибо, я поняла свою ошибку по группировке, исправила ее. И все равно, в запросе - все красиво, а в таблицу отчета эти цифры не выводятся:(
В приложении - скрины выполнения запроса и отчета.
Прикрепленные файлы:
+
19. vadim1011985 99 03.03.17 09:13 Сейчас в теме
Когда-то писал что-то подобное

ВЫБРАТЬ
	НачислениеПоБольничномуЛистуНачисления.Ссылка,
	СУММА(НачислениеПоБольничномуЛистуНачисления.Результат) КАК Результат,
	СУММА(ВЫБОР
			КОГДА НачислениеПоБольничномуЛистуНачисления.ОплаченоДнейЧасов < 0
					И НачислениеПоБольничномуЛистуНачисления.Ссылка.ПерерассчитываемыйДокумент = ЗНАЧЕНИЕ(Документ.НачислениеПоБольничномуЛисту.ПустаяСсылка)
				ТОГДА 0
			ИНАЧЕ НачислениеПоБольничномуЛистуНачисления.ОплаченоДнейЧасов
		КОНЕЦ) КАК ОплаченоДнейЧасов,
	НачислениеПоБольничномуЛистуНачисления.ВидРасчета
ПОМЕСТИТЬ ВТНачисление
ИЗ
	Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеПоБольничномуЛистуНачисления
ГДЕ
	НачислениеПоБольничномуЛистуНачисления.ВидРасчета В(&СписокВидовРасчетов)

СГРУППИРОВАТЬ ПО
	НачислениеПоБольничномуЛистуНачисления.ВидРасчета,
	НачислениеПоБольничномуЛистуНачисления.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТНачисление.Ссылка,
	СУММА(ВТНачисление.ОплаченоДнейЧасов) КАК ВсегоДней,
	СУММА(ВЫБОР
			КОГДА ВТНачисление.ВидРасчета.Наименование = "Оплата больничных листов за счет работодателя"
				ТОГДА ВТНачисление.ОплаченоДнейЧасов
		КОНЕЦ) КАК ДнейЗаСчетРаботодателя,
	СУММА(ВЫБОР
			КОГДА ВТНачисление.ВидРасчета.Наименование <> "Оплата больничных листов за счет работодателя"
				ТОГДА ВТНачисление.ОплаченоДнейЧасов
		КОНЕЦ) КАК ДнейЗаСчетФСС,
	СУММА(ВЫБОР
			КОГДА ВТНачисление.ВидРасчета.Наименование = "Оплата больничных листов за счет работодателя"
				ТОГДА ЕСТЬNULL(ВТНачисление.Результат, 0)
		КОНЕЦ) КАК ОплатаЗаСчетРаботодателя,
	СУММА(ВЫБОР
			КОГДА ВТНачисление.ВидРасчета.Наименование <> "Оплата больничных листов за счет работодателя"
				ТОГДА ЕСТЬNULL(ВТНачисление.Результат, 0)
		КОНЕЦ) КАК ОплатаЗаСчетФсс
ПОМЕСТИТЬ ВТРезультат
ИЗ
	ВТНачисление КАК ВТНачисление

СГРУППИРОВАТЬ ПО
	ВТНачисление.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НачислениеПоБольничномуЛисту.Сотрудник,
	НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ОбщееЗаболевание)
			ТОГДА ЕСТЬNULL(ВТРезультат.ДнейЗаСчетРаботодателя, 0)
	КОНЕЦ КАК ДнейЗаСчетРаботадателя,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ОбщееЗаболевание)
			ТОГДА ЕСТЬNULL(ВТРезультат.ДнейЗаСчетФСС, 0)
	КОНЕЦ КАК ДнейЗаСчетФСС,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ОбщееЗаболевание)
			ТОГДА ЕСТЬNULL(ВТРезультат.ОплатаЗаСчетРаботодателя, 0)
	КОНЕЦ КАК ОплатаЗаСчетРаботадателя,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ОбщееЗаболевание)
			ТОГДА ЕСТЬNULL(ВТРезультат.ОплатаЗаСчетФсс, 0)
	КОНЕЦ КАК ОплатаЗаСчетФСС,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ПоБеременностиИРодам)
			ТОГДА ЕСТЬNULL(ВТРезультат.ДнейЗаСчетФСС, 0)
	КОНЕЦ КАК ДнейПоБеремености,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ПоБеременностиИРодам)
			ТОГДА ЕСТЬNULL(ВТРезультат.ОплатаЗаСчетФсс, 0)
	КОНЕЦ КАК ОплатаПоБеремености,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ПоУходуЗаРебенком)
			ТОГДА ЕСТЬNULL(ВТРезультат.ДнейЗаСчетФСС, 0)
	КОНЕЦ КАК ДнейПоУходуЗаРебонком,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ПоУходуЗаРебенком)
			ТОГДА ЕСТЬNULL(ВТРезультат.ОплатаЗаСчетФсс, 0)
	КОНЕЦ КАК ОплатаПоУходуЗаРебенком,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ТравмаНаПроизводстве)
			ТОГДА ЕСТЬNULL(ВТРезультат.ДнейЗаСчетФСС, 0)
	КОНЕЦ КАК ДнейПоТрамвеНаПроизводстве,
	ВЫБОР
		КОГДА НачислениеПоБольничномуЛисту.ПричинаНетрудоспособности = ЗНАЧЕНИЕ(Перечисление.ПричиныНетрудоспособности.ТравмаНаПроизводстве)
			ТОГДА ЕСТЬNULL(ВТРезультат.ОплатаЗаСчетФсс, 0)
	КОНЕЦ КАК ОплатаПоТрамвеНаПроизводстве,
	НачислениеПоБольничномуЛисту.ПервичныйБольничныйЛист,
	НачислениеПоБольничномуЛисту.ДатаНачала,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента,
	НачислениеПоБольничномуЛисту.ПроцентОплаты
ИЗ
	Документ.НачислениеПоБольничномуЛисту КАК НачислениеПоБольничномуЛисту
		ЛЕВОЕ СОЕДИНЕНИЕ ВТРезультат КАК ВТРезультат
		ПО НачислениеПоБольничномуЛисту.Ссылка = ВТРезультат.Ссылка
ГДЕ
	НачислениеПоБольничномуЛисту.Проведен = ИСТИНА
	И НачислениеПоБольничномуЛисту.ПериодРегистрации МЕЖДУ &ДатаНач И &ДатаКон
Показать
+
20. vadim1011985 99 03.03.17 10:55 Сейчас в теме
Забыл указать параметр СписокВидовРасчета

	СписокРасчетов= Новый СписокЗначений;

	СписокРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Оплата больничных листов за счет работодателя"));
	СписокРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаБЛПоТравмеНаПроизводстве);
	СписокРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОтсутствиеПоБолезниПоБеременности);
	СписокРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуБЛ);
	СписокРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОтпускПоБеременностиИРодам);

+
22. ResetAtreides 03.03.17 11:44 Сейчас в теме
ИМХО, вообще соединения не нужны. Выбирать сам документ и крепить к нему таб. часть смысла нет. Можно сразу выбирать табличную часть, а все нужные реквизиты через ссылку вытащить. А данные по разным видам начислений делать как:

Выбор
	Когда Начисления.ВидРасчета.Код В ("00021", "00022") Тогда Начисления.ОплаченоДнейЧасов
Иначе
	0
Конец КАК ДниЗаСчетФСС,
Выбор
	Когда Начисления.ВидРасчета.Код В ("00025") Тогда Начисления.ОплаченоДнейЧасов
Иначе
	0
Конец КАК ДниЗаСчетРаботодателя
Показать

Потом при группировке сложится как надо
"Сторно", которое всегда ЛОЖЬ вообще выбирать не надо. А "ВидРасчета" если уж в детализации идет, тогда нет смысла "Начисления.ОплаченоДнейЧасов" делить на "ДниЗаСчетФСС" и "ДниЗаСчетРаботодателя". Они все равно в разных строках будут и не сложатся по кодам "00021", "00022"
То же самое касается
    СУММА(Начисления2.Результат) КАК ПособиеЗаСчетФСС,
    СУММА(Начисления1.Результат) КАК ПособиеЗаСчетРаботодателя,
+
23. igel9780 171 03.03.17 12:52 Сейчас в теме
(22) Если бы у топикстартера было ВНУТРЕННЕЕ СОЕДИНЕНИЕ, то я бы с Вами согласился. У топикстартера ЛЕВОЕ СОЕДИНЕНИЕ.
+
24. ResetAtreides 03.03.17 13:27 Сейчас в теме
(23) Ну, только если ТС обязательно хочет видеть документы с пустыми данными, по мне, так исходя из
УПОРЯДОЧИТЬ ПО
    МесяцНачисления,
    ФИО

ТС просто хочет видеть кому, когда и сколько начисляли больничных. А в данном контексте пустые данные нафиг не нужны. Да и деление "ЗаСчетФСС" и "ЗаСчетРаботодателя" вроде третьего варианта не подразумевает, т.е. любой вид начисления куда-то должен отнестись и в левом соединении смысла нет
+
27. olleksa 05.03.17 05:53 Сейчас в теме
Спасибо всем за неравнодушие, у меня получилось.

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

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

Решение:
ВЫБРАТЬ
	НачислениеПоБольничномуЛисту.Физлицо КАК ФИО,
	НачислениеПоБольничномуЛисту.ДатаНачала,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации КАК МесяцНачисления,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента КАК СерияЛисткаНетрудоспособности,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента КАК NЛисткаНетрудоспособности,
	НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности КАК ПричинаНетрудоспособности,
	НачислениеПоБольничномуЛисту.ПроцентОплаты,
	СУММА(НачисленияБольничныхОбщее.ДниЗаСчетРаботодателя) КАК ДниЗаСчетРаботодателя,
	СУММА(НачисленияБольничныхОбщее.ДниЗаСчетФСС) КАК ДниЗаСчетФСС,
 СУММА(НачисленияБольничныхОбщее.ДниЗаСчетРаботодателя)+СУММА(НачисленияБольничныхОбщее.ДниЗаСчетФСС) КАК ИтогоДней,
	СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетРаботодателя) КАК ПособиеЗаСчетРаботодателя,
	СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетФСС) КАК ПособиеЗаСчетФСС,
	СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетРаботодателя)+СУММА(НачисленияБольничныхОбщее.ПособиеЗаСчетФСС) КАК ИтогоПособие
	
ИЗ
	Документ.НачислениеПоБольничномуЛисту КАК НачислениеПоБольничномуЛисту
		ЛЕВОЕ СОЕДИНЕНИЕ 
 (
ВЫБРАТЬ
			НачислениеПоБЛЗаСчРаботодателя.Ссылка КАК Ссылка,
			СУММА(ЕСТЬNULL(НачислениеПоБЛЗаСчРаботодателя.ОплаченоДнейЧасов, 0)) КАК ДниЗаСчетРаботодателя,
			0 КАК ДниЗаСчетФСС,
			СУММА(ЕСТЬNULL(НачислениеПоБЛЗаСчРаботодателя.Результат, 0)) КАК ПособиеЗаСчетРаботодателя,
			0 КАК ПособиеЗаСчетФСС
		ИЗ
			Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеПоБЛЗаСчРаботодателя
		ГДЕ
			НачислениеПоБЛЗаСчРаботодателя.Сторно = ЛОЖЬ
			И НачислениеПоБЛЗаСчРаботодателя.ВидРасчета.Код В ("00025")	
		СГРУППИРОВАТЬ ПО
			НачислениеПоБЛЗаСчРаботодателя.Ссылка
	ОБЪЕДИНИТЬ
		ВЫБРАТЬ
			НачислениеЗаСчетФСС.Ссылка,
			0,
			СУММА(ЕСТЬNULL(НачислениеЗаСчетФСС.ОплаченоДнейЧасов, 0)),
			0,
			СУММА(ЕСТЬNULL(НачислениеЗаСчетФСС.Результат, 0))
		ИЗ
			Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеЗаСчетФСС
		ГДЕ
			НачислениеЗаСчетФСС.Сторно = ЛОЖЬ
			И НачислениеЗаСчетФСС.ВидРасчета.Код В ("00021", "00022", "00023")		
		СГРУППИРОВАТЬ ПО
			НачислениеЗаСчетФСС.Ссылка
 ) КАК НачисленияБольничныхОбщее
		ПО НачислениеПоБольничномуЛисту.Ссылка = НачисленияБольничныхОбщее.Ссылка
ГДЕ
	НачислениеПоБольничномуЛисту.Организация В(&Организация)
	И НачислениеПоБольничномуЛисту.ПериодРегистрации МЕЖДУ &Дата1 И &Дата2
	И НачислениеПоБольничномуЛисту.ПометкаУдаления = ЛОЖЬ
	И НачислениеПоБольничномуЛисту.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
	НачислениеПоБольничномуЛисту.Физлицо,
	НачислениеПоБольничномуЛисту.ДатаНачала,
	НачислениеПоБольничномуЛисту.ДатаОкончания,
	НачислениеПоБольничномуЛисту.ПериодРегистрации,
	НачислениеПоБольничномуЛисту.СерияВходящегоДокумента,
	НачислениеПоБольничномуЛисту.НомерВходящегоДокумента,
	НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности,
	НачислениеПоБольничномуЛисту.ПроцентОплаты
	
	УПОРЯДОЧИТЬ ПО МесяцНачисления, ФИО	
Показать
+
28. ResetAtreides 06.03.17 14:20 Сейчас в теме
(27)
просьба прокомментировать на оптимизированность и загрузку на сервер

Вообще отвратительно.
1)Сначала во внутренний запрос выбираются строки табличных частей без отбора по периоду, организации и пр. А потом уже соединяется с отобранным массивом документов.
2)Внутренний запрос прекрасно без объединения, одним запросом выбирается

Я бы так выбирал:
ВЫБРАТЬ
	НачислениеПоБольничномуЛистуНачисления.Ссылка,
	СУММА(ВЫБОР
			КОГДА НачислениеПоБольничномуЛистуНачисления.ВидРасчета.Код = ""00025""
				ТОГДА НачислениеПоБольничномуЛистуНачисления.ОплаченоДнейЧасов
			ИНАЧЕ 0
		КОНЕЦ) КАК ДниЗаСчетРаботодателя,
	СУММА(ВЫБОР
			КОГДА НачислениеПоБольничномуЛистуНачисления.ВидРасчета.Код = ""00025""
				ТОГДА НачислениеПоБольничномуЛистуНачисления.Результат
			ИНАЧЕ 0
		КОНЕЦ) КАК ПособиеЗаСчетРаботодателя,
	СУММА(ВЫБОР
			КОГДА НачислениеПоБольничномуЛистуНачисления.ВидРасчета.Код = ""00025""
				ТОГДА 0
			ИНАЧЕ НачислениеПоБольничномуЛистуНачисления.ОплаченоДнейЧасов
		КОНЕЦ) КАК ДниЗаСчетФСС,
	СУММА(ВЫБОР
			КОГДА НачислениеПоБольничномуЛистуНачисления.ВидРасчета.Код = ""00025""
				ТОГДА 0
			ИНАЧЕ НачислениеПоБольничномуЛистуНачисления.Результат
		КОНЕЦ) КАК ПособиеЗаСчетФСС
ИЗ
	Документ.НачислениеПоБольничномуЛисту.Начисления КАК НачислениеПоБольничномуЛистуНачисления
ГДЕ
	НачислениеПоБольничномуЛистуНачисления.Ссылка.Проведен
	И НЕ НачислениеПоБольничномуЛистуНачисления.Ссылка.ПометкаУдаления
	И НачислениеПоБольничномуЛистуНачисления.Ссылка.ПериодРегистрации МЕЖДУ &Дата1 И &Дата2
	И НачислениеПоБольничномуЛистуНачисления.Ссылка.Организация В(&Организации)
	И НачислениеПоБольничномуЛистуНачисления.ВидРасчета.Код В (""00021"", ""00022"", ""00023"", ""00025"")
	И НЕ НачислениеПоБольничномуЛистуНачисления.Сторно

СГРУППИРОВАТЬ ПО
	НачислениеПоБольничномуЛистуНачисления.Ссылка
Показать

Все остальные поля из ссылки вытаскиваются
P/S/ А вообще, отбор по кодам не айс. Да и данные, наверняка, из регистра можно выбирать, а не из документа
+
29. olleksa 06.03.17 16:08 Сейчас в теме
(28) Вообще-то я согласна с Вами. Запрос мне и самой не нравится.
Поясните, пожалуйста, как это:
остальные поля из ссылки вытаскиваются

Какая альтернатива отбора по кодам? Можно коды еще вынести в параметр.
+
30. ResetAtreides 06.03.17 16:52 Сейчас в теме
(29)
остальные поля из ссылки вытаскиваются

У Вас, судя по запросу и скриншоту, нужны поля:
    НачислениеПоБольничномуЛисту.Физлицо КАК ФИО,
    НачислениеПоБольничномуЛисту.ДатаНачала,
    НачислениеПоБольничномуЛисту.ДатаОкончания,
    НачислениеПоБольничномуЛисту.ПериодРегистрации КАК МесяцНачисления,
    НачислениеПоБольничномуЛисту.СерияВходящегоДокумента КАК СерияЛисткаНетрудоспособности,
    НачислениеПоБольничномуЛисту.НомерВходящегоДокумента КАК NЛисткаНетрудоспособности,
    НачислениеПоБольничномуЛисту.КодПричиныНетрудоспособности КАК ПричинаНетрудоспособности,
    НачислениеПоБольничномуЛисту.ПроцентОплаты
Показать

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

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

ВЫБРАТЬ
    ВТ1.Ссылка.Физлицо КАК ФИО,
    ВТ1.Ссылка.ДатаНачала,
    ВТ1.Ссылка.ДатаОкончания,
    ВТ1.Ссылка.ПериодРегистрации КАК МесяцНачисления,
    ..
    ВТ1.ДниЗаСчетРаботодателя,
    ВТ1.ПособиеЗаСчетРаботодателя,
    ВТ1.ДниЗаСчетФСС,
    ВТ1.ПособиеЗаСчетФСС
    ...
Показать

Если не нравится что столько через точку вытягивается, то можно соединить по имеющейся ссылке с самим документом и вытащить реквизиты оттуда. Но, ИМХО, получится примерно то же самое и менее читаемое

Какая альтернатива отбора по кодам? Можно коды еще вынести в параметр

Можно в параметр. А если это предопределенный элемент справочника/планов видов характеристик, или перечисление, то можно сразу в запросе установить нужное значение. В любом случае будет намного шустрее
+
25. vadim1011985 99 03.03.17 14:39 Сейчас в теме
Если делать без ЛС, то некоторым полям придётся обращаться через "." Что может сказаться на быстродействии запроса
+
Внимание! Тема сдана в архив

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