![]() |
|
Проверка на неопределено в запросе | ☑ | ||
---|---|---|---|---|
0
MaxKor
15.03.17
✎
08:25
|
Здравствуйте! Помогите пожалуйста разобраться.
Вот запрос: ВЫБРАТЬ ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаДоговора ПОМЕСТИТЬ СуммаДоговораВсего ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты КАК ЗаказыПокупателейОстаткиИОбороты ГДЕ ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента = &ДоговорКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор, СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаАвансов, СуммаДоговораВсего.СуммаДоговора ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоАвансамПолученным), , ) КАК ХозрасчетныйОстаткиИОбороты, СуммаДоговораВсего КАК СуммаДоговораВсего ГДЕ ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2 И ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее СГРУППИРОВАТЬ ПО ХозрасчетныйОстаткиИОбороты.Субконто2, СуммаДоговораВсего.СуммаДоговора Но иной раз авансов нет. И тогда весь запрос не отрабатывает, по всем полям неопределенно, а данные из него нужны дальше в любом случае. Как проверить поле ХозрасчетныйОстаткиИОбороты.СуммаОборотКт на неопределенно и дать ему значение 0. пробовал уже по разному и ЕСТЬ NULL и неопределенно, выдает ошибку. Спасибо. |
|||
1
shamannk
15.03.17
✎
08:26
|
Ошибку в студию!
|
|||
2
MaxKor
15.03.17
✎
08:37
|
ВЫБОР
КОГДА ХозрасчетныйОстаткиИОбороты.СуммаОборотКт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КОНЕЦ Ошибка - Операция не разрешения в предложении <<?>>ВЫБОР Тоже же самое если пишу "= Неопределено" |
|||
3
Мимохожий Однако
15.03.17
✎
08:39
|
Попробуй:
Функция ЕСТЬNULL Функция предназначена для замены значения NULL на другое значение. Параметры функции: Первый параметр — выражение любого типа Второй параметр — выражение любого типа Возвращаемое значение: значение первого параметра, в случае, если первый параметр не содержит значение NULL, значение второго параметра в противном случае. Второй параметр будет преобразован к типу первого в случае, если тип первого параметра является строкой или числом. Пример: // Получить сумму по полю количество. В случае, если нет // записей, получить 0 ВЫБРАТЬ ЕСТЬNULL(СУММА(Количество), 0) КАК Количество ИЗ Документ.РасхНакл.Состав |
|||
4
MaxKor
15.03.17
✎
08:41
|
(3) пробовал, не работает. наверное потому что в запросе поля имеют значение именно неопределенно
|
|||
5
Мимохожий Однако
15.03.17
✎
08:59
|
(4) Покажи код. Не стесняйся
|
|||
6
youalex
15.03.17
✎
09:07
|
(2) Ты это где пишешь? В ГДЕ?
|
|||
7
MaxKor
15.03.17
✎
09:12
|
(6) и в ГДЕ пробовал и в самом поле пробовал
|
|||
8
r_i_n_i_k
15.03.17
✎
09:15
|
Попробуй СуммаДоговораВсего ЛЕВОЕ СОЕДИНЕНИЕ Хазрасчетный
и в поля выведи ДоговорКонтрагента. И условия Договор = $Договор засунь в параметры виртуальной таблицы, а не в условия |
|||
9
1dvd
15.03.17
✎
09:19
|
у тебя таблицы не связаны вообще
|
|||
10
Черный маклер
15.03.17
✎
09:20
|
(0) пробуй в консоли запросов - если в результате щелкать по пустому полю то увидишь тип результата
|
|||
11
НЕА123
15.03.17
✎
09:26
|
СУММА(ЕстьNULL(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт, 0)) КАК СуммаАвансов,
неужто не срабатывает? ЗЫ запрос бредовенький... |
|||
12
НЕА123
15.03.17
✎
09:29
|
(11) сторно
|
|||
13
MaxKor
15.03.17
✎
09:41
|
(10) он ничего не выводит в консоли, строк нет
(11) не срабатывает, строк нет (5) вот код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, | ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаДоговора |ПОМЕСТИТЬ СуммаДоговораВсего |ИЗ | РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты КАК ЗаказыПокупателейОстаткиИОбороты |ГДЕ | ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента = &ДоговорКонтрагента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Договор, | СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаАвансов, | СуммаДоговораВсего.СуммаДоговора |ИЗ | СуммаДоговораВсего КАК СуммаДоговораВсего | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Регистратор, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоАвансамПолученным), , ) КАК ХозрасчетныйОстаткиИОбороты | ПО СуммаДоговораВсего.ДоговорКонтрагента = ХозрасчетныйОстаткиИОбороты.Субконто2 |ГДЕ | ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2 | И ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее | |СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОбороты.Субконто2, | СуммаДоговораВсего.СуммаДоговора"; Запрос.УстановитьПараметр("ДоговорКонтрагента", Договор); Запрос.УстановитьПараметр("Субконто2", Договор); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Авансы = ВыборкаДетальныеЗаписи.СуммаАвансов; ВсегоПоДоговору = ВыборкаДетальныеЗаписи.СуммаДоговора КонецЦикла; дальше мне нужно обрабатывать эти суммы, если авансов не было, то ноль чтоб цифра была. но если авансов нет, то запрос весь не отрабатывает |
|||
14
sidalexsandr
15.03.17
✎
09:45
|
(13) А чем тебе не подходит проверить, что если запрос пустой, то тогда цифра 0?
|
|||
15
catena
15.03.17
✎
09:47
|
(13)О, боги! Когда вы пишите условаия ГДЕ на левую таблицу - вы превращаете левое соединение в полное. Уберите ГДЕ в условия связи.
|
|||
16
catena
15.03.17
✎
09:48
|
...СуммаОборотКт принимает значение неопределено. Это прям техподдержке мозг выносить. @{Ненавижу1С} заходил?
|
|||
17
Мимохожий Однако
15.03.17
✎
09:59
|
(13) СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаАвансов. В этой строке добавь функцию ЕСТЬNULL. у тебя может не быть авансов
|
|||
18
MaxKor
15.03.17
✎
09:59
|
"ВЫБРАТЬ
| &ДоговорКонтрагента КАК ДоговорКонтрагента, | ЕСТЬNULL(Хозрасчетный.СуммаОборотКт, 0) КАК СуммаАвансов, | ЕСТЬNULL(Заказы.СуммаВзаиморасчетовПриход, 0) КАК СуммаДоговора |ИЗ | РегистрНакопления.ЗаказыПокупателей.Обороты(, , , ДоговорКонтрагента = &ДоговорКонтрагента) КАК Заказы, | (ВЫБРАТЬ | СУММА(т.СуммаОборотКт) КАК СуммаОборотКт | ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыПоАвансамПолученным), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры), Субконто1 = &ДоговорКонтрагента, , ) КАК т | ГДЕ | т.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее) КАК Хозрасчетный"; вот решение моего вопроса. всем спасибо! |
|||
19
catena
15.03.17
✎
10:01
|
мда...
|
|||
20
catena
15.03.17
✎
10:02
|
Кросс-соединение таблиц... да на большом объеме данных... Это будет очаровательно...
|
|||
21
1dvd
15.03.17
✎
10:03
|
(15) (16) Даже не верится, что девушка может быть такой умной. Может ты мужик переодетый? :)
ЗЫ шучу |
|||
22
catena
15.03.17
✎
11:03
|
(21)Да какая ж я девушка, я мать!)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |