|
Цикл Пока и ошибка "Значение поля свойства не может быть пустым" | ☑ | ||
---|---|---|---|---|
0
1СникомХочу Стать
20.02.20
✎
11:50
|
Здравствуйте, нужна ваша подсказка: моя обработка берет данные из справочника (спр ЕдиницыИзмерения Объем) и записывает их в регистр сведений (РегистрыСведений.ЗначенияСвойствОбъектов), но сыпется ошибка "Значение поля свойства не может быть пустым"...
Как можно добавить исключение в Цикл Пока - если значение пустое и тогда пропустить его и перейти на следующий? Функция ЗаполнениеСвойстваОбъемМ3() ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура, | Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем |ИЗ | Справочник.Номенклатура КАК Номенклатура"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем; МенеджерЗаписи.Записать(); Если ОбъемМ3.Пустая() Тогда ВыборкаДетальныеЗаписи.Следующий(); // Продолжить; тоже не помогает КонецЕсли; КонецЦикла; КонецФункции |
|||
1
ДенисЧ
20.02.20
✎
11:51
|
Условие если перенеси в начало цикла и всё.
|
|||
2
1СникомХочу Стать
20.02.20
✎
11:56
|
(1) так? не получается
РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Если НЕ ОбъемМ3.Пустая() Тогда Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем; МенеджерЗаписи.Записать(); КонецЦикла; Иначе ВыборкаДетальныеЗаписи.Следующий(); КонецЕсли; |
|||
3
ДенисЧ
20.02.20
✎
11:58
|
В начало цикла, а не перед циклом...
Вроде по-русски пишу... |
|||
4
vicof
20.02.20
✎
12:00
|
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Если ОбъемМ3.Пустая() Тогда Возврат; КонецЕсли; |
|||
5
vicof
20.02.20
✎
12:01
|
И из цикла все условия убрать
|
|||
6
1СникомХочу Стать
20.02.20
✎
12:13
|
(4) если так, то ошибка Ожидается выражение
Возврат<<?>>; (Проверка: Толстый клиент (обычное приложение)) Функция ЗаполнениеСвойстваОбъемМ3() ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158"); Если ОбъемМ3.Пустая() Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура, | Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем |ИЗ | Справочник.Номенклатура КАК Номенклатура"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем; МенеджерЗаписи.Записать(); КонецЦикла; КонецФункции |
|||
7
1СникомХочу Стать
20.02.20
✎
12:14
|
(5) сорри одним сообщением всё, если так, то ошибка "Ожидается выражение Возврат"
|
|||
8
catena
20.02.20
✎
12:24
|
(7)А для чего там функция, что в принципе планировалось возвращать?
|
|||
9
1СникомХочу Стать
20.02.20
✎
12:51
|
(8) (((( Так тоже ошибка "Значение поля свойства не может быть пустым", что не так?
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158"); Если ОбъемМ3.Пустая() Тогда Возврат ЗаполнениеСвойстваОбъемМ3(); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура, | Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем |ИЗ | Справочник.Номенклатура КАК Номенклатура"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемМ3 ; МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем; МенеджерЗаписи.Записать(); КонецЦикла; |
|||
10
hhhh
20.02.20
✎
12:55
|
(9) Возврат Неопределено;
|
|||
11
catena
20.02.20
✎
12:56
|
(9)За нахрена эта рекурсия? Вы думаете, если вызовете еще раз -дцать, то по коду все-таки найдется?
|
|||
12
catena
20.02.20
✎
12:57
|
+И зачем делать функцию, если не предполагаете ничего возвращать?
|
|||
13
Kigo_Kigo
20.02.20
✎
12:58
|
ОбъемМ3 = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158");
Сообщить(ОбъемМ3); что говорит? |
|||
14
1СникомХочу Стать
20.02.20
✎
12:58
|
(10) такая же ошибка даже если Возврат Нопределено;
|
|||
15
D_E_S_131
20.02.20
✎
13:09
|
(14) Найдите уже глобальным поискам по модулям, где выдается сообщение "Значение поля свойства не может быть пустым"
|
|||
16
1СникомХочу Стать
20.02.20
✎
13:12
|
(13) Так говорит как надо НаименованиеСвойства
ОбъемВкубе = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158"); Сообщить(ОбъемВкубе); |
|||
17
1СникомХочу Стать
20.02.20
✎
13:13
|
(13) а если полностью то выдаёт ошибку - Запись не верна! Значение поля "Свойство" не может быть пустым!
ОбъемВкубе = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00158"); Если ОбъемВкубе.Пустая() Тогда Возврат Неопределено; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.ЕдиницаХраненияОстатков.Владелец КАК Номенклатура, | Номенклатура.ЕдиницаХраненияОстатков.Объем КАК Объем |ИЗ | Справочник.Номенклатура КАК Номенклатура"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемВкубе ; МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Номенклатура; МенеджерЗаписи.Свойство = ОбъемВкубе ; МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Объем; МенеджерЗаписи.Записать(); КонецЦикла; |
|||
18
vicof
20.02.20
✎
13:24
|
у тебя есть реквизит на форме ОбъемВКубе. Ставлю сотку.
|
|||
19
vicof
20.02.20
✎
13:24
|
Причем не того типа, который нужен
|
|||
20
1СникомХочу Стать
20.02.20
✎
13:29
|
(18) Да и он числового Типа, а свойство Строка
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |