|
Проверка объекта, полученного по Уникальному идентификатору | ☑ | ||
---|---|---|---|---|
0
CAPITALIST
29.04.16
✎
06:58
|
Итак есть строковый уникальный идентификатор. По нему ищу нужный документ.
Как проверить, что документ найден? Пример: GUID = "71f80ea7-1979-11e1-8be6-001b24a30168"; ГУИД_Документа = Новый УникальныйИдентификатор(СокрЛП(GUID)); МойДокумент = Документы.МойДокумент.ПолучитьСсылку(ГУИД_Документа); Значение переменной МойДокумент будет равно <Объект не найден> (17742:8be6001b24a3016811e1197971f80ea7) Проверка на ЗначениеЗаполено будет Истина. МойДокумент.Пустая() будет Ложь. Сравнение с Неопределено будет Ложь. Как понять что док не найден? |
|||
1
sapphire
29.04.16
✎
07:05
|
(0)
GUID = "71f80ea7-1979-11e1-8be6-001b24a30168"; ГУИД_Документа = Новый УникальныйИдентификатор(СокрЛП(GUID)); МойДокумент = Документы.МойДокумент.ПолучитьСсылку(ГУИД_Документа); Запрос=Новый Запрос(); Запрос.УстановитьПараметр("Ссылка",МойДокумент.Ссылка); Запрос.Текст="SELECT TOP 1 Ссылка FROM Документ.МойДокумент WHERE Ссылка=&Ссылка"; РезультатЗапроса=Запрос.Выполнить(); ПустаяСсылка=Не РезультатЗапроса.Выбрать(); |
|||
2
ДенисЧ
29.04.16
✎
07:10
|
а если .ссылка ?
|
|||
3
sapphire
29.04.16
✎
07:12
|
GUID = "71f80ea7-1979-11e1-8be6-001b24a30168";
ГУИД_Документа = Новый УникальныйИдентификатор(СокрЛП(GUID)); МойДокумент = Документы.ПланПродаж.ПолучитьСсылку(ГУИД_Документа); Запрос=Новый Запрос(); Запрос.УстановитьПараметр("Ссылка",МойДокумент.Ссылка); Запрос.Текст="SELECT TOP 1 Ссылка FROM Документ.ПланПродаж WHERE Ссылка=&Ссылка"; РезультатЗапроса=Запрос.Выполнить(); ВыборкаРезультатЗапроса=РезультатЗапроса.Выбрать(); ПустаяСсылка=Не ВыборкаРезультатЗапроса.Следующий(); |
|||
4
sapphire
29.04.16
✎
07:12
|
(2) Не будет пустой
|
|||
5
Рэйв
29.04.16
✎
07:19
|
УИД=Новый УникальныйИдентификатор;
Ссылка=Документы.АвансовыйОтчет.ПолучитьСсылку(УИД); Об=Ссылка.ПолучитьОбъект(); Если ТипЗнч(Об)=Неопределено Тогда Сообщить("Нет в базе"); КонецЕсли; |
|||
6
sapphire
29.04.16
✎
07:20
|
(2) Она делает хитрО:
Документы.ПланПродаж.ПолучитьСсылку(ГУИД_Документа); всегда везвращает ссылку, бишь as is, а обращение к её реквизитам не приводит к повторному опросу БД. |
|||
7
sapphire
29.04.16
✎
07:20
|
(5) Да, так тоже красиво
|
|||
8
Рэйв
29.04.16
✎
07:21
|
*ТипЗнч(Об)=Тип("Неопределено")
конечно |
|||
9
sapphire
29.04.16
✎
07:22
|
(8) Тогда уж Об=неопределено :)
|
|||
10
Рэйв
29.04.16
✎
07:22
|
(9) "туда тоже можно"(С)
:-) |
|||
11
sapphire
29.04.16
✎
07:23
|
(5) Есть одно "НО", ПолучитьОбъект() может привести к блокировке таблицы.
|
|||
12
Рэйв
29.04.16
✎
07:24
|
(11)Чего вдруг? Или найдет или нет.
|
|||
13
sapphire
29.04.16
✎
07:28
|
(12) В случае, если найдет
|
|||
14
sapphire
29.04.16
✎
07:29
|
(12) + если объект заблокирован
|
|||
15
sapphire
29.04.16
✎
07:30
|
(12) Короче, не помню, но, запросом, хоть и длиннее, но правильней :)
|
|||
16
Рэйв
29.04.16
✎
07:33
|
(14)Если даже у кого-то будет открыта форма- программно объект в память возьмет без проблем. Это при записи будут проблемы если объект блокирован, а при чтении - пофигу.
|
|||
17
Рэйв
29.04.16
✎
07:33
|
а на чтение я даже не помню что блокирует документ кроме прав.
|
|||
18
hhhh
29.04.16
✎
07:42
|
(16) получитьОбъект() медленнее чем запрос. Например если в объекте 10 табличных частей по 50 строчек.
|
|||
19
CAPITALIST
29.04.16
✎
07:58
|
Благодарю, работает!))
|
|||
20
sapphire
29.04.16
✎
08:01
|
(18) Если для загрузки, то всё равно, получать объект придётся.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |