Добрый день
8.2 ОФ
Есть запрос:
Всё ок. Происходит сопоставление и выводятся позиции.
НО! может быть так, что по в первом подзапросе НоменклатураКод может быть равна коду по разным позиция из РС "Номенклатура контрагентов".
То есть на выходе будут дубли с одинаковыми данными,но с разными наименованиями номенклатуры. Мне же необходимо в таком случае очистить строку где дубли и оставить только одну. Реально ли это реализовать в самом запросе ?
8.2 ОФ
Есть запрос:
ВЫБРАТЬ
ВТ_ИЗГЛ.НоменклатураПредставление,
ВТ_ИЗГЛ.НоменклатураКод,
ВТ_ИЗГЛ.СкладПредставление,
ВТ_ИЗГЛ.КоличествоОстаток,
ВТ_ИЗГЛ.Статус,
ВТ_ИЗГЛ.КоличествоКПередаче,
ВТ_ИЗГЛ.КоличествоВРезерве,
ВТ_ИЗГЛ.КоличествоКПолучению,
ВТ_ИЗГЛ.СвободныйОстаток,
ВТ_ИЗГЛ.КоличествоОстатокПоСтатусу
ПОМЕСТИТЬ ВТ_ГЛ
ИЗ
ВТ_ИЗГЛ КАК ВТ_ИЗГЛ
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
НоменклатураКонтрагентов.Номенклатура КАК НоменклатураГЛ,
МВТ_ГЛ.СкладПредставление КАК СкладГЛ,
МВТ_ГЛ.КоличествоОстаток КАК КоличествоОстатокГл,
МВТ_ГЛ.НоменклатураКод,
МВТ_ГЛ.НоменклатураПредставление КАК НоменклатураПредставлениеГЛ,
МВТ_ГЛ.Статус,
МВТ_ГЛ.КоличествоКПередаче,
МВТ_ГЛ.КоличествоВРезерве,
МВТ_ГЛ.КоличествоКПолучению,
МВТ_ГЛ.СвободныйОстаток,
МВТ_ГЛ.КоличествоОстатокПоСтатусу
ПОМЕСТИТЬ Вт_ДанныеИЗГЛ
ИЗ
ВТ_ГЛ КАК МВТ_ГЛ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
ПО МВТ_ГЛ.НоменклатураКод = НоменклатураКонтрагентов.КодНоменклатурыКонтрагента
ГДЕ
НЕ НоменклатураКонтрагентов.КодНоменклатурыКонтрагента = ""
;
ПоказатьВсё ок. Происходит сопоставление и выводятся позиции.
НО! может быть так, что по в первом подзапросе НоменклатураКод может быть равна коду по разным позиция из РС "Номенклатура контрагентов".
То есть на выходе будут дубли с одинаковыми данными,но с разными наименованиями номенклатуры. Мне же необходимо в таком случае очистить строку где дубли и оставить только одну. Реально ли это реализовать в самом запросе ?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) А зачем вам НоменклатураКонтрагентов, ради этого: НоменклатураКонтрагентов.Номенклатура КАК НоменклатураГЛ,?
Тогда просто выберите оттуда ссылки на номенклатуру различные и присоедините таблицу по коду. Дублей не будет
Кстати, так как у вас левое соединение, будет Null для всей номенклатуры, которая не найдена в регистре вот тут:
НоменклатураКонтрагентов.Номенклатура КАК НоменклатураГЛ,
Тогда просто выберите оттуда ссылки на номенклатуру различные и присоедините таблицу по коду. Дублей не будет
Кстати, так как у вас левое соединение, будет Null для всей номенклатуры, которая не найдена в регистре вот тут:
НоменклатураКонтрагентов.Номенклатура КАК НоменклатураГЛ,
OFF. Как же неудобно читать запросы оформленные "через строку"...
А в чем суть первого запроса? Просто изменение имени временной таблицы?
Ну если у вас в РС несколько записей с одним и тем же кодом - то чего вы хотели от левого соединения? Именно так и будет.
Подозреваю, что бороться надо не с запросом, а с тем, что в РС неправильно организованы данные.
А в чем суть первого запроса? Просто изменение имени временной таблицы?
Ну если у вас в РС несколько записей с одним и тем же кодом - то чего вы хотели от левого соединения? Именно так и будет.
Подозреваю, что бороться надо не с запросом, а с тем, что в РС неправильно организованы данные.
(12) Тогда вырабатывайте правила - какую именно запись показывать. И именно эти правила используйте в запросе при отборе. Либо действительно, отдельно выберите необходимые записи из регистра в отдельную ВТ, сгруппировав по Коду номенклатуры. И уже с ней совокупляйтесь хоть левым, хоть внутренним способом.
(4) Если вы хотите выбрать только те позиции, которые есть у вас в регистре, то надо так:
.....
;
Выбрать Различные
НоменклатураКонтрагентов.Номенклатура.Код Как КодНоменклатурыКонтрагента,
НоменклатураКонтрагентов.Номенклатура Как Номенклатура
Поместить НоменклатураКонтрагентов
ИЗ
РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
;
ВЫБРАТЬ
НоменклатураКонтрагентов.Номенклатура КАК НоменклатураГЛ,
.....
ПОМЕСТИТЬ Вт_ДанныеИЗГЛ
ИЗ
ВТ_ГЛ КАК МВТ_ГЛ
Внутреннее СОЕДИНЕНИЕ НоменклатураКонтрагентов
ПО МВТ_ГЛ.НоменклатураКод = НоменклатураКонтрагентов.КодНоменклатурыКонтрагента
Показать
(15) Как раз там позиция одна в ВТ_ГЛ. К примеру "КраснаяБутылка0.1" у неё код"001".
Но в РС есть две позиции "КраснаяБутылка0.1" и "КраснаяБутылка0.3" и у них у обоих стоит код "001".
В итоге из первой ВТ_ГЛ происходит задвоение. То есть "КраснаяБутылка0.1" и "КраснаяБутылка0.3" будут на выходе со одинаковыми данными.
В принципе мне всего лишь надо чтобы данные у "КраснаяБутылка0.3" стали пустыми и только.
Так же это надо продумать для всех следующих таких же случаев.
Но в РС есть две позиции "КраснаяБутылка0.1" и "КраснаяБутылка0.3" и у них у обоих стоит код "001".
В итоге из первой ВТ_ГЛ происходит задвоение. То есть "КраснаяБутылка0.1" и "КраснаяБутылка0.3" будут на выходе со одинаковыми данными.
В принципе мне всего лишь надо чтобы данные у "КраснаяБутылка0.3" стали пустыми и только.
Так же это надо продумать для всех следующих таких же случаев.
(17)Стоп.. Так у вас в справочнике Номенклатура задвоенные коды? Тогда в чем смысл соединения по коду, раз он не уникальный? Логично тогда добавить наименование в соединение для уточнения.
.....
;
Выбрать Различные
НоменклатураКонтрагентов.Номенклатура.Код Как КодНоменклатурыКонтрагента,
НоменклатураКонтрагентов.Номенклатура.Наименование Как Наименование,
НоменклатураКонтрагентов.Номенклатура Как Номенклатура
Поместить НоменклатураКонтрагентов
ИЗ
РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
;
ВЫБРАТЬ
НоменклатураКонтрагентов.Номенклатура КАК НоменклатураГЛ,
.....
ПОМЕСТИТЬ Вт_ДанныеИЗГЛ
ИЗ
ВТ_ГЛ КАК МВТ_ГЛ
Внутреннее СОЕДИНЕНИЕ НоменклатураКонтрагентов
ПО МВТ_ГЛ.НоменклатураКод = НоменклатураКонтрагентов.КодНоменклатурыКонтрагента
И МВТ_ГЛ.НоменклатураПредставление = НоменклатураКонтрагентов.Наименование
Показать
А все... Сначала не понял, а потом как понял... Это ж измерение регистра получается. Так по идее сработает :
ПОМЕСТИТЬ Вт_ДанныеИЗГЛ
ИЗ
ВТ_ГЛ КАК МВТ_ГЛ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
ПО МВТ_ГЛ.НоменклатураКод = НоменклатураКонтрагентов.КодНоменклатурыКонтрагента
И МВТ_ГЛ.ПредставлениеНоменклатуры = НоменклатураКонтрагентов.Номенклатура.Наименование
ГДЕ
НЕ НоменклатураКонтрагентов.КодНоменклатурыКонтрагента = ""
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот