Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Цикл Пока и ошибка "Значение поля свойства не может быть пустым"

Цикл Пока и ошибка "Значение поля свойства не может быть пустым"
Я
   1СникомХочуСтать
 
20.02.20 - 11:50
Здравствуйте, нужна ваша подсказка: моя обработка берет данные из справочника (спр ЕдиницыИзмерения Объем) и записывает их в регистр сведений (РегистрыСведений.ЗначенияСвойствОбъектов), но сыпется ошибка "Значение поля свойства не может быть пустым"...

Как можно добавить исключение в Цикл Пока - если значение пустое и тогда пропустить его и перейти на следующий?


Функция ЗаполнениеСвойстваОбъемМ3()
    
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |         Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура,
    |         Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем
    |ИЗ
    |         Справочник.Номенклатура КАК Номенклатура";
                
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        
        МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
        
        МенеджерЗаписи.Записать();
        
    Если ОбъемМ3.Пустая()  Тогда
     ВыборкаДетальныеЗаписи.Следующий();
         // Продолжить; тоже не помогает
    КонецЕсли;    
        
    КонецЦикла;
    

КонецФункции
   ДенисЧ
 
1 - 20.02.20 - 11:51
Условие если перенеси в начало цикла и всё.
   1СникомХочуСтать
 
2 - 20.02.20 - 11:56
(1) так? не получается
   РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Если НЕ ОбъемМ3.Пустая()  Тогда
    
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
            
            МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
            МенеджерЗаписи.Свойство = ОбъемМ3 ;
            МенеджерЗаписи.Прочитать();
            МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
            МенеджерЗаписи.Свойство = ОбъемМ3 ;
            
            МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
            МенеджерЗаписи.Записать(); 
        КонецЦикла;
        
    Иначе ВыборкаДетальныеЗаписи.Следующий();    
    КонецЕсли;
   ДенисЧ
 
3 - 20.02.20 - 11:58
В начало цикла, а не перед циклом...

Вроде по-русски пишу...
   vicof
 
4 - 20.02.20 - 12:00
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Если ОбъемМ3.Пустая()  Тогда
    Возврат;
КонецЕсли;
   vicof
 
5 - 20.02.20 - 12:01
И из цикла все условия убрать
   1СникомХочуСтать
 
6 - 20.02.20 - 12:13
(4)  если так, то ошибка Ожидается выражение
    Возврат<<?>>; (Проверка: Толстый клиент (обычное приложение))


Функция ЗаполнениеСвойстваОбъемМ3()
    
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Если ОбъемМ3.Пустая() Тогда
    Возврат;
КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |         Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура,
    |         Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем
    |ИЗ
    |         Справочник.Номенклатура КАК Номенклатура";
                
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        
        МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
        
        МенеджерЗаписи.Записать();             
    КонецЦикла;
    

КонецФункции
   1СникомХочуСтать
 
7 - 20.02.20 - 12:14
(5) сорри одним сообщением всё,  если так, то ошибка "Ожидается выражение Возврат"
   catena
 
8 - 20.02.20 - 12:24
(7)А для чего там функция, что в принципе планировалось возвращать?
   1СникомХочуСтать
 
9 - 20.02.20 - 12:51
(8) (((( Так тоже ошибка "Значение поля свойства не может быть пустым", что не так?


ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Если ОбъемМ3.Пустая() Тогда
    Возврат ЗаполнениеСвойстваОбъемМ3();
КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |         Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура,
    |         Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем
    |ИЗ
    |         Справочник.Номенклатура КАК Номенклатура";
                
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемМ3 ;
        
        МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
        
        МенеджерЗаписи.Записать();             
    КонецЦикла;
   hhhh
 
10 - 20.02.20 - 12:55
(9) Возврат Неопределено;
   catena
 
11 - 20.02.20 - 12:56
(9)За нахрена эта рекурсия? Вы думаете, если вызовете еще раз -дцать, то по коду все-таки найдется?
   catena
 
12 - 20.02.20 - 12:57
+И зачем делать функцию, если не предполагаете ничего возвращать?
   Kigo_Kigo
 
13 - 20.02.20 - 12:58
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Сообщить(ОбъемМ3);
что говорит?
   1СникомХочуСтать
 
14 - 20.02.20 - 12:58
(10) такая же ошибка даже если Возврат Нопределено;
   D_E_S_131
 
15 - 20.02.20 - 13:09
(14) Найдите уже глобальным поискам по модулям, где выдается сообщение "Значение поля свойства не может быть пустым"
   1СникомХочуСтать
 
16 - 20.02.20 - 13:12
(13) Так говорит как надо НаименованиеСвойства
ОбъемВкубе = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158"); 
Сообщить(ОбъемВкубе);
   1СникомХочуСтать
 
17 - 20.02.20 - 13:13
(13) а если полностью то выдаёт ошибку - Запись не верна! Значение поля "Свойство" не может быть пустым!

ОбъемВкубе = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Если ОбъемВкубе.Пустая() Тогда
    Возврат Неопределено;
КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |         Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура,
    |         Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем
    |ИЗ
    |         Справочник.Номенклатура КАК Номенклатура";
                
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
        
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемВкубе ;
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура;
        МенеджерЗаписи.Свойство = ОбъемВкубе ;
        
        МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем;
        
        МенеджерЗаписи.Записать();             
    КонецЦикла;
   vicof
 
18 - 20.02.20 - 13:24
у тебя есть реквизит на форме ОбъемВКубе. Ставлю сотку.
   vicof
 
19 - 20.02.20 - 13:24
Причем не того типа, который нужен
   1СникомХочуСтать
 
20 - 20.02.20 - 13:29
(18) Да и он числового Типа, а свойство Строка

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.