Цитата artfa (
)
4. не понял о чем речь.
Поясню на примере (примеры из 2-х разных задач 3.17 и 3.22, т.е. это не один и тот же запрос в 2-х вариантах).
1-й вариант: соединение с таблицей перерасчета:
ВЫБРАТЬ
ДанныеГрафика.НомерСтроки,
ЕСТЬNULL(ДанныеГрафика.ЗначениеФактическийПериодДействия, 0) КАК ДнейФакт,
ДанныеГрафика.ВидРасчета.СпособРасчета КАК СпособРасчета
ИЗ
РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
Регистратор = &Регистратор
И ВидРасчета.СпособРасчета В (&Оклад, &Невыход)) КАК ДанныеГрафика
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.ПерерасчетОН КАК ПерерасчетОН ПО ДанныеГрафика.Подразделение = ПерерасчетОН.Подразделение
И ДанныеГрафика.Сотрудник = ПерерасчетОН.Сотрудник
И ДанныеГрафика.Регистратор = ПерерасчетОН.Регистратор
2-й вариант: отбор по таблице перерасчета в параметрах виртуальной таблицы.
ВЫБРАТЬ
ПерерасчетОН.Подразделение,
ПерерасчетОН.Сотрудник
ПОМЕСТИТЬ Перерасчет
ИЗ
РегистрРасчета.ОсновныеНачисления.ПерерасчетОН КАК ПерерасчетОН
ГДЕ
ПерерасчетОН.ОбъектПерерасчета = &Регистратор
И ПерерасчетОН.ВидРасчета = &Сверхурочные
;
////////////////////////////////////////////
ВЫБРАТЬ
ДанныеГрафика.НомерСтроки,
ЕСТЬNULL(ДанныеГрафика.ЗначениеБазовыйПериод, 0) КАК ЧасовБаза,
ЕСТЬNULL(БазаОН.РезультатБаза, 0) + ЕСТЬNULL(БазаДН.РезультатБаза, 0) КАК РезультатБаза
ИЗ
РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
ВидРасчета = &Сверхурочные
И Регистратор = &Регистратор
И (Подразделение, Сотрудник) В
(ВЫБРАТЬ
Перерасчет.Подразделение,
Перерасчет.Сотрудник
ИЗ
Перерасчет КАК Перерасчет) ) КАК ДанныеГрафика
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(
&Измерения,
&Измерения,
,
ВидРасчета = &Сверхурочные
И Регистратор = &Регистратор
И (Подразделение, Сотрудник) В
(ВЫБРАТЬ
Перерасчет.Подразделение,
Перерасчет.Сотрудник
ИЗ
Перерасчет КАК Перерасчет) ) КАК БазаОН
ПО ДанныеГрафика.НомерСтроки = БазаОН.НомерСтроки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаДополнительныеНачисления(
&Измерения,
&Измерения,
,
ВидРасчета = &Сверхурочные
И Регистратор = &Регистратор
И (Подразделение, Сотрудник) В
(ВЫБРАТЬ
Перерасчет.Подразделение,
Перерасчет.Сотрудник
ИЗ
Перерасчет КАК Перерасчет) ) КАК БазаДН
ПО ДанныеГрафика.НомерСтроки = БазаДН.НомерСтроки
2-й вариант вроде как более правильный, т.к. отбор по параметрам виртуальной таблицы, но конечно же, более громоздкий.