|
Параметры в СКД | ☑ | ||
---|---|---|---|---|
0
qeos
02.08.11
✎
14:45
|
достался мне один запрос в СКД по наследству...
в нем есть параметры &НачалоПериода И &КонецПериода... не буду весь запрос писать но коротко выглядит так: ИЗ РегистрНакопления.СебестоимостьЦБ.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, , ) КАК Остатки ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ... ИЗ РегистрНакопления.СебестоимостьЦБ КАК Стоимости {ГДЕ (Стоимости.Период МЕЖДУ &НачалоПериода И &КонецПериода)} СГРУППИРОВАТЬ ПО Стоимости.ЦеннаяБумага, Стоимости.ЦеннаяБумага.ТипЦБ, Стоимости.ДоговорКлиента) КАК Стоимости ПО Остатки.ДоговорКлиента = Стоимости.ДоговорКлиента И Остатки.ЦеннаяБумага = Стоимости.ЦеннаяБумага ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиЦБ.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Продажа)) КАК Продажи ПО (ЕСТЬNULL(Остатки.ДоговорКлиента, Стоимости.ДоговорКлиента) = Продажи.ДоговорКлиента) И (ЕСТЬNULL(Остатки.ЦеннаяБумага, Стоимости.ЦеннаяБумага) = Продажи.ЦеннаяБумага) так вот там где указаны даты как {(&НачалоПериода)} выборка идет по этим датам, а во вложеном запросе условие {ГДЕ (Стоимости.Период МЕЖДУ &НачалоПериода И &КонецПериода)} не работает.. если убрать все фигурные скобки, то запрос выполняется верно.. а вот это условие в СКД как бы не работает... сильно не пинайте, я не профи в СКД.. как заставить СКД "использовать" это условие во вложенном запросе? |
|||
1
Defender aka LINN
02.08.11
✎
14:46
|
{ГДЕ
Стоимости.Период >= &НачалоПериода, Стоимости.Период <= &КонецПериода} |
|||
2
qeos
02.08.11
✎
14:55
|
(1) неа, все равно не выбирает данные..
|
|||
3
Fragster
гуру
02.08.11
✎
15:03
|
{ГДЕ
Стоимости.Период} А уже в настройках выбрать "между Ы и Ц" |
|||
4
Defender aka LINN
02.08.11
✎
15:05
|
(2) У меня все работает.
|
|||
5
Defender aka LINN
02.08.11
✎
15:06
|
(3) Неа.
1. Неудобно 2. У отчета есть период, надо юзать его. |
|||
6
Fragster
гуру
02.08.11
✎
15:11
|
(5) по куску запроса судить сложно, но в (1) - точно неправильно ;)
|
|||
7
Fragster
гуру
02.08.11
✎
15:14
|
хотяяяяяя
|
|||
8
Fragster
гуру
02.08.11
✎
15:14
|
надо же
|
|||
9
qeos
02.08.11
✎
15:14
|
(5) могу весь кусок выложить..
ВЫБРАТЬ ВЫБОР КОГДА Остатки.ДоговорКлиента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыДеятельностиЦБ.Д) КОГДА Стоимости.ДоговорКлиента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) ТОГДА ЗНАЧЕНИЕ(Перечисление.ВидыДеятельностиЦБ.Д) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВидыДеятельностиЦБ.Б) КОНЕЦ КАК ТипДеятельности, ЕСТЬNULL(Остатки.ДоговорКлиента, Стоимости.ДоговорКлиента) КАК ДоговорКлиента, ЕСТЬNULL(Остатки.ЦеннаяБумага.ТипЦБ, Стоимости.ТипЦБ) КАК ТипЦБ, ЕСТЬNULL(Остатки.ЦеннаяБумага, Стоимости.ЦеннаяБумага) КАК ЦеннаяБумага, НоминалЦБ.Сумма КАК Номинал, КатегорияЦБ.Категория КАК Категория, Остатки.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, Остатки.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, Остатки.СуммаПокупкиНачальныйОстаток КАК СуммаПокупкиНачальныйОстаток, Остатки.СуммаПокупкиКонечныйОстаток КАК СуммаПокупкиКонечныйОстаток, Остатки.СуммаБалансоваяНачальныйОстаток КАК СуммаБалансоваяНачальныйОстаток, Остатки.СуммаБалансоваяКонечныйОстаток КАК СуммаБалансоваяКонечныйОстаток, Остатки.СуммаОценкиНачальныйОстаток КАК СуммаОценкиНачальныйОстаток, Остатки.СуммаОценкиКонечныйОстаток КАК СуммаОценкиКонечныйОстаток, Остатки.НкдБалансоваяНачальныйОстаток КАК НкдБалансоваяНачальныйОстаток, Остатки.НкдБалансоваяКонечныйОстаток КАК НкдБалансоваяКонечныйОстаток, Остатки.НкдОценкиНачальныйОстаток КАК НкдОценкиНачальныйОстаток, Остатки.НкдОценкиКонечныйОстаток КАК НкдОценкиКонечныйОстаток, Остатки.РасходыНачальныйОстаток КАК РасходыНачальныйОстаток, Остатки.РасходыКонечныйОстаток КАК РасходыКонечныйОстаток, Стоимости.КоличествоПокупки КАК КоличествоПокупки, Стоимости.СуммаПокупки КАК СуммаПокупки, Стоимости.НКДПокупки КАК НКДПокупки, Стоимости.РасходыПокупки КАК РасходыПокупки, Стоимости.УвеличениеОценки КАК УвеличениеОценки, Стоимости.УменьшениеОценки КАК УменьшениеОценки, Стоимости.УвеличениеОценкиНКД КАК УвеличениеОценкиНКД, Стоимости.УменьшениеОценкиНКД КАК УменьшениеОценкиНКД, Стоимости.КолВвод КАК КолВвод, Стоимости.СуммаВвод КАК СуммаВвод, Стоимости.НКДВвод КАК НКДВвод, Стоимости.СуммаВывод КАК СуммаВывод, Стоимости.СуммаОценкиВывод КАК СуммаОценкиВывод, Стоимости.СтоимостьПокупкиВывод КАК СтоимостьПокупкиВывод, Стоимости.КолВывод КАК КолВывод, Стоимости.НКДВывод КАК НКДВывод, Стоимости.НКДОценкиВывод КАК НКДОценкиВывод, Продажи.КоличествоОборот КАК КоличествоПродаж, Продажи.СуммаПродажиРеглОборот КАК СуммаПродажи, Продажи.СуммаБалансоваяОборот КАК СтоимостьПродажиБалансовая, Продажи.СуммаОценкиОборот КАК СтоимостьПродажиОценка, Продажи.СуммаПокупкиОборот КАК СтоимостьПродажиПокупки, Продажи.НкдПродажиРеглОборот КАК НкдПродажи, Продажи.НкдБалансоваяОборот КАК СтоимостьПродажиНкдБалансовая, Продажи.НкдОценкиОборот КАК СтоимостьПродажиНкдОценка, Продажи.РасходыПродажиОборот КАК РасходыПродажи, Продажи.НкдОценкиОборот КАК НкдОценкиПродажаОборот, ПогашенияКупона.НкдБалансоваяОборот КАК СписаниеНКДПриПогашении, ПогашенияКупона.НкдОценкиОборот КАК СписаниеНКДОценкиПриПогашенииПриПогашени, ПогашенияКупона.НкдПродажиОборот КАК ПогашениеКупона {ВЫБРАТЬ ТипДеятельности, ДоговорКлиента.*, ТипЦБ.*, ЦеннаяБумага.*, КоличествоНачальныйОстаток, КоличествоКонечныйОстаток, СуммаПокупкиНачальныйОстаток, СуммаПокупкиКонечныйОстаток, СуммаБалансоваяНачальныйОстаток, СуммаБалансоваяКонечныйОстаток, СуммаОценкиНачальныйОстаток, СуммаОценкиКонечныйОстаток, НкдБалансоваяНачальныйОстаток, НкдБалансоваяКонечныйОстаток, НкдОценкиНачальныйОстаток, НкдОценкиКонечныйОстаток, РасходыНачальныйОстаток, РасходыКонечныйОстаток, КоличествоПокупки, СуммаПокупки, НКДПокупки, РасходыПокупки, УвеличениеОценки, УменьшениеОценки, УвеличениеОценкиНКД, УменьшениеОценкиНКД, ПогашениеКупона, КолВвод, СуммаВвод, НКДВвод, СуммаВывод, СуммаОценкиВывод, СтоимостьПокупкиВывод, КолВывод, НКДВывод, НКДОценкиВывод, КоличествоПродаж, СуммаПродажи, СтоимостьПродажиБалансовая, СтоимостьПродажиОценка, СтоимостьПродажиПокупки, НкдПродажи, СтоимостьПродажиНкдБалансовая, СтоимостьПродажиНкдОценка, РасходыПродажи, НкдОценкиПродажаОборот, СписаниеНКДПриПогашении, СписаниеНКДОценкиПриПогашенииПриПогашени, ПогашениеКупона, Категория.*, Номинал} ИЗ РегистрНакопления.СебестоимостьЦБ.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, , ) КАК Остатки ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Стоимости.ДоговорКлиента КАК ДоговорКлиента, Стоимости.ЦеннаяБумага.ТипЦБ КАК ТипЦБ, Стоимости.ЦеннаяБумага КАК ЦеннаяБумага, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Покупка) ТОГДА Стоимости.Количество ИНАЧЕ 0 КОНЕЦ) КАК КоличествоПокупки, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Покупка) ТОГДА Стоимости.СуммаПокупки ИНАЧЕ 0 КОНЕЦ) КАК СуммаПокупки, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Покупка) ТОГДА Стоимости.НкдПокупки ИНАЧЕ 0 КОНЕЦ) КАК НКДПокупки, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Покупка) ТОГДА Стоимости.Расходы ИНАЧЕ 0 КОНЕЦ) КАК РасходыПокупки, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Переоценка) ТОГДА ВЫБОР КОГДА Стоимости.СуммаОценки > 0 ТОГДА Стоимости.СуммаОценки ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ) КАК УвеличениеОценки, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Переоценка) ТОГДА ВЫБОР КОГДА Стоимости.СуммаОценки < 0 ТОГДА -Стоимости.СуммаОценки ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ) КАК УменьшениеОценки, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Переоценка) ТОГДА ВЫБОР КОГДА Стоимости.НкдОценки > 0 ТОГДА Стоимости.НкдОценки ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ) КАК УвеличениеОценкиНКД, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Переоценка) ТОГДА ВЫБОР КОГДА Стоимости.НкдОценки < 0 ТОГДА -Стоимости.НкдОценки ИНАЧЕ 0 КОНЕЦ ИНАЧЕ 0 КОНЕЦ) КАК УменьшениеОценкиНКД, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Ввод) ТОГДА Стоимости.Количество ИНАЧЕ 0 КОНЕЦ) КАК КолВвод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Ввод) ТОГДА Стоимости.СуммаБалансовая ИНАЧЕ 0 КОНЕЦ) КАК СуммаВвод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Ввод) ТОГДА Стоимости.НкдБалансовая ИНАЧЕ 0 КОНЕЦ) КАК НКДВвод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Вывод) ТОГДА Стоимости.Количество ИНАЧЕ 0 КОНЕЦ) КАК КолВывод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Вывод) ТОГДА Стоимости.СуммаБалансовая ИНАЧЕ 0 КОНЕЦ) КАК СуммаВывод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Вывод) ТОГДА Стоимости.СуммаОценки ИНАЧЕ 0 КОНЕЦ) КАК СуммаОценкиВывод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Вывод) ТОГДА Стоимости.СуммаПокупки ИНАЧЕ 0 КОНЕЦ) КАК СтоимостьПокупкиВывод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Вывод) ТОГДА Стоимости.НкдБалансовая ИНАЧЕ 0 КОНЕЦ) КАК НКДВывод, СУММА(ВЫБОР КОГДА Стоимости.ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Вывод) ТОГДА Стоимости.НкдОценки ИНАЧЕ 0 КОНЕЦ) КАК НКДОценкиВывод ИЗ РегистрНакопления.СебестоимостьЦБ КАК Стоимости {ГДЕ Стоимости.Период} СГРУППИРОВАТЬ ПО Стоимости.ЦеннаяБумага, Стоимости.ЦеннаяБумага.ТипЦБ, Стоимости.ДоговорКлиента) КАК Стоимости ПО Остатки.ДоговорКлиента = Стоимости.ДоговорКлиента И Остатки.ЦеннаяБумага = Стоимости.ЦеннаяБумага ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиЦБ.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.Продажа)) КАК Продажи ПО (ЕСТЬNULL(Остатки.ДоговорКлиента, Стоимости.ДоговорКлиента) = Продажи.ДоговорКлиента) И (ЕСТЬNULL(Остатки.ЦеннаяБумага, Стоимости.ЦеннаяБумага) = Продажи.ЦеннаяБумага) ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиЦБ.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, ТипОперации = ЗНАЧЕНИЕ(Перечисление.ТипыОперацийЦБ.ПогашениеКупона)) КАК ПогашенияКупона ПО (ЕСТЬNULL(Остатки.ДоговорКлиента, Стоимости.ДоговорКлиента) = ПогашенияКупона.ДоговорКлиента) И (ЕСТЬNULL(Остатки.ЦеннаяБумага, Стоимости.ЦеннаяБумага) = ПогашенияКупона.ЦеннаяБумага) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоминалЦБ.СрезПоследних({(&КонецПериода)}, ) КАК НоминалЦБ ПО (ЕСТЬNULL(Остатки.ЦеннаяБумага, Стоимости.ЦеннаяБумага) = НоминалЦБ.ЦеннаяБумага) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорияЦБ.СрезПоследних({(&КонецПериода)}, ) КАК КатегорияЦБ ПО (ЕСТЬNULL(Остатки.ЦеннаяБумага, Стоимости.ЦеннаяБумага) = КатегорияЦБ.ЦеннаяБумага) |
|||
10
qeos
02.08.11
✎
15:15
|
толку от этого только нет..
вопрос в чем.. почему условие не срабатывает во вложеном запросе? |
|||
11
Fragster
гуру
02.08.11
✎
15:16
|
(5) может еще и условия соединения можно делать?
|
|||
12
Defender aka LINN
02.08.11
✎
15:38
|
(8) То-то же.
(11) Какие, например? |
|||
13
Fragster
гуру
02.08.11
✎
15:42
|
(12) типа
Левое соединение Регистр По {Регистр.ЫЫ = &Параметр} просто приходится загонять в ВТ(или вложенный запрос) с отбором СКД/построителя а уже потом соединять, что не всегда нормально |
|||
14
Defender aka LINN
02.08.11
✎
15:47
|
(13) Ну, если это измерение, то в параметрах вирт. таблицы вроде тоже можно такой трюк провернуть.
|
|||
15
Fragster
гуру
02.08.11
✎
16:10
|
(14) ну, виртуальной таблицы может и не быть (непериодеский независимый РС)
|
|||
16
Defender aka LINN
02.08.11
✎
16:17
|
(15) Необязательные соединения при соединении наборов только делать можно. Но это какбе несколько не то.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |