0
dft2014
29.08.18
✎
18:53
|
Есть три таблицы значений:
тзОстатки
тзОстатки_МинусМесяц
тзОстатки_КонецГода
Собираю их с помощью запроса в одну, причем:
- ФИО, Подразделение и Остаток должно тянуться из тзОстатки;
- ОстатокПредДата должно тянуться из тзОстатки_МинусМесяц;
- ОстатокКонецГода должно тянуться из тзОстатки_КонецГода
В результате, если Остаток пустой, то возвращает пустое ФИО, Подразделение и Должность.
Пробовала вместо | ВТ.ФИО КАК ФИО,
писать | естьNull(ВТ.ФИО,ВТКонецГода.ФИО) КАК ФИО,
результат одинаковый.
Ниже код:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТЗ.ФИО КАК ФИО,
| ТЗ.Подразделение КАК Подразделение,
| ТЗ.ОстатокТекДата КАК ОстатокТекДата
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТЗ КАК ТЗ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТЗПредДата.ФИО КАК ФИО,
| ТЗПредДата.ОстатокПредДата КАК ОстатокПредДата
|ПОМЕСТИТЬ ВТПредДата
|ИЗ
| &ТЗПредДата КАК ТЗПредДата
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТЗКонецГода.ФИО КАК ФИО,
| ТЗКонецГода.ОстатокКонецГода КАК ОстатокКонецГода
|ПОМЕСТИТЬ ВТКонецГода
|ИЗ
| &ТЗКонецГода КАК ТЗКонецГода
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.ФИО КАК ФИО,
//| естьNull(ВТ.ФИО,ВТКонецГода.ФИО) КАК ФИО, //тоже самое выдает
| ВТ.Подразделение КАК Подразделение,
| ВТПредДата.ОстатокПредДата КАК ОстатокПредДата,
| ВТ.ОстатокТекДата КАК ОстатокТекДата,
| ВТКонецГода.ОстатокКонецГода КАК ОстатокКонецГода
|ИЗ
| ВТ КАК ВТ
| ПОЛНОЕ СОЕДИНЕНИЕ ВТПредДата КАК ВТПредДата
| ПО ВТ.ФИО = ВТПредДата.ФИО
| ПОЛНОЕ СОЕДИНЕНИЕ ВТКонецГода КАК ВТКонецГода
| ПО ВТ.ФИО = ВТКонецГода.ФИО";
Запрос.УстановитьПараметр("ТЗ",тзОстатки);
Запрос.УстановитьПараметр("ТЗПредДата",тзОстатки_МинусМесяц);
Запрос.УстановитьПараметр("ТЗКонецГода",тзОстатки_КонецГода);
ИтоговаяТаблица = Запрос.Выполнить().Выгрузить();
|
|
1
Sapiens_bru
29.08.18
✎
19:11
|
Тут можно извратится и собрать конструкцией ВЫБОР все возможные варианты Null из таблиц.
Но я предлагаю поступить намного проще - используйте для связи не соединение таблиц, а объединение.
Объединяйте поля ФИО из всех таблиц, а поля остатков объединяйте с нулевыми значениями.
ФИО Пред 0 0
ФИО 0 Тек 0
ФИО 0 0 Конец
Затем полученную таблицу пихаете в новую ВТ и группируете по полю ФИО, суммируя все остальные поля.
Если нужно, потом можно связать с первой таблицей для получения подразделений.
Будет работать на порядки быстрее и не надо думать где там NULL
|
|
2
iolxrfsf
29.08.18
✎
19:13
|
> возвращает пустое ФИО, Подразделение и Должность.
а где здесь вообще "Должность"?
В тзОстатки_МинусМесяц и тзОстатки_КонецГода есть Подразделение?
> Пробовала "естьNull(ВТ.ФИО,ВТКонецГода.ФИО) КАК ФИО"
Можно ещё "естьNull(ВТ.ФИО,естьNull(ВТКонецГода.ФИО,ВТПредДата.ФИО)) КАК ФИО"
|
|