Имя: Пароль:
1C
1С v8
Запрос по разным видам номенклатуры
0 Cyrix
 
12.10.20
19:05
Всех приветствую!
Помогите выбрать номенклатуру с двумя видами цен. Пишу запрос, но получаю ничеВо. И ничиВа получаю много.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ЦеныНоменклатуры.Номенклатура.Код КАК Код,
               |    ЦеныНоменклатуры.Номенклатура.Наименование КАК Наименование,
               |    ЦеныНоменклатуры.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
               |    ЦеныНоменклатуры.Номенклатура.Родитель КАК НоменклатураРодитель,
               |    ЦеныНоменклатуры.Цена КАК Цена,
               |    ЦеныНоменклатуры.ВидЦен КАК ВидЦен
               |ИЗ
               |    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
               |ГДЕ
               |    ЦеныНоменклатуры.ВидЦен.Код = &УчетнаяЦенаШГ
               | И    ЦеныНоменклатуры.ВидЦен.Код = &Розничная";


    УчетнаяЦенаШГ = Справочники.ВидыЦен.НайтиПоКоду("УФ-000003").Код;
    Розничная = Справочники.ВидыЦен.НайтиПоКоду("UN-000001").Код;
    Запрос.Параметры.Вставить("УчетнаяЦенаШГ",УчетнаяЦенаШГ);
    Запрос.Параметры.Вставить("Розничная",Розничная);
    РезультатЗапроса = Запрос.Выполнить();

https://ibb.co/xhjc39C
1 Prog111
 
12.10.20
19:12
(0) Ну смотри - ты выбираешь записи регистра сведений, и пытаешься, чтобы у одной записи выполнялось сразу 2 условия - чтобы это был вид цены "УчетнаяЦенаШГ" и "Розничная". Но так не бывает у одной записи.
2 Cyrix
 
12.10.20
19:12
если только ЦеныНоменклатуры.ВидЦен.Код = &УчетнаяЦенаШГ
или только ЦеныНоменклатуры.ВидЦен.Код = &Розничная"
то всё работает, но мне надо обе колонки
3 Cyrix
 
12.10.20
19:13
(1) Как правильно сделать? Вложенный запрос?
4 RomanYS
 
12.10.20
19:14
(3) соединение
5 Cyrix
 
12.10.20
19:15
(4) чего с чем?
6 Cyrix
 
12.10.20
19:20
регистр вроде бы один
7 Василий Алибабаевич
 
12.10.20
19:21
(6) Двух запросов к одному регистру. Один запрос выберет цену "УчетнаяЦенаШГ". Другой - "Розничная".
8 Cyrix
 
12.10.20
19:24
(7) проблема в том, что я не знаю как их соединить
9 Cyrix
 
12.10.20
21:13
Запрос.Текст = "ВЫБРАТЬ
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ВидЦен,
               |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
               |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
               |ИЗ
               |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ) КАК ЦеныНоменклатурыСрезПоследних
           |ГДЕ
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен.Код = &УчетнаяЦенаШГ";
               | ВЫБРАТЬ
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ВидЦен,
               |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
               |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
               |ИЗ
               |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ) КАК ЦеныНоменклатурыСрезПоследних
           |ГДЕ
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен.Код = &Розничная";


Как их соединить?
10 RomanYS
 
12.10.20
21:16
(9) хотя бы посмотри, что такое соединение

...
по
ЦеныНоменклатурыСрезПоследних1.Номенклатура = ЦеныНоменклатурыСрезПоследних2.Номенклатура
И ЦеныНоменклатурыСрезПоследних1.ВидЦен = &УчетнаяЦенаШГ
И ЦеныНоменклатурыСрезПоследних2.ВидЦен = &Розничная
11 Cyrix
 
12.10.20
21:26
ЦеныНоменклатурыСрезПоследних1 и ЦеныНоменклатурыСрезПоследних2 - это что за таблицы?
12 RomanYS
 
12.10.20
21:41
(11) Что такое соединение ты уже знаешь?
13 Cyrix
 
12.10.20
21:50
О дааа!
Вот что такое соединение:

Запрос.Текст = "ВЫБРАТЬ
               |    ЦеныНоменклатурыСрезПоследних.Период КАК Период,
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ВидЦен,
               |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
               |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
               |    ЦеныНоменклатурыСрезПоследних1.Период КАК Период1,
               |    ЦеныНоменклатурыСрезПоследних1.ВидЦен КАК ВидЦен1,
               |    ЦеныНоменклатурыСрезПоследних1.Номенклатура КАК Номенклатура1,
               |    ЦеныНоменклатурыСрезПоследних1.Цена КАК Цена1
               |ИЗ
               |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ) КАК ЦеныНоменклатурыСрезПоследних
               |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК
                 ЦеныНоменклатурыСрезПоследних1
               |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыСрезПоследних1.Номенклатура
               |ГДЕ
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен.Код = &УчетнаяЦенаШГ
               |    И ЦеныНоменклатурыСрезПоследних1.ВидЦен.Код = &Розничная";
14 Cyrix
 
12.10.20
21:51
примерно
15 RomanYS
 
12.10.20
21:59
(13) Убери ".Код" - у тебя в параметрах уже ссылки судя по (0).

Убери "где", сделай как в (10). Хотя в данном случае результат одинаковый будет (10) более корректно.
Ещё правильнее эти условия в параметры виртуальных таблиц засунуть:
...
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ВидЦен.Код = &УчетнаяЦенаШГ) КАК ЦеныНоменклатурыСрезПоследних
...
16 Cyrix
 
12.10.20
22:07
(15) Как перечислить условия, если я захочу пихнуть их в параметры виртуальных таблиц? Ну первое условие ты привёл в пример РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ВидЦен.Код = &УчетнаяЦенаШГ) КАК ЦеныНоменклатурыСрезПоследних

а как добавить РегистрСведений.ЦеныНоменклатуры.СрезПоследних1(&НаДату, ВидЦен.Код = &Розничная) КАК ЦеныНоменклатурыСрезПоследних1

?

через И ?
17 RomanYS
 
12.10.20
22:16
(16) Похоже ты не понял, что такое соединение :(((
У одной таблицы одно условие в параметрах, у второй - второе. И убери ".Код"
18 Cyrix
 
12.10.20
22:25
я однозначно чего-то недопонимаю :(

Запрос.Текст = "ВЫБРАТЬ
               |    ЦеныНоменклатурыСрезПоследних.Период КАК Период,
               |    ЦеныНоменклатурыСрезПоследних.ВидЦен КАК ВидЦен,
               |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
               |    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
               |    ЦеныНоменклатурыСрезПоследних1.ВидЦен КАК ВидЦен1,
               |    ЦеныНоменклатурыСрезПоследних1.Номенклатура КАК Номенклатура1,
               |    ЦеныНоменклатурыСрезПоследних1.Цена КАК Цена1
               |ИЗ
               |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ВидЦен = &УчетнаяЦенаШГ) КАК ЦеныНоменклатурыСрезПоследних
               |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних1
               |        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыСрезПоследних1.Номенклатура
               |ГДЕ
               |    ЦеныНоменклатурыСрезПоследних1.ВидЦен = &Розничная";

Куда ВидЦен = &Розничная засунуть??
19 RomanYS
 
12.10.20
22:29
(18) ля, ты в клюшках что ли застрял?
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ВидЦен = &Розничная) КАК ЦеныНоменклатурыСрезПоследних1
20 Cyrix
 
12.10.20
22:36
(19) ой... спасибо!! :о)