Всех с днем знаний!
Помогите разобраться в языке запросов.
Написал запрос
Делаю запрос для сравнения двух таблиц, по мануалам подходит полное соединение.
Если в документе есть дубль номенклатуры (а они бывают постоянно, разные характеристики и тех процесс), то получаются дубли в результате, либо перекрестное соединение.
Как от этого избавиться, либо заменить дубли на NULL например?
Помогите разобраться в языке запросов.
Написал запрос
ВЫБРАТЬ
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
КомплектацияНоменклатурыКомплектующие.Номенклатура КАК Номенклатура,
КомплектацияНоменклатурыКомплектующие.Количество КАК Количество,
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура1,
ПоступлениеТоваровУслугТовары.Количество КАК Количество1
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие
ПО (РеализацияТоваровУслуг.РасшЛом_ДокКомплектации = КомплектацияНоменклатурыКомплектующие.Ссылка)
ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО (КомплектацияНоменклатурыКомплектующие.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура)
И (РеализацияТоваровУслуг.ДокПост = ПоступлениеТоваровУслугТовары.Ссылка)
ГДЕ
РеализацияТоваровУслуг.Проведен = ИСТИНА
УПОРЯДОЧИТЬ ПО
РасшЛом_ДокКомплектации,
Номенклатура
ПоказатьДелаю запрос для сравнения двух таблиц, по мануалам подходит полное соединение.
Если в документе есть дубль номенклатуры (а они бывают постоянно, разные характеристики и тех процесс), то получаются дубли в результате, либо перекрестное соединение.
Как от этого избавиться, либо заменить дубли на NULL например?
Прикрепленные файлы:
По теме из базы знаний
- Пример использования временных таблиц в запросах (8.2)
- Удаление дублей запросом
- Запрос соединения таблиц данных с набором общих реквизитов, имеющих также различающиеся реквизиты, с распределением количества (для 1С: Предприятие 8)
- Снежинка для запроса
- Как читать чужой код? Часть 3. Разбор и доработка запросов
Найденные решения
Может, надо сгруппировать сначала комплектующие?
upd1: (5) А, так понял, что слева должны быть все строки.
upd2: Как вариант, наверно, можно сделать итоги, если уж прям все строки комплектующих нужны:
типа ИТОГИ ПО РеализацияТоваровУслуг.ДокПост, ПоступлениеТоваровУслугТовары.Номенклатура (РеализацияТоваровУслуг.ДокПост вынести в выборку).
Визуально понятней будет, что комплектующие относятся к одному товару поступления.
ВЫБРАТЬ
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
РеализацияТоваровУслуг.ДокПост КАК ДокПост,
КомплектацияНоменклатурыКомплектующие.Номенклатура КАК Номенклатура,
СУММА(КомплектацияНоменклатурыКомплектующие.Количество) КАК Количество
ПОМЕСТИТЬ ВтКомплектующие
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие
ПО (РеализацияТоваровУслуг.РасшЛом_ДокКомплектации = КомплектацияНоменклатурыКомплектующие.Ссылка)
СГУППИРОВАТЬ ПО
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации,
РеализацияТоваровУслуг.ДокПост,
КомплектацияНоменклатурыКомплектующие.Номенклатура
ГДЕ
РеализацияТоваровУслуг.Проведен
;
ВЫБРАТЬ
ВтКомплектующие.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
ВтКомплектующие.Номенклатура КАК Номенклатура,
ВтКомплектующие.Количество КАК Количество,
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура1,
ПоступлениеТоваровУслугТовары.Количество КАК Количество1
ИЗ
ВтКомплектующие КАК ВтКомплектующие
ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО (ВтКомплектующие.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура)
И (ВтКомплектующие.ДокПост = ПоступлениеТоваровУслугТовары.Ссылка)
УПОРЯДОЧИТЬ ПО
РасшЛом_ДокКомплектации,
Номенклатура
Показатьupd1: (5) А, так понял, что слева должны быть все строки.
upd2: Как вариант, наверно, можно сделать итоги, если уж прям все строки комплектующих нужны:
типа ИТОГИ ПО РеализацияТоваровУслуг.ДокПост, ПоступлениеТоваровУслугТовары.Номенклатура (РеализацияТоваровУслуг.ДокПост вынести в выборку).
Визуально понятней будет, что комплектующие относятся к одному товару поступления.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
язык SQL (а в запросах 1с практически он и есть с некоторыми странностями) это штука такая, что про нее пишут учебники на сотни страниц. Как можно "помочь разобраться" в таком непростом предмете в формате форума? Тут нужен хороший курс с хорошим преподом. После прохождения курса, если будут появляться некоторые небольшие вопросы, можно и в форуме спросить...
Помогите разобраться в языке запросов
язык SQL (а в запросах 1с практически он и есть с некоторыми странностями) это штука такая, что про нее пишут учебники на сотни страниц. Как можно "помочь разобраться" в таком непростом предмете в формате форума? Тут нужен хороший курс с хорошим преподом. После прохождения курса, если будут появляться некоторые небольшие вопросы, можно и в форуме спросить...
(5) Да, именно так.
(6) И слева, и справа должны быть все строки. Сгруппировать можно по номенклатуре и доп признаку (не критично), пробовал без виртуальной таблицы, но дубли начинают группироваться тоже. Уже задумался о виртуальной таблице.
(7)
Нужно начинать с малого, записался на профессионала с 1.10. Самообучение не так эффективно как кажется
(6) И слева, и справа должны быть все строки. Сгруппировать можно по номенклатуре и доп признаку (не критично), пробовал без виртуальной таблицы, но дубли начинают группироваться тоже. Уже задумался о виртуальной таблице.
(7)
хороший курс
Нужно начинать с малого, записался на профессионала с 1.10. Самообучение не так эффективно как кажется
(11)
По такому принципу и работаю))) я во франче не работаю, а работу программистом (даже калымы) желательно подтверждать чем то, как говориться "без бумажки ты букашка". Вобщем нужно как то развиваться с документальным подтверждением)))
(10) SQL на буржуйском, плохо воспринимаю, с 1с попроще. Как подопрет (как сейчас), буду развиваться.
Главное - выполнение поставленных задач.
надо значит надо
По такому принципу и работаю))) я во франче не работаю, а работу программистом (даже калымы) желательно подтверждать чем то, как говориться "без бумажки ты букашка". Вобщем нужно как то развиваться с документальным подтверждением)))
(10) SQL на буржуйском, плохо воспринимаю, с 1с попроще. Как подопрет (как сейчас), буду развиваться.
Главное - выполнение поставленных задач.
Может, надо сгруппировать сначала комплектующие?
upd1: (5) А, так понял, что слева должны быть все строки.
upd2: Как вариант, наверно, можно сделать итоги, если уж прям все строки комплектующих нужны:
типа ИТОГИ ПО РеализацияТоваровУслуг.ДокПост, ПоступлениеТоваровУслугТовары.Номенклатура (РеализацияТоваровУслуг.ДокПост вынести в выборку).
Визуально понятней будет, что комплектующие относятся к одному товару поступления.
ВЫБРАТЬ
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
РеализацияТоваровУслуг.ДокПост КАК ДокПост,
КомплектацияНоменклатурыКомплектующие.Номенклатура КАК Номенклатура,
СУММА(КомплектацияНоменклатурыКомплектующие.Количество) КАК Количество
ПОМЕСТИТЬ ВтКомплектующие
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие
ПО (РеализацияТоваровУслуг.РасшЛом_ДокКомплектации = КомплектацияНоменклатурыКомплектующие.Ссылка)
СГУППИРОВАТЬ ПО
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации,
РеализацияТоваровУслуг.ДокПост,
КомплектацияНоменклатурыКомплектующие.Номенклатура
ГДЕ
РеализацияТоваровУслуг.Проведен
;
ВЫБРАТЬ
ВтКомплектующие.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
ВтКомплектующие.Номенклатура КАК Номенклатура,
ВтКомплектующие.Количество КАК Количество,
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура1,
ПоступлениеТоваровУслугТовары.Количество КАК Количество1
ИЗ
ВтКомплектующие КАК ВтКомплектующие
ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО (ВтКомплектующие.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура)
И (ВтКомплектующие.ДокПост = ПоступлениеТоваровУслугТовары.Ссылка)
УПОРЯДОЧИТЬ ПО
РасшЛом_ДокКомплектации,
Номенклатура
Показатьupd1: (5) А, так понял, что слева должны быть все строки.
upd2: Как вариант, наверно, можно сделать итоги, если уж прям все строки комплектующих нужны:
типа ИТОГИ ПО РеализацияТоваровУслуг.ДокПост, ПоступлениеТоваровУслугТовары.Номенклатура (РеализацияТоваровУслуг.ДокПост вынести в выборку).
Визуально понятней будет, что комплектующие относятся к одному товару поступления.
(6) Вектор направления с виртуальными таблицами принят. Попробовал твой код, немного подкорректировав он работает. В конкретном примере, что на скрине, с АКБ все красиво, а вот с алюминием дубль слева появляется, но тут необходимо вводить вторую виртуальную таблицу. Спасибо!
В качестве лирики
Я вообще не помню, чтобы в моё время какие-то курсы были. Пришёл во франч — через 2 недели проф. Потом через разумное время — специалист. Помогали, разумеется с подготовкой. К клиентам поначалу ездить тот ещё квест был: знаешь не знаешь — не волнует, надо значит надо.
Я вообще не помню, чтобы в моё время какие-то курсы были. Пришёл во франч — через 2 недели проф. Потом через разумное время — специалист. Помогали, разумеется с подготовкой. К клиентам поначалу ездить тот ещё квест был: знаешь не знаешь — не волнует, надо значит надо.
Еще раз спасибо lone_mayson!
Доделал, все работает как нужно, механика понятна, осталось навести марафет
ВЫБРАТЬ
РеализацияТоваровУслуг.ДокПост КАК ДокПост,
ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура1,
СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество1
ПОМЕСТИТЬ ВтПоступления
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ПО РеализацияТоваровУслуг.ДокПост = ПоступлениеТоваровУслугТовары.Ссылка
ГДЕ
РеализацияТоваровУслуг.Проведен
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслуг.ДокПост,
ПоступлениеТоваровУслугТовары.Ссылка,
ПоступлениеТоваровУслугТовары.Номенклатура
;
//////////////////////////////////////////////////////////// /////////////
ВЫБРАТЬ
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
РеализацияТоваровУслуг.ДокПост КАК ДокПост,
КомплектацияНоменклатурыКомплектующие.Номенклатура КАК Номенклатура,
СУММА(КомплектацияНоменклатурыКомплектующие.Количество) КАК Количество
ПОМЕСТИТЬ ВтКомплектующие
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КомплектацияНоменклатуры.Комплектующие КАК КомплектацияНоменклатурыКомплектующие
ПО (РеализацияТоваровУслуг.РасшЛом_ДокКомплектации = КомплектацияНоменклатурыКомплектующие.Ссылка)
ГДЕ
РеализацияТоваровУслуг.Проведен
СГРУППИРОВАТЬ ПО
РеализацияТоваровУслуг.РасшЛом_ДокКомплектации,
РеализацияТоваровУслуг.ДокПост,
КомплектацияНоменклатурыКомплектующие.Номенклатура
;
//////////////////////////////////////////////////////////// /////////////////////////////////////
ВЫБРАТЬ
ВтКомплектующие.РасшЛом_ДокКомплектации КАК РасшЛом_ДокКомплектации,
ВтКомплектующие.Номенклатура КАК Номенклатура,
ВтКомплектующие.Количество КАК Количество,
ВтПоступления.Номенклатура1 КАК Номенклатура1,
ВтПоступления.Количество1 КАК Количество1
ИЗ
ВтКомплектующие КАК ВтКомплектующие
ПОЛНОЕ СОЕДИНЕНИЕ ВтПоступления КАК ВтПоступления
ПО (ВтКомплектующие.Номенклатура = ВтПоступления.Номенклатура1)
И (ВтКомплектующие.ДокПост = ВтПоступления.Ссылка)
УПОРЯДОЧИТЬ ПО
РасшЛом_ДокКомплектации,
Номенклатура
ПоказатьДоделал, все работает как нужно, механика понятна, осталось навести марафет
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот