Всем добрый день. Ребят уже изошелся на нет, никак не могу понять почему не формируется корректно таблица в запросе....
Вроде бы всё элементарно но такое чувство что что-то упустил.
Вот запрос
Результат формируется в 8 строк, но в каждом регистре 4 строки и мне нужно что бы он и объединил в 4 строки....
Скажите мне "...." в чём я ошибся?
Результат прикрепил
Вроде бы всё элементарно но такое чувство что что-то упустил.
Вот запрос
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
ПоказатьРезультат формируется в 8 строк, но в каждом регистре 4 строки и мне нужно что бы он и объединил в 4 строки....
Скажите мне "...." в чём я ошибся?
Результат прикрепил
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(25) Вася, Вася! Автор четко написал какой результат ему нужен
Результат формируется в 8 строк, но в каждом регистре 4 строки и мне нужно что бы он и объединил в 4 строки....
Скажите мне "...." в чём я ошибся?
Таким образом, ему не нужно объединять, а нужно соединять по двум измерениям. Более точный запрос написали ниже, добавлю ещё, не хватает условий для второго регистра, а то будет сверять со всеми данными и запрос будет работать дольше.
Скажите мне "...." в чём я ошибся?
ВЫБРАТЬ
ЕстьNULL(ЗаявкиПоОтделам.НСБ, ЗаявкиПоОтделамФакт.НСБ) КАК НСБ,
ЕстьNULL(ЗаявкиПоОтделам.Контрагент, ЗаявкиПоОтделамФакт.Контрагент) КАК Контрагент,
ЕстьNULL(ЗаявкиПоОтделам.СуммаЛимита, ЗаявкиПоОтделамФакт.СуммаЛимита) КАК СуммаЛимита,
ЕстьNULL(ЗаявкиПоОтделамФакт.СуммаФакт, 0) КАК СуммаФакт
ИЗ
ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ПО (ЗаявкиПоОтделам.НСБ = ЗаявкиПоОтделамФакт.НСБ
и ЗаявкиПоОтделам.Контрагент = ЗаявкиПоОтделамФакт.Контрагент)
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
И ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) кстати. в данном случае вообще объединять ничего не нужно. Все данные есть во второй таблице.
Просто использовать ее:
Просто использовать ее:
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
Показать
ну может почитать, что такое объединить?
Поскольку задача неизвестна, решить ее можно разными путями с разным результатом, но с нужным количеством строк.
Например так
Поскольку задача неизвестна, решить ее можно разными путями с разным результатом, но с нужным количеством строк.
Например так
Выбрать НСБ, Контрагент, Сумма(СуммаЛимита), Сумма(СуммаФакт) из (ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок) ВсеДанные
Группировать по ВсеДанные.НСБ, ВсеДанные.Контрагент
Показать
(6) Пробовал результат не тот...
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ КАК НСБ,
ЗаявкиПоОтделамФакт.Контрагент КАК Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт КАК СуммаФакт
ПОМЕСТИТЬ ВТ2
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ1.НСБ КАК НСБ,
ВТ1.Контрагент КАК Контрагент,
ВТ1.СуммаЛимита КАК СуммаЛимита,
ВТ2.СуммаФакт КАК СуммаФакт
ИЗ
ВТ1 КАК ВТ1,
ВТ2 КАК ВТ2
СГРУППИРОВАТЬ ПО
ВТ1.НСБ,
ВТ1.Контрагент,
ВТ1.СуммаЛимита,
ВТ2.СуммаФакт
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
ПОМЕСТИТЬ ВТ1
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ КАК НСБ,
ЗаявкиПоОтделамФакт.Контрагент КАК Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт КАК СуммаФакт
ПОМЕСТИТЬ ВТ2
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ1.НСБ КАК НСБ,
ВТ1.Контрагент КАК Контрагент,
ВТ1.СуммаЛимита КАК СуммаЛимита,
ВТ2.СуммаФакт КАК СуммаФакт
ИЗ
ВТ1 КАК ВТ1,
ВТ2 КАК ВТ2
СГРУППИРОВАТЬ ПО
ВТ1.НСБ,
ВТ1.Контрагент,
ВТ1.СуммаЛимита,
ВТ2.СуммаФакт
Прикрепленные файлы:
(8) ваш первоначальный запрос во внешнюю таблицу
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
Поместить ВТ
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
;
ВЫБРАТЬ
ВТ.НСБ,
ВТ.Контрагент,
Сумма(ВТ.СуммаЛимита),
Сумма(ВТ.СуммаФакт)
ИЗ
ВТ КАК ВТ
СГРУППИРОВАТЬ ПО
ВТ.НСБ,
ВТ.Контрагент
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
Поместить ВТ
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
;
ВЫБРАТЬ
ВТ.НСБ,
ВТ.Контрагент,
Сумма(ВТ.СуммаЛимита),
Сумма(ВТ.СуммаФакт)
ИЗ
ВТ КАК ВТ
СГРУППИРОВАТЬ ПО
ВТ.НСБ,
ВТ.Контрагент
(16)Задача
Есть 2 регистра накоплений. У них одинаковые поля.
Разница в том что из первого регистра мне нужно взять например 3 поля(не важно какие) а поле "СуммаФакт" у него пустое
Во втором регистре все те же поля , но поле "СуммаФакт" заполнено.
В первом и втором регистре, записи идентичны, кроме как раз заполненного поля "СуммаФакт"
Вот мне и нужно объединить эти результаты в один, но без группировки!!!
То есть при формирования у меня не дублировались и был заполнен результат объединения по "СуммаФакт"
Так будет более понятно?
Есть 2 регистра накоплений. У них одинаковые поля.
Разница в том что из первого регистра мне нужно взять например 3 поля(не важно какие) а поле "СуммаФакт" у него пустое
Во втором регистре все те же поля , но поле "СуммаФакт" заполнено.
В первом и втором регистре, записи идентичны, кроме как раз заполненного поля "СуммаФакт"
Вот мне и нужно объединить эти результаты в один, но без группировки!!!
То есть при формирования у меня не дублировались и был заполнен результат объединения по "СуммаФакт"
Так будет более понятно?
(17) в чем сакральный смысл не группировать строки по НСБ и Контрагенту. Вот этот момент объясните. Как понять что в таб1 4 строки и во 2 таб 4 строки, но в данных таблица встречаются идентичные строки. по какому признаку они сопоставляются если они идентичны)
(17) Вангую:
Или вообще вот так:
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт
Поместить ВТДанные
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
;
ВЫБРАТЬ
НСБ,
Контрагент,
СуммаЛимита
Сумма(СуммаФакт) КАК СуммаФакт
ИЗ
ВТДанные
СГРУППИРОВАТЬ ПО
НСБ,
Контрагент,
СуммаЛимита
ПоказатьИли вообще вот так:
ВЫБРАТЬ
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
ЗаявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
СГРУППИРОВАТЬ ПО
ЗаявкиПоОтделамФакт.НСБ,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита
Показать
Надо просто сначала сформулировать задачу. Внятно, понятно, доступно.
А потом уже решать ее.
Хотя если зарплата не зависит от результата, а зависит от времени, то более логичным будет решать задачу, не поставив ее. Это можно делать до пенсии.
А потом уже решать ее.
Хотя если зарплата не зависит от результата, а зависит от времени, то более логичным будет решать задачу, не поставив ее. Это можно делать до пенсии.
Почему не сделать вот так? Соответственно лишние колонки суммы убрать.
ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
ЗаявкиПоОтделам.СуммаФакт КАК СуммаФакт,
ЗаявкиПоОтделамФакт.ФактСуммаЛимита КАК ФактСуммаЛимита,
ЗаявкиПоОтделамФакт.ФактСуммаФакт КАК ФактСуммаФакт
ИЗ
ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ПО (ЗаявкиПоОтделам.НСБ = ЗаявкиПоОтделамФакт.НСБ
и ЗаявкиПоОтделам.Контрагент = ЗаявкиПоОтделамФакт.Контрагент)
Показать
(19) Не понял, кто минусов наставил? Может и опишите что не так? Насколько я понял, автору нужно объединить два регистра по измерениям НСБ и Контрагент, а сумму, какую то взять с одного регистра, другую сумму с другого. Конечно только добавить условия еще в такой запрос нужно.
(25)По-моему, все правильно. Я тоже не понял: зачем объединение, а не соединение.
ВЫБРАТЬ
ЕстьNULL(ЗаявкиПоОтделам.НСБ, ЗаявкиПоОтделамФакт.НСБ) КАК НСБ,
ЕстьNULL(ЗаявкиПоОтделам.Контрагент, ЗаявкиПоОтделамФакт.Контрагент) КАК Контрагент,
ЕстьNULL(ЗаявкиПоОтделам.СуммаЛимита, ЗаявкиПоОтделамФакт.СуммаЛимита) КАК СуммаЛимита,
ЕстьNULL(ЗаявкиПоОтделамФакт.СуммаФакт, 0) КАК СуммаФакт
ИЗ
ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ПО (ЗаявкиПоОтделам.НСБ = ЗаявкиПоОтделамФакт.НСБ
и ЗаявкиПоОтделам.Контрагент = ЗаявкиПоОтделамФакт.Контрагент)
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
Показать
(25) Вася, Вася! Автор четко написал какой результат ему нужен
Результат формируется в 8 строк, но в каждом регистре 4 строки и мне нужно что бы он и объединил в 4 строки....
Скажите мне "...." в чём я ошибся?
Таким образом, ему не нужно объединять, а нужно соединять по двум измерениям. Более точный запрос написали ниже, добавлю ещё, не хватает условий для второго регистра, а то будет сверять со всеми данными и запрос будет работать дольше.
Скажите мне "...." в чём я ошибся?
ВЫБРАТЬ
ЕстьNULL(ЗаявкиПоОтделам.НСБ, ЗаявкиПоОтделамФакт.НСБ) КАК НСБ,
ЕстьNULL(ЗаявкиПоОтделам.Контрагент, ЗаявкиПоОтделамФакт.Контрагент) КАК Контрагент,
ЕстьNULL(ЗаявкиПоОтделам.СуммаЛимита, ЗаявкиПоОтделамФакт.СуммаЛимита) КАК СуммаЛимита,
ЕстьNULL(ЗаявкиПоОтделамФакт.СуммаФакт, 0) КАК СуммаФакт
ИЗ
ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ПО (ЗаявкиПоОтделам.НСБ = ЗаявкиПоОтделамФакт.НСБ
и ЗаявкиПоОтделам.Контрагент = ЗаявкиПоОтделамФакт.Контрагент)
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок
И ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
Показатьыбрать НСБ, Контрагент, Сумма(СуммаЛимита), Сумма(СуммаФакт) из (ВЫБРАТЬ
ЗаявкиПоОтделам.НСБ КАК НСБ,
ЗаявкиПоОтделам.Контрагент КАК Контрагент,
ЗаявкиПоОтделам.СуммаЛимита КАК СуммаЛимита,
0 КАК СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделам КАК ЗаявкиПоОтделам
ГДЕ
ЗаявкиПоОтделам.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделам.Участок = &Участок
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ЗаявкиПоОтделамФакт,,
ЗаявкиПоОтделамФакт.Контрагент,
ЗаявкиПоОтделамФакт.СуммаЛимита,
аявкиПоОтделамФакт.СуммаФакт
ИЗ
РегистрНакопления.ЗаявкиПоОтделамФакт КАК ЗаявкиПоОтделамФакт
ГДЕ
ЗаявкиПоОтделамФакт.ПериодЛимита = &ПериодЛимита
И ЗаявкиПоОтделамФакт.Участок = &Участок) ВсеДанные
Группировать по ВсеДанные.НСБ, ВсеДанные.Контрагент
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот