ВЫБРАТЬ РАЗЛИЧНЫЕ
Ном.*,
СпрКассы.Ссылка КАК Касса
ИЗ
(
ВЫБРАТЬ
РегШтрихКоды.Владелец КАК Номенклатура,
РегШтрихКоды.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
РегШтрихКоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
РегШтрихКоды.СерияНоменклатуры КАК СерияНоменклатуры
ИЗ
РегистрСведений.Штрихкоды КАК РегШтрихКоды
ГДЕ
РегШтрихКоды.Владелец Ссылка Справочник.Номенклатура
{ГДЕ РегШтрихКоды.Владелец.* КАК Номенклатура}
ОБЪЕДИНИТЬ
ВЫБРАТЬ
РегВесовыеКоды.Номенклатура КАК Номенклатура,
РегВесовыеКоды.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
РегВесовыеКоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
РегВесовыеКоды.СерияНоменклатуры КАК СерияНоменклатуры
ИЗ
РегистрСведений.КодыВесовогоТовара КАК РегВесовыеКоды
{ГДЕ РегВесовыеКоды.Номенклатура.* КАК Номенклатура}
ОБЪЕДИНИТЬ
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура,
СпрНоменклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
СпрНоменклатура.СерияНоменклатуры КАК СерияНоменклатуры
ИЗ
(ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Ссылка,
СпрНоменклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры,
&ПустаяСерия КАК СерияНоменклатуры
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура}
) КАК СпрНоменклатура
) КАК Ном
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Справочник.КассыККМ КАК СпрКассы
ПО
СпрКассы.Ссылка В (&КассыККМ)
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ТоварыНаККМ КАК ТоварыНаККМ
ПО
ТоварыНаККМ.Номенклатура = Ном.Номенклатура
И ТоварыНаККМ.ХарактеристикаНоменклатуры = Ном.ХарактеристикаНоменклатуры
И ТоварыНаККМ.СерияНоменклатуры = Ном.СерияНоменклатуры
И ТоварыНаККМ.ЕдиницаИзмерения = Ном.ЕдиницаИзмерения
И ТоварыНаККМ.КассаККМ = СпрКассы.Ссылка
ГДЕ
ТоварыНаККМ.Номенклатура ЕСТЬ NULL
И Не Ном.Номенклатура.Набор
ПоказатьЗапрос.Выполнить.Выгрузить();
Создаёт две позиции одинаковой номенклатуры. как поправить ?
Допустим есть 5 000 номенклатурных позиций.
Запрос выдаёт 5 001. В карточке номенклатуры может быть несколько едениц измерений. но я так предпологаю это не из за этого.
Пробовал добавлять код номенклатуры как уникальное значение и объединять - тут вобще получилась ерунда и запрос выдал 4 870 позиций.
Решил больше не экспериментировать и идти на форум )
Грешу на ЛЕВОЕ СОЕДИНЕНИЕ....
хотя могу быть и не прав.
По теме из базы знаний
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- Зачем и как читать чужой код? Какой результат ожидаем получить? Основные подходы
- Быстрый фронт в базе размером 6.8 терабайт – наши стандарты при разработке и рефакторинге запросов
- Начните уже использовать хранилище запросов
- Счастливый заказчик, или Как управлять ИТ-проектом, не привлекая внимание санитаров?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я бы предложил начать с отладки за запроса в консуле и переписать запрос на пакет, без вложенных запросах (хотя бы только для отладки). В отладке будет видно какой подзапрос возвращает лишние "строки". Так же посмотреть левое соединение - по всем измерениям регистра ТоварыНаККМ идет соединение? Если нет искать причину в этом.
(5) Смотри дублированные строки, какие-то поля должны различаться, вот в них и причина.
Если нет, то, значит, ты их не показываешь, в этом случае добавляй список полей.
Добавь в условиях соединения:
Если дубли исчезнут, тогда дубли добавляет РегистрСведений.ТоварыНаККМ. смотри там
Если нет, то, значит, ты их не показываешь, в этом случае добавляй список полей.
Добавь в условиях соединения:
...
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ТоварыНаККМ КАК ТоварыНаККМ
ПО
ЛОЖЬ И
ТоварыНаККМ.Номенклатура = Ном.Номенклатура
...
Если дубли исчезнут, тогда дубли добавляет РегистрСведений.ТоварыНаККМ. смотри там
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот