Имя: Пароль:
1C
1С v8
Операции сравнения на больше-меньше допустимы только для значений совпадающих пр
0 dante_a123
 
27.04.16
18:53
Здравствуйте.Возникла проблемка,которую я не могу решить уже более часа.
Ошибка - Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов
код
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    // регистр Взаиморасчеты Приход
    Движения.Взаиморасчеты.Записывать = Истина;
    Движение = Движения.Взаиморасчеты.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.ПоДокументу = Ссылка;
    Движение.Контрагент = Контрагент;
    Движение.Сумма = СуммаПоДокументу;
    Движения.Взаиморасчеты.Записать();
         //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ВзаиморасчетыОстатки.ПоДокументу,
        |    ЕСТЬNULL(ВзаиморасчетыОстатки.СуммаОстаток, 0) КАК СуммаОстаток,
        |    ВзаиморасчетыОстатки.Контрагент.Срок,
        |    ВзаиморасчетыОстатки.Контрагент.Лимит КАК КонтрагентЛимит,
        |    ВзаиморасчетыОстатки.ПоДокументу.Дата КАК ПоДокументуДата
        |ИЗ
        |    РегистрНакопления.Взаиморасчеты.Остатки(&МоментВремени, Контрагент = &Контрагент) КАК ВзаиморасчетыОстатки
        |
        |УПОРЯДОЧИТЬ ПО
        |    ПоДокументуДата
        |ИТОГИ
        |    СУММА(СуммаОстаток),
        |    МАКСИМУМ(КонтрагентЛимит),
        |    МИНИМУМ(ПоДокументуДата)
        |ПО
        |    ОБЩИЕ";
    
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаОбщийИтог = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ВыборкаОбщийИтог.Следующий();            
    Если (ВыборкаОбщийИтог.СуммаОстаток) > 0 Тогда
        Если ВыборкаОбщийИтог.СуммаОстаток>ВыборкаОбщийИтог.КонтрагентЛимит Тогда
            отказ=истина;
            сообщить("лимит превышен");
            возврат
        конецесли;
    конецесли;
    
    
    //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    //    // Вставить обработку выборки ВыборкаДетальныеЗаписи
    //КонецЦикла;
    //
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

Как исправить глупую ситуацию?Почему я не получаю результатов от запроса?
1 MUXACb
 
27.04.16
19:03
(0) Остаток равен нулю, т.е выборка пустая
2 Mankubus
 
27.04.16
19:03
в отладчике посмотри какие типы ты сравниваешь
3 1sanekmaloi1
 
27.04.16
19:05
Да там Null похоже
4 dante_a123
 
27.04.16
19:07
(3) я же указал ЕСТЬNULL(ВзаиморасчетыОстатки.СуммаОстаток, 0) КАК СуммаОстаток. как мне вообще быть в такой ситуации? (2) в отлатчике сказано что то вроде - ошибка значения
5 Lexey_
 
27.04.16
19:14
(4) "в отлатчике сказано что то вроде - ошибка значения" - отладчик пьян и пишет неразборчиво?
6 Mankubus
 
27.04.16
19:15
(4) в смысле "что-то вроде"? лень полностью написать?
7 dante_a123
 
27.04.16
19:28
(5) (6) "Ошибка чтения значения"
8 dante_a123
 
27.04.16
20:14
?
9 MUXACb
 
27.04.16
20:16
(8) Вместо ВыборкаОбщийИтог.Следующий() сделайте
Если  ВыборкаОбщийИтог.Следующий() Тогда
10 bazvan
 
27.04.16
20:21
КонтрагентЛимит что?
Видимо тоже надо обрамить ЕСТЬNULL
11 dante_a123
 
27.04.16
20:49
(10) ошибку выбивает именно в этом моменте -
Если (ВыборкаОбщийИтог.СуммаОстаток) > 0 Тогда

(9)в этом случае работает но не учитывает ограничение по лимиту,проводит все накладные подряд
12 bazvan
 
27.04.16
21:01
(11) выполни запрос в отладчике и глянь что получилось в ТЗ
13 Wern
 
27.04.16
21:35
Учитывая (9) и (11) просто результат запроса пустой.
ВыборкаОбщийИтог.Следующий(); не позиционируется и суммы тоже нету. ЕстьNULL тут никак не поможет.
14 dante_a123
 
28.04.16
14:42
(13) что тут поможет?
15 salvator
 
28.04.16
14:50
(14) А что нужно делать, если результат пустой?
16 dante_a123
 
28.04.16
14:53
(15) если бы я знал я бы на форум не обращался
17 catena
 
28.04.16
14:54
(14)В (9) написали уже, что тут поможет. Это будет синтаксически правильно. То, что после этого результат не соответствует вашим ожиданиям, означает, что вы неправильно реализовали задачу.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.