Здравствуйте.
Есть следующий запрос:
Запрос=Новый Запрос("ВЫБРАТЬ
| Таблица_Номенклатура.Ссылка,
//| Таблица_ЦеныСрезПоследних.Цена,
| Таблица_Остатки.КоличествоОстаток
|ИЗ
| Справочник.Номенклатура КАК Таблица_Номенклатура
//| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК Таблица_ЦеныСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК Таблица_Остатки
|ПО
//| Таблица_Номенклатура.Ссылка = Таблица_ЦеныСрезПоследних.Номенклатура
| Таблица_Номенклатура.Ссылка = Таблица_Остатки.Номенклатура
|ГДЕ
| Таблица_Номенклатура.ЭтоГруппа = Ложь И
| Таблица_Номенклатура.ПометкаУдаления = Ложь И
| Таблица_Номенклатура.ВидНоменклатуры НЕ В (&ВидыНоменклатуры) И
| Таблица_Номенклатура.Ссылка В ИЕРАРХИИ(&Категория)");
Вот, пожалуйста - ничего не ругается:
Запрос = Новый Запрос("ВЫБРАТЬ
| Таблица_Номенклатура.Ссылка,
| Таблица_Остатки.КоличествоОстаток,
| Таблица_ЦеныСрезПоследних.Цена
|ИЗ
| Справочник.Номенклатура КАК Таблица_Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Таблица_Остатки
| ПО Таблица_Номенклатура.Ссылка = Таблица_Остатки.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Таблица_ЦеныСрезПоследних
| ПО Таблица_Номенклатура.Ссылка = Таблица_ЦеныСрезПоследних.Номенклатура
|ГДЕ
| Таблица_Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Таблица_Номенклатура.ПометкаУдаления = ЛОЖЬ
| И НЕ Таблица_Номенклатура.ВидНоменклатуры В (&ВидыНоменклатуры)
| И Таблица_Номенклатура.Ссылка В ИЕРАРХИИ(&Категория)");
Запрос = Новый Запрос("ВЫБРАТЬ
| Таблица_Номенклатура.Ссылка,
| Таблица_Остатки.КоличествоОстаток,
| Таблица_ЦеныСрезПоследних.Цена
|ИЗ
| Справочник.Номенклатура КАК Таблица_Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК Таблица_Остатки
| ПО Таблица_Номенклатура.Ссылка = Таблица_Остатки.Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Таблица_ЦеныСрезПоследних
| ПО Таблица_Номенклатура.Ссылка = Таблица_ЦеныСрезПоследних.Номенклатура
|ГДЕ
| Таблица_Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Таблица_Номенклатура.ПометкаУдаления = ЛОЖЬ
| И НЕ Таблица_Номенклатура.ВидНоменклатуры В (&ВидыНоменклатуры)
| И Таблица_Номенклатура.Ссылка В ИЕРАРХИИ(&Категория)");
berkut_0 @ Вчера, 18:21
,
Вы делаете "левое соединение" цен с остатками, а не справочника номенклатуры с остатками. Вангую, что в вашем регистре "Цены" наверняка есть такие поля как "Тип цен" или "Валюта", соответственно скорее всего есть несколько цен на 1 товар либо с разной валютой либо типом цен. А связь с остатками идет чисто по номенклатуре. Отсюда соответственно и дубли строк и неправильный остаток. Также осмелюсь прованговать, что запрос который привел в качестве примера Salton тоже выдаст вам дубли, только уже по цене, если там есть ещё измерения кроме номенклатуры.
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Товар
|ПОМЕСТИТЬ втТовары
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&Категория)
| И Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Номенклатура.ПометкаУдаления = ЛОЖЬ
| И НЕ Номенклатура.ВидНоменклатуры В (&ВидыНоменклатуры)
|
|ИНДЕКСИРОВАТЬ ПО
| Товар
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втТовары.Товар,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
|ИЗ
| втТовары КАК втТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| втТовары.Товар
| ИЗ
| втТовары)
| И Склад = &СкладОстатков) КАК ТоварыНаСкладахОстатки
| ПО втТовары.Товар = ТоварыНаСкладахОстатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| Номенклатура В
| (ВЫБРАТЬ
| втТовары.Товар
| ИЗ
| втТовары)
| И ТипЦен = &ТипЦенНоменклатуры) КАК ЦеныНоменклатурыСрезПоследних
| ПО втТовары.Товар = ЦеныНоменклатурыСрезПоследних.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| втТовары.Товар.Наименование"
Я тут нарвался на консоль запросов, и тут что то даже получается.
Сейчас у меня куча осложнений, и в целом - я почти справляюсь. Но есть одна проблема ...
Начну с того, что я уже имею - мой текущий запрос:
ВЫБРАТЬ
Таблица_КурсыВалют.Курс,
Таблица_Номенклатура.Артикул,
Таблица_Цены.Цена,
Таблица_Остатки.КоличествоОстаток,
Таблица_Номенклатура.Наименование
ИЗ
Справочник.Номенклатура КАК Таблица_Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК Таблица_Цены
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК Таблица_КурсыВалют
ПО Таблица_КурсыВалют.Валюта.Ссылка = Таблица_Цены.ТипЦен.ВалютаЦены.Ссылка
ПО Таблица_Номенклатура.Ссылка = Таблица_Цены.Номенклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК Таблица_Остатки
ПО Таблица_Номенклатура.Ссылка = Таблица_Остатки.Номенклатура.Ссылка
ГДЕ
Таблица_Номенклатура.ЭтоГруппа = ЛОЖЬ
И Таблица_Номенклатура.Родитель В ИЕРАРХИИ(&Категории)
И Таблица_Цены.ТипЦен В(&ТипыЦен)
И НЕ Таблица_Номенклатура.ВидНоменклатуры В (&ВидыНоменклатуры)
[Зачеркнуто]Поясните
И Таблица_Цены.ТипЦен В(&ТипыЦен)
И (Таблица_Цены.ТипЦен В(&ТипыЦен) или Таблица_Цены.ТипЦен ЕСТЬ NULL)
ВЫБРАТЬ Таблица_КурсыВалют.Курс,
Таблица_Номенклатура.Артикул,
Таблица_Цены.Цена,
Таблица_Остатки.КоличествоОстаток,
Таблица_Номенклатура.Наименование
ИЗ Справочник.Номенклатура КАК Таблица_Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(,ТипЦен В(&ТипыЦен)) КАК Таблица_Цены
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК Таблица_КурсыВалют
ПО Таблица_КурсыВалют.Валюта.Ссылка = Таблица_Цены.ТипЦен.ВалютаЦены.Ссылка
ПО Таблица_Номенклатура.Ссылка = Таблица_Цены.Номенклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК Таблица_Остатки
ПО Таблица_Номенклатура.Ссылка = Таблица_Остатки.Номенклатура.Ссылка
ГДЕ Таблица_Номенклатура.ЭтоГруппа = ЛОЖЬ
И Таблица_Номенклатура.Родитель В ИЕРАРХИИ(&Категории)
И НЕ Таблица_Номенклатура.ВидНоменклатуры В (&ВидыНоменклатуры)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua