|
Корректное соединение 3 и более запросов с разным количеством полей | ☑ | ||
---|---|---|---|---|
0
merlin789
22.02.18
✎
10:10
|
Добрый день, Коллеги.​
Столкнулся со следующей проблемой, не удаётся соединить несколько однотипных полей из 3 запросов к регистрам в 1 поле с соединением по 3 ключевым полям номенклатуре, складу + список дат, дата берётся из регистра производственный календарь помещается в отдельный запрос. Проблема в том, как оформить в конечный запрос, т.к номенклатура, склад и дата сворачиваются не по всем строкам, по некоторым в результате отображаются только сами значения регистра без номенклатуры, склада и даты.(значения null) хотя каждый запрос по отдельности выдаёт корректный результат. Знаю про способ естьnull но он годится только для соединения 2х таблиц. Вариант с объединить не годится т.к. разное количество полей в запросах. Остатётся вариант только группировать по 2 запроса во временную таблицу, и к ней приесодинять данные третьего запроса, но на мой взягляд данный вариант громоздкий и некорректный. Я ищу конструкцию которая позволит объединить в 1 столбец данные одного и того же справочника(номенклатура, склад) из 3 и более запросов. Буду благодарен за пример с конструкцией или направление в котором двигаться. |
|||
1
merlin789
22.02.18
✎
10:11
|
//Календарь
Выбрать НачалоПериода(ДатаКалендаря,День) как ДатаКалендаря поместить календарь Из РегистрСведений.РегламентированныйПроизводственныйКалендарь где ДатаКалендаря между &ДатаНач и &ДатаКон ; //Движения топлива Выбрать ДатаКалендаря, Склад, Номенклатура, Сумма(Количество) как Количество Поместить ДвиженияТоплива из (Выбрать НачалоПериода(Дата,День) как ДатаКалендаря, Помещение.Склад как Склад, Номенклатура, Количество из РегистрСведений.krsДвижениеТопливаНаАЗС где Дата между &ДатаНач и &ДатаКон и выбор когда &склад<>Значение(справочник.Склады.пустаяСсылка) тогда помещение.Склад=&Склад иначе истина конец )как ДвижТоплива сгруппировать по ДатаКалендаря,Склад, Номенклатура ; //Остатки топлива Выбрать НачалоПериода(ДатаКалендаря,День) как ДатаКалендаря, Склад, Номенклатура, Сумма(Количество) как ОстатокН поместить ОстаткиТоплива из ( Выбрать НачалоПериода(Период, день) как ДатаКалендаря, Помещение.Склад как Склад, Номенклатура, Количество*Плотность как Количество из РегистрСведений.krsДанныеУровнемеров где период между &ДатаНач и &ДатаКон и выбор когда &склад<>Значение(справочник.Склады.пустаяСсылка) тогда помещение.Склад=&Склад иначе истина конец)как ДДатчиков сгруппировать по ДатаКалендаря,Склад,номенклатура ; //Перемещения ВЫБРАТЬ НачалоПериода(Период, День) как ДатаКалендаря, Склад, Номенклатура, КоличествоПриход как Приход, КоличествоРасход как Расход поместить Перемещения ИЗ РегистрНакопления.ТоварыВРознице.Обороты(&ДатаНач, &ДатаКон,День, выбор когда &Склад <>Значение(Справочник.Склады.ПустаяСсылка) тогда Склад=&Склад иначе истина конец) ; Выбрать Календарь.ДатаКалендаря, ДвиженияТоплива.Номенклатура, ДвиженияТоплива.Склад, ОстаткиТоплива.ОстатокН, ДвиженияТоплива.Количество, Перемещения.Приход, Перемещения.Расход из Календарь как Календарь Полное Соединение ДвиженияТоплива как ДвиженияТоплива по Календарь.ДатаКалендаря=ДвиженияТоплива.ДатаКалендаря Полное Соединение ОстаткиТоплива как ОстаткиТоплива по Календарь.ДатаКалендаря=ОстаткиТоплива.ДатаКалендаря и ДвиженияТоплива.Склад=ОстаткиТоплива.Склад и ДвиженияТоплива.Номенклатура=ОстаткиТоплива.Номенклатура Полное Соединение Перемещения как Перемещения по Календарь.ДатаКалендаря=Перемещения.ДатаКалендаря и ДвиженияТоплива.Склад=Перемещения.Склад и ДвиженияТоплива.Номенклатура=Перемещения.Номенклатура упорядочить по Календарь.ДатаКалендаря |
|||
2
mehfk
22.02.18
✎
10:12
|
||||
3
merlin789
22.02.18
✎
10:18
|
mehfk, нет проблемы соединить эти таблицы, проблема именно в колонках.
т.е для 2 таблиц это было бы так Выбрать Календарь.ДатаКалендаря, ЕстьNULL(ДвиженияТоплива.Номенклатура,Остатки.Номенклатура) как Номенклатура, но как быть когда их больше? Неужели в 1с нет никакого стандартного метода? |
|||
4
Мимохожий Однако
22.02.18
✎
10:21
|
Нарисуй сначала в Excel таблички или в блокнотике, а потом определись что и как. Возможно, нужно объединение.
|
|||
5
Optan
22.02.18
✎
10:22
|
(3) ЕстьNULL(ДвиженияТоплива.Номенклатура,ЕстьNULL(ОстаткиТоплива.Номенклатура,Перемещения.Номенклатура)
(1) А почему не соединится с календарем тремя левыми соединениями и сгруппировать? |
|||
6
merlin789
22.02.18
✎
10:28
|
(5)была такая мысль
т.е. алгоритм таков? 3 левых соединения с календарём Выбрать ДатаКалендаря ЕстьNULL(таблица1),ЕстьNULL(таблица2),ЕстьNULL(таблица3) как номенклатура ИЗ (таблица1 объединить таблица2 объединить таблица3) сгруппировать по номенклатура |
|||
7
Optan
22.02.18
✎
10:37
|
(6) Ну я думал как то так:
|
|||
8
merlin789
22.02.18
✎
10:39
|
(7)Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |