Имя: Пароль:
1C
1С v8
Сообщить при неопределённом массиве
0 Shouldercannon
 
08.01.21
15:14
Доброго времени уток!
В запросе заполняю массив
РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        МассивАртикулов = Новый Массив();
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            МассивАртикулов.Добавить(ВыборкаДетальныеЗаписи.НоменклатураАртикул);
        КонецЦикла;
    КонецЕсли;
    
    Возврат МассивАртикулов;

Всё нормально, пока массив не примет значение Неопределено
И далее соответственно ошибка при обходе массива. Так как массив не определён, то и данная проверка вылетает с ошибкой: Значение не является значением объектного типа (Количество)
МассивАртикулов = Новый Массив();
    МассивАртикулов = ПолучитьАртикулы(СсылкаНаДок);    
    Если Не МассивАртикулов.Количество() = 0 Тогда // Значение не является значением объектного типа (Количество)
        Для Каждого Артикул Из МассивАртикулов Цикл
            НомерЗапчасти.Параметры.Артикул = Артикул;
            ТабДок.Вывести(НомерЗапчасти);
        КонецЦикла;
    Иначе

Как правильно организовать проверку?
1 Ненавижу 1С
 
гуру
08.01.21
15:16
Если ТипЗнч(МассивАртикулов)=Тип("Массив") и МассивАртикулов.Количество()>0 Тогда
2 Василий Алибабаевич
 
08.01.21
15:16
(0) Вот это вот " МассивАртикулов = Новый Массив();" вынести перед "Если Не РезультатЗапроса.Пустой() Тогда". Тогда в любом случае будет массив. Но иногда пустой. И проверка на Количество() будет проходить всегда.
3 d4rkmesa
 
гуру
08.01.21
15:57
(0) ЗначениеЗаполнено()