Имя: Пароль:
1C
 
Проверка объекта, полученного по Уникальному идентификатору
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) Если для загрузки, то всё равно, получать объект придётся.