|
Значение не является значением объектного типа (Выбрать) | ☑ | ||
---|---|---|---|---|
0
oqjawa
16.05.17
✎
07:04
|
Есть запрос (выборка с условием где РеквизитДокумента = Значение) на вывод параметров в табличную часть печатной формы..
всё выводит всё хорошо, НО если выбрать значение которое не указано в запросе он ругается! "Значение не является значением объектного типа(выбрать)" КАК сделать так что бы не ругался, а просто тогда выводил на печать "Ничего" пустую облать для печати.. и |
|||
1
Рэйв
16.05.17
✎
07:11
|
хоть бы код показал,если уж понятно объяснять не твое...
|
|||
2
Рэйв
16.05.17
✎
07:12
|
телепатирую, что надо проверять на тип прежде чем делать .Выбрать()
|
|||
3
oqjawa
16.05.17
✎
07:17
|
Макет = Документы.Выхода_на_практику.ПолучитьМакет("Печать");
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Выхода_на_практику.Вид_практики, | Выхода_на_практику.Группа, | Выхода_на_практику.Дата, | Выхода_на_практику.Дата_конца_практики, | Выхода_на_практику.Дата_начала_практики, | Выхода_на_практику.ДатаИзданияПриказа, | Выхода_на_практику.Курс, | Выхода_на_практику.Номер, | Выхода_на_практику.НомерПриказа, | Выхода_на_практику.Специальность, | Выхода_на_практику.Студенты.( | НомерСтроки, | ФИО_студента, | Место_прохождения_практики, | Договор, | База, | Основа_обучения | ) |ИЗ | Документ.Выхода_на_практику КАК Выхода_на_практику |ГДЕ | Выхода_на_практику.Ссылка В(&Ссылка) | И Выхода_на_практику.Студенты.База = Значение(Перечисление.База_классов.классов_9) ИЛИ Выхода_на_практику.Студенты.База = Значение(Перечисление.База_классов.ПустаяСсылка) | И Выхода_на_практику.Студенты.Основа_обучения = Значение(Перечисление.Основа_обучения.бюджетник)"; Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьСтудентыШапка = Макет.ПолучитьОбласть("СтудентыШапка"); ОбластьСтуденты = Макет.ПолучитьОбласть("Студенты"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; КонецЦикла; ОбластьШапка.Параметры.Заполнить(Выборка); ОбластьШапка.Параметры.Дата_Начала_Практики = Формат(Выборка.Дата_начала_практики, "ДЛФ=D"); ОбластьШапка.Параметры.Дата_Конца_Практики = Формат(Выборка.Дата_конца_практики, "ДЛФ=D"); Выборка.Следующий(); ВыборкаСтуденты = Выборка.Студенты.Выбрать(); Если ВыборкаСтуденты.Количество()>0 Тогда ТабДок.Вывести(ОбластьШапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьСтудентыШапка); иначе Выводить = ложь; КонецЕсли; Пока ВыборкаСтуденты.Следующий() Цикл ОбластьСтуденты.Параметры.Заполнить(ВыборкаСтуденты); ТабДок.Вывести(ОбластьСтуденты, ВыборкаСтуденты.Уровень()); КонецЦикла; КонецПроцедуры |
|||
4
oqjawa
16.05.17
✎
07:18
|
|ГДЕ
Выхода_на_практику.Студенты.База = Значение(Перечисление.База_классов.классов_9) |
|||
5
Рэйв
16.05.17
✎
07:18
|
(3)уже прогресс. На какое именно .Выбрать ругается?
|
|||
6
oqjawa
16.05.17
✎
07:19
|
если я выбераю в документе другое значение
то он ругается, а мне нужно что бы он не ругался а просто не выводил на печать эту информацию так можно? |
|||
7
oqjawa
16.05.17
✎
07:19
|
если я в документе поставлю не классов_9 а допустим классов_11
то всё... колом |
|||
8
oqjawa
16.05.17
✎
07:20
|
а я хочу чтобы он просто не выводил тогда на печать.. или выводил но пустую форму так можно?
както отменить выборку.. чтоли... типо ВЫборка = ложь)) или как |
|||
9
Рэйв
16.05.17
✎
07:21
|
(6)Переделай запрос на запрос к таб. части Студенты
|
|||
10
Рэйв
16.05.17
✎
07:21
|
к чему тебе запрос к ссылке если тебе нужна таб часть?
|
|||
11
catena
16.05.17
✎
07:28
|
ЕСЛИ Выборка.Следующий() ТОГДА...
|
|||
12
oqjawa
16.05.17
✎
07:40
|
Cetena Ваш вариант мне нравится, только я видимо не могу адаптировать его в моём коде.. подскажите в каком месте это вставить пожалуйста
|
|||
13
oqjawa
16.05.17
✎
07:49
|
Рейв, тоесть переделать запрос полностью к табличной части?? мне тоже так сказали.. а что изменится? разве ошибка пропадёт?
|
|||
14
catena
16.05.17
✎
07:52
|
(12)В том месте, где у вас просто
Выборка.Следующий(); |
|||
15
catena
16.05.17
✎
07:54
|
(13)Выборка к табличной части при пустой табличной части (или при пустой выборке по табличной части из-за наложенных условий на табличную часть), будет пустая.
|
|||
16
oqjawa
16.05.17
✎
08:01
|
а где писать КонецЕсли;
|
|||
17
catena
16.05.17
✎
08:03
|
(16)В конце логической цепочки действий, которая должна выполнятся при условии, озвученном в Если.
|
|||
18
oqjawa
16.05.17
✎
08:08
|
ЕСЛИ Выборка.Следующий() Тогда
ВыборкаСтуденты = Выборка.Студенты.Выбрать(); Если ВыборкаСтуденты.Количество()>0 Тогда ТабДок.Вывести(ОбластьШапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьСтудентыШапка); иначе Выводить = ложь; КонецЕсли; Пока ВыборкаСтуденты.Следующий() Цикл ОбластьСтуденты.Параметры.Заполнить(ВыборкаСтуденты); ТабДок.Вывести(ОбластьСтуденты, ВыборкаСтуденты.Уровень()); КонецЦикла; КонецЕсли; |
|||
19
oqjawa
16.05.17
✎
08:09
|
теперь вообще ничего не выводит и не важно какое там значение пустое, нужное или не нужно
|
|||
20
oqjawa
16.05.17
✎
08:09
|
зато не ругается... (
|
|||
21
oqjawa
16.05.17
✎
08:10
|
как сделать так чтобы он выводил только указаное значение реквизита? а если его в выборке нет то тогда ничего
|
|||
22
arsik
гуру
16.05.17
✎
08:14
|
(19) Поменяй
ВыборкаСтуденты = Выборка.Студенты.Выбрать(); на ВыборкаСтуденты = Выборка.Выбрать(); |
|||
23
catena
16.05.17
✎
08:16
|
(21)У меня дочка в 7 классе учится. Занимается робототехникой. Вот когда она начинает что-то писать без блок-схемы, я ее шоколада лишаю.
|
|||
24
oqjawa
16.05.17
✎
08:19
|
поменял ничего не произошло.. всёравно пусто
|
|||
25
oqjawa
16.05.17
✎
08:20
|
я тоже себя шоколада лишу..
|
|||
26
vadim777
16.05.17
✎
08:37
|
(23) Ты ее учишь рисованию или программированию?
|
|||
27
catena
16.05.17
✎
08:39
|
(26)Я ее учу думать структурировано. А тут первое время без бумажки никак.
|
|||
28
catena
16.05.17
✎
08:42
|
+(27)Вот у меня первая игрушка была ПК "Львов-01". Там ввод кода был линейный, только вперед. Для редактирования вызывалась конкретная строчка. А перенести блок кода из одного места в другой - гемор на полдня. Так что, приходилось каждый символ наперед продумывать.
|
|||
29
dezss
16.05.17
✎
09:19
|
(23) +100500)))
в (0) какой-то бред сивой кобылы Выборка.Следующий(); вызывается после того, как в цикле уже перебрали все значения. Причем в этом цикле делались только Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; Получается, что сперва мы выведем кучу разделителей страниц, а потом уже будем делать что-то еще. Тебе надо полностью пересмотреть свой код. В том числе и сам запрос. Делай его к тч, как советовали в (9). И первый бредовый цикл убери. Посмотришь что выводит, тогда и определяй где нужны разделители. |
|||
30
dezss
16.05.17
✎
09:21
|
(29) поправка. запрос не в (0), а в (3)
|
|||
31
Ёпрст
16.05.17
✎
09:40
|
(0)
//Выборка.Следующий(); ВыборкаСтуденты = Выборка.Студенты.Выбрать(); больше ничего не надо |
|||
32
h-sp
16.05.17
✎
09:42
|
(31) да у него уже нет выборки. он ее прошел всю
Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; КонецЦикла; |
|||
33
Ёпрст
16.05.17
✎
09:43
|
хотя не, весь код в топку.
|
|||
34
Ёпрст
16.05.17
✎
09:44
|
(32) сразу не увидел. форматирование страдает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |