Имя: Пароль:
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) написали уже, что тут поможет. Это будет синтаксически правильно. То, что после этого результат не соответствует вашим ожиданиям, означает, что вы неправильно реализовали задачу.
Закон Брукера: Даже маленькая практика стоит большой теории.