Имя: Пароль:
1C
1С v8
помогите исправить ошибку в запросе
0 dreamoff
 
28.06.13
09:50
ВЫБРАТЬ
                       |    ПДСОстатки.СуммаОстаток КАК Накопления,
                       |    ВЫБОР
                       |        КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.Больше)
                       |                И ПДСОстатки.СуммаОстаток > КартыПДСУсловияПДС.Значение
                       |            ТОГДА КартыПДСУсловияПДС.ПроцентСумма
                       |        ИНАЧЕ ВЫБОР
                       |                КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.БольшеРавно)
                       |                        И ПДСОстатки.СуммаОстаток >= КартыПДСУсловияПДС.Значение
                       |                    ТОГДА КартыПДСУсловияПДС.ПроцентСумма
                       |                ИНАЧЕ ВЫБОР
                       |                        КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.Меньше)
                       |                                И ПДСОстатки.СуммаОстаток < КартыПДСУсловияПДС.Значение
                       |                            ТОГДА КартыПДСУсловияПДС.ПроцентСумма
                       |                        ИНАЧЕ ВЫБОР
                       |                                КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.МеньшеРавно)
                       |                                        И ПДСОстатки.СуммаОстаток <= КартыПДСУсловияПДС.Значение
                       |                                    ТОГДА КартыПДСУсловияПДС.ПроцентСумма
                       |                                ИНАЧЕ ВЫБОР
                       |                                        КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.Равно)
                       |                                                И ПДСОстатки.СуммаОстаток = КартыПДСУсловияПДС.Значение
                       |                                            ТОГДА КартыПДСУсловияПДС.ПроцентСумма
                       |                                    КОНЕЦ
                       |                            КОНЕЦ
                       |                    КОНЕЦ
                       |            КОНЕЦ
                       |    КОНЕЦ КАК Процент,
                       |    БазыДанных.Ссылка КАК Заведение
                       |ИЗ
                       |    Справочник.КартыПДС.УсловияПДС КАК КартыПДСУсловияПДС
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПДС.Остатки КАК ПДСОстатки
                       |        ПО КартыПДСУсловияПДС.Карта = ПДСОстатки.КартаПДС
                       |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БазыДанных КАК БазыДанных
                       |        ПО КартыПДСУсловияПДС.БазаДанных = БазыДанных.Ссылка
                       |ГДЕ
                       |    КартыПДСУсловияПДС.Карта = &КартаПоиска
                       |    И (КартыПДСУсловияПДС.ТипКарты = ЗНАЧЕНИЕ(Перечисление.ТипКарты.Дисконтная)
                       |            ИЛИ КартыПДСУсловияПДС.ТипКарты = ЗНАЧЕНИЕ(Перечисление.ТипКарты.ПлатежноДисконтная))
                       |    И КартыПДСУсловияПДС.ПериодДействияНачало <= &НаДату
                       |    И (КартыПДСУсловияПДС.ПериодДействияОкончание >= &НаДату
                       |            ИЛИ КартыПДСУсловияПДС.ПериодДействияОкончание = ДАТАВРЕМЯ(1, 1, 1))

в запросах я не силен(нужно что бы выбиралась только одна строчка соответствующая условию,а выводятся все строки,которые в тч,причем пустые,т.к. они не попадают под условию.КартыПДСУсловияПДС-тч справочника. подскажите,где я ошибся?
1 dreamoff
 
28.06.13
10:09
ап
2 Smallrat
 
28.06.13
10:15
"они не попадают под условию.КартыПДСУсловияПДС-тч справочника"
что за условие то ?
и чтобы не городить огород с ВЫБОР КОГДА ИНАЧЕ ВЫБОР
можно писать просто
ВЫБОР
   КОГДА ТОГДА
   КОГДА ТОГДА
   ИНАЧЕ 0
КОНЕЦ
3 dreamoff
 
28.06.13
10:20
(2) вот такое условие
Если (СтрокаУсловия.ТипСравнения = Перечисления.ТипыСравнений.Больше) и
               (СуммаОплат > СтрокаУсловия.Значение) Тогда
               НайденоПодходящееУсловиеПроцент = Истина;
           ИначеЕсли (СтрокаУсловия.ТипСравнения = Перечисления.ТипыСравнений.БольшеРавно) и
               (СуммаОплат >= СтрокаУсловия.Значение) Тогда
               НайденоПодходящееУсловиеПроцент = Истина;
           ИначеЕсли (СтрокаУсловия.ТипСравнения = Перечисления.ТипыСравнений.Меньше) и
               (СуммаОплат < СтрокаУсловия.Значение) Тогда
               НайденоПодходящееУсловиеПроцент = Истина;
           ИначеЕсли (СтрокаУсловия.ТипСравнения = Перечисления.ТипыСравнений.МеньшеРавно) и
               (СуммаОплат <= СтрокаУсловия.Значение) Тогда
               НайденоПодходящееУсловиеПроцент = Истина;
           ИначеЕсли (СтрокаУсловия.ТипСравнения = Перечисления.ТипыСравнений.Равно) и
               (СуммаОплат = СтрокаУсловия.Значение) Тогда
               НайденоПодходящееУсловиеПроцент = Истина;
           КонецЕсли;
4 Smallrat
 
28.06.13
10:30
(3) ну а где это условие в условиях запроса ?

В выборке просто написать
КартыПДСУсловияПДС.ПроцентСумма КАК Процент

В условиях написать
|ГДЕ
|    КартыПДСУсловияПДС.Карта = &КартаПоиска
|    И (КартыПДСУсловияПДС.ТипКарты = ЗНАЧЕНИЕ(Перечисление.ТипКарты.Дисконтная)
|            ИЛИ КартыПДСУсловияПДС.ТипКарты = ЗНАЧЕНИЕ(Перечисление.ТипКарты.ПлатежноДисконтная))
|    И КартыПДСУсловияПДС.ПериодДействияНачало <= &НаДату
|    И (КартыПДСУсловияПДС.ПериодДействияОкончание >= &НаДату
|            ИЛИ КартыПДСУсловияПДС.ПериодДействияОкончание = ДАТАВРЕМЯ(1, 1, 1)) И
|    ВЫБОР
|        КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.Больше)
|           И ПДСОстатки.СуммаОстаток > КартыПДСУсловияПДС.Значение
|              ТОГДА ИСТИНА
|        КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.БольшеРавно)
|            И ПДСОстатки.СуммаОстаток >= КартыПДСУсловияПДС.Значение
|                ТОГДА ИСТИНА
|        КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.Меньше)
|            И ПДСОстатки.СуммаОстаток < КартыПДСУсловияПДС.Значение
|              ТОГДА ИСТИНА
|         КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.МеньшеРавно)
|            И ПДСОстатки.СуммаОстаток <= КартыПДСУсловияПДС.Значение
|              ТОГДА ИСТИНА
|         КОГДА КартыПДСУсловияПДС.ТипСравнения = ЗНАЧЕНИЕ(Перечисление.ТипыСравнений.Равно)
|            И ПДСОстатки.СуммаОстаток = КартыПДСУсловияПДС.Значение
|              ТОГДА ИСТИНА
|    ИНАЧЕ ЛОЖЬ
|    КОНЕЦ
5 dreamoff
 
28.06.13
13:20
(4) спасибо большое,что объяснили дураку,что условие это не то,что я изобразил)