Имя: Пароль:
1C
1С v8
Почему 1С перестала видеть условие?
,
0 01230123
 
12.03.14
00:38
Доброго времени суток.
Есть код:
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
                          |    ЗначенияСвойствНоменклатуры.СвойствоНоменклатурыСсылка
                          |ИЗ
                          |    ВремЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры");
    Запрос.МенеджерВременныхТаблиц = мМВТ;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    //Если РезультатЗапроса.Пустой() Тогда
    //    Возврат;
    //КонецЕсли;

Я закомментировал строки, которые стали работать неправильно после перевода базы 1С:УТ 8.1 в 8.2 и обновления движка. Ну, я думаю, что причина в этом, но не уверен. Просто примерно пол-года назад условие РезультатЗапроса.Пустой() стало верным, даже если результат запроса не пустой. Обнаружил это только сейчас и закомментировал, чтобы результат запроса обрабатывался дальше по коду.
Подскажите, как исправить, чтобы условие работало?
1 Лаврентий Берия
 
12.03.14
00:44
УТ 8.1 - старьё. Рекомендую 10.3.
2 01230123
 
12.03.14
00:48
Неправильно выразился. УТ теперь 10.3. Было что-то постарше.  Сразу много глюков было. Думал, все отловил, но вот этот остался.
3 Лаврентий Берия
 
12.03.14
00:50
(2) Перефразирую: условие-то ГДЕ?!
4 Лаврентий Берия
 
12.03.14
00:52
А, ой, вижу. Отладчиком повнимательнее пробегись. Думаю, "РезультатЗапроса" - не одна переменная в этом контексте. Ищи небольшие различия или нажми Ctrl + пробел.
5 01230123
 
12.03.14
01:05
Я, в общем-то, плохо разбираюсь... Мне кажется, что если это первый запрос в этой процедуре, то остальное можно не учитывать? Вот вся процедура:

Процедура ВыгрузитьСвойства(ОбъектCML)
    
    Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
                          |    ЗначенияСвойствНоменклатуры.СвойствоНоменклатурыСсылка
                          |ИЗ
                          |    ВремЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры");
    Запрос.МенеджерВременныхТаблиц = мМВТ;
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Если РезультатЗапроса.Пустой() Тогда
        Возврат;
    КонецЕсли;
    
    ОбъектCML.ЗаписатьНачалоЭлемента("Свойства");
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        ОбъектCML.ЗаписатьНачалоЭлемента("Свойство");
        ВыгрузитьОсновныеРеквизитыСвойстваДляКлассификатора(ОбъектCML, Выборка.СвойствоНоменклатурыСсылка);
        ОбъектCML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    
    //список номенклатуры
    ТаблНоменклатуры = ПостроительЗапроса.Результат.Выгрузить();
    СписокНоменклатуры = Новый СписокЗначений;
    Для Каждого Стр Из ТаблНоменклатуры Цикл
        Если Не Стр.НоменклатураСсылка.ЭтоГруппа Тогда             
            СписокНоменклатуры.Добавить(Стр.НоменклатураСсылка);
        КонецЕсли;
    КонецЦикла;
    
    Для Каждого Элем Из СписокМнСвойств Цикл
        ЗаписатьЗначенияМножественныхСвойств(Элем.Значение, СписокНоменклатуры, ОбъектCML);
    КонецЦикла;
    ОбъектCML.ЗаписатьКонецЭлемента();
    
КонецПроцедуры
6 EugeniaK
 
12.03.14
01:28
"РезультатЗапроса.Пустой() стало верным, даже если результат запроса не пустой"
не верю. Как-то криво смотришь.
7 01230123
 
12.03.14
01:34
Если я комментирую указанные строки, то следующая строка выполняется. Если комментарии убрать, то после
"Если РезультатЗапроса.Пустой() Тогда  Возврат;"
ничего не выполняется. Почему 100% возврат идёт? РезультатЗапроса - совсем не пустой.
8 EugeniaK
 
12.03.14
02:17
(7) Посмотри отладчиком.