|
Помогите с условием | ☑ | ||
---|---|---|---|---|
0
malder
15.01.12
✎
19:04
|
Процедура ПолучитьСвойстваДокумента()
Запрос = Новый Запрос(); ТекстЗапроса = "ВЫБРАТЬ | СвойстваОбъектов.Наименование КАК НаименованиеСвойства, | ВложенныйЗапрос.Объект, | ВложенныйЗапрос.Свойство, | ВложенныйЗапрос.Значение |ИЗ | ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект, | ЗначенияСвойствОбъектов.Свойство КАК Свойство, | ЗначенияСвойствОбъектов.Значение КАК Значение | ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ГДЕ | ЗначенияСвойствОбъектов.Объект = &Объект) КАК ВложенныйЗапрос | ПО СвойстваОбъектов.Ссылка = ВложенныйЗапрос.Свойство |ГДЕ | СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)"; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("Объект", Документ); ЗначенияСвойств = Запрос.Выполнить().Выгрузить(); Для Каждого мРеквизит ИЗ Метаданные().Реквизиты Цикл ИмяСвойства = мРеквизит.Имя; Если мРеквизит.Имя = "Документ" Или мРеквизит.Имя = "СсылкаНаОбъект" Тогда Продолжить; КонецЕсли; НайденнаяСтрока = ЗначенияСвойств.Найти(ИмяСвойства, "НаименованиеСвойства"); Если НайденнаяСтрока = Неопределено Тогда Сообщить("Не найдено свойство документа " + ИмяСвойства); УстановитьСвойство(ИмяСвойства); Иначе Если ЗначениеЗаполнено(Документ) Тогда //Если ИмяСвойства = "ттнНомерТТН" И ЗначениеЗаполнено(ЭтотОбъект[мРеквизит.Имя]) Тогда // Продолжить; //КонецЕсли; ЭтотОбъект[мРеквизит.Имя] = НайденнаяСтрока.Значение; Если НЕ РольДоступна("ПолныеПрава") Тогда ЭлементыФормы[мРеквизит.Имя].Доступность = НЕ НайденнаяСтрока.Значение; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры Если у пользователя неполные права то ошибку пишет {Форма.Форма.Форма(80)}: Преобразование значения к типу Булево не может быть выполнено ЭлементыФормы[мРеквизит.Имя].Доступность = НЕ НайденнаяСтрока.Значение; Если полные то нормально печаеться, помогите пожалуйста разобраться в чем пробелемма! |
|||
1
Rie
15.01.12
✎
19:07
|
(0) У тебя там левое соединение.
Поэтому Значение может быть и NULL, а не только Булево. |
|||
2
malder
15.01.12
✎
19:08
|
Так и есть NULL получаю значение !
|
|||
3
malder
15.01.12
✎
19:10
|
Так а условие как правильно поставить?
Если ЗначениеЗаполнено(Документ) Тогда //Если ИмяСвойства = "ттнНомерТТН" И ЗначениеЗаполнено(ЭтотОбъект[мРеквизит.Имя]) Тогда // Продолжить; //КонецЕсли; ЭтотОбъект[мРеквизит.Имя] = НайденнаяСтрока.Значение; Если НЕ РольДоступна("ПолныеПрава") Тогда ЭлементыФормы[мРеквизит.Имя].Доступность = НЕ НайденнаяСтрока.Значение; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
4
malder
15.01.12
✎
21:00
|
Вот условие втулил
Если НайденнаяСтрока.Значение = NULL Тогда НайденнаяСтрока.Значение = Ложь; КонецЕсли; |
|||
5
malder
15.01.12
✎
21:01
|
Получилось
ИмяСвойства = мРеквизит.Имя; НайденнаяСтрока = ЗначенияСвойств.Найти(ИмяСвойства, "НаименованиеСвойства"); Если НайденнаяСтрока.Значение = NULL Тогда НайденнаяСтрока.Значение = Ложь; КонецЕсли; Если НайденнаяСтрока = Неопределено Тогда Сообщить("Не найдено свойство документа " + ИмяСвойства); УстановитьСвойство(ИмяСвойства); Иначе Если ЗначениеЗаполнено(Документ) Тогда //Если ИмяСвойства = "ттнНомерТТН" И ЗначениеЗаполнено(ЭтотОбъект[мРеквизит.Имя]) Тогда // Продолжить; //КонецЕсли; ЭтотОбъект[мРеквизит.Имя] = НайденнаяСтрока.Значение; Если НЕ РольДоступна("ПолныеПрава") Тогда ЭлементыФормы[мРеквизит.Имя].Доступность = НЕ НайденнаяСтрока.Значение; КонецЕсли; КонецЕсли; |
|||
6
Rie
15.01.12
✎
21:03
|
(3) В самом запросе напиши
ВЫБРАТЬ ... ЕСТЬNULL(ВложенныйЗапрос.Значение,ЛОЖЬ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |