Имя: Пароль:
1C
 
СКД. Компоновка запроса. Лишний отбор.
0 АгентБезопасной Нацио
 
16.06.26
11:22
Есть СКД. Источник - простейший запрос (смысл- получить цены по списку видов цен, + по двум предопределенным видам)

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ ВТ_
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦен {(&ДатаЦен)},{(Номенклатура),(ВидЦены)} ) КАК ЦеныНоменклатурыСрезПоследних

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &ДатаЦен {(&ДатаЦен)},
            ВидЦены = &Цена1
                ИЛИ ВидЦены = &Цена2 {(Номенклатура)}) КАК ЦеныНоменклатурыСрезПоследних


Но СКД преобразует его в
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ПОМЕСТИТЬ ВТ_
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&П, ((Номенклатура) В ИЕРАРХИИ(&П2)) И (ВидЦены) В(&П3)) КАК ЦеныНоменклатурыСрезПоследних

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.ВидЦены,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            &П,
            ((ВидЦены = &Цена1
                ИЛИ ВидЦены = &Цена2) И (Номенклатура) В ИЕРАРХИИ(&П2)) И (ВидЦены) В(&П3)) КАК ЦеныНоменклатурыСрезПоследних

Вопросы: почему СКД во втором запросе добавляет условие в ВТ "И (ВидЦены) В(&П3)", если я об этом не прошу, и явно указал только "{(Номенклатура)}"? Как штатно сделать правильно? (ну не через редактирование же скомпонованного запроса делать...)
1 unenu
 
16.06.26
11:40
начните с ВидЦены = &Цена1
                ИЛИ ВидЦены = &Цена2


ВидЦены В (&Цена1, &Цена2)
2 unenu
 
16.06.26
11:50
может 2-й запрос объединения выполнить в отдельном (первом) пакете, с созданием ВТ_ПоВидуЦен1и2. Причем, поле задать с другим синонимом
ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены1и2

зачем результирующий пакет делаете как у вас, только 2-й запрос объединения из ВТ_ПоВидуЦен1и2. Тогда СКД не увидит идентичного поля и не будет умничать.
3 toypaul
 
гуру
16.06.26
11:49
СКД умная. Иногда слишком. Чтобы этот выпендрежь отключить есть галочка отключения Автозаполнения
4 АгентБезопасной Нацио
 
16.06.26
11:50
(1) Начинал как раз с этого. монопенисуально. Местами запросы тоже менял.
5 toypaul
 
гуру
16.06.26
11:52
Чтобы в нужно место отбор применить напиши вместо

(ВидЦены)

вот так

(ВидЦены КАК НужныйВидЦены) вид цены из отбора отключай (придется Автозаполнение убрать). ну либо можно не отключать, но тогда найдутся умные юзеры, которые смогут добавить отбор куда не надо
6 toypaul
 
гуру
16.06.26
11:52
+ (5) и делай отбор по НужныйВидЦены
7 АгентБезопасной Нацио
 
16.06.26
12:01
(3) угу. Автозаполнение отключил, но добавляет только папки полей. (у меня потом временная таблица дополнительно обрабатывается)
(2) Нечто подобное делал. все равно подставляет
------
сделал через изменение скомпонованного запроса, "но осадочек остался"
8 АгентБезопасной Нацио
 
16.06.26
12:00
(5)(6) Спасибо, попробую
9 unenu
 
16.06.26
12:17
ВЫБРАТЬ
    Т.Номенклатура КАК Номенклатура,
    Т.ВидЦены КАК ВидЦены1и2,
    Т.Цена КАК Цена
ПОМЕСТИТЬ ВТ_ВидЦены1и2
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦен {(&ДатаЦен)}, ВидЦены В (&Цена1, &Цена2) {(Номенклатура)}) КАК Т
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Т.Номенклатура КАК Номенклатура,
    Т.ВидЦены КАК ВидЦены,
    Т.Цена КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаЦен {(&ДатаЦен)}, {(Номенклатура), (ВидЦены)}) КАК Т

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Т.Номенклатура,
    Т.ВидЦены1и2,
    Т.Цена
ИЗ
    ВТ_ВидЦены1и2 КАК Т
10 toypaul
 
гуру
16.06.26
12:40
(7) правильно. если отключил, то нужно через вкладку "Компоновка данных" все заполнять самому. Поля выбора, отборы
11 АгентБезопасной Нацио
 
16.06.26
12:56
(10) Понял, получилось.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.