|
Помогите разобрать часть программного кода | ☑ | ||
---|---|---|---|---|
0
vfrcbv
25.04.16
✎
11:13
|
Добрый день.
Есть кусочек кода выгрузки документы по COM-соединению: .... УИДоснование=ОбъектОБмена.Ссылка.УникальныйИдентификатор(); УИДстр=Строка(УИДоснование); //строковое представление УИД ДокПоступленияВН=Соединение.Документы.ПоступлениеТоваровУслуг; УидВН=Соединение.NewObject("УникальныйИдентификатор",УИДстр); ТекСсылка=ДокПоступленияВН.ПолучитьСсылку(УидВН); ТекСообщение=Соединение.ЗначениеВСтрокуВнутр(ТекСсылка); ОбъектВН=ТекСсылка.ПолучитьОбъект(); ТекСообщение=Соединение.ЗначениеВСтрокуВнутр(ОбъектВН); ЗначН="{""U""}"; //что это за значение? Если ТекСообщение=ЗначН Тогда ФлагСозданияДокумента=Истина; Иначе ФлагСозданияДокумента=Ложь; КонецЕсли; .... Помогите разобрать непонятные моменты: 1. NewObject, в синтакс-помощнике описан только 1 параметр, а на практике используется два?!?! 2. Что означает строковое представление "{""U""}"? 3. В чем смысл этого программного кода: ТекСсылка=ДокПоступленияВН.ПолучитьСсылку(УидВН); ТекСообщение=Соединение.ЗначениеВСтрокуВнутр(ТекСсылка); ОбъектВН=ТекСсылка.ПолучитьОбъект(); ТекСообщение=Соединение.ЗначениеВСтрокуВнутр(ОбъектВН); |
|||
1
Asmody
25.04.16
✎
11:18
|
(0) 1. Второй и следующие параметры — будут переданы как параметры конструктора.
2. Неопределено 3. А тут какой-то баг, очевидно. |
|||
2
zenik
25.04.16
✎
11:19
|
УидВН=Соединение.NewObject("УникальныйИдентификатор",УИДстр);
Если читать для для обычной базы: УидВН = Новый УникальныйИдентификатор(УИДстр); т.е. вторым параметром передается строка в конструктор идентификатора. |
|||
3
ptiz
25.04.16
✎
11:23
|
3. Если .ПолучитьОбъект() вернуло значение Неопределено - значит, документа не существует в базе.
|
|||
4
vfrcbv
25.04.16
✎
11:28
|
(3)
ТекСсылка=ДокПоступленияВН.ПолучитьСсылку(УидВН); ТекСообщение=Соединение.ЗначениеВСтрокуВнутр(ТекСсылка); //Если это значение равно "{""U""}", можно с 100% вероятностью утверждать, что в базе документа нет? ОбъектВН=ТекСсылка.ПолучитьОбъект(); ТекСообщение=Соединение.ЗначениеВСтрокуВнутр(ОбъектВН); |
|||
5
aleks_default
25.04.16
✎
11:39
|
(4) Нет. Этот метод только создает ссылку по типу документа и переданному Уиду.(уид типа документа + твой уид) А наличие документа по этой ссылке проверяется ПолучитьОбъект().
|
|||
6
aleks_default
25.04.16
✎
11:52
|
Уид типа документа - условное название. Дело в том что таблицы одного типа документов в разных базах могут иметь разные идентификаторы. Даже если эти базы в одном РИБ. Даже если эта база - копия твоей базы, но после реструктуризации допустим, она может поменять идентификатор таблицы типа документов. При этом уиды самого документа останутся одинаковыми. Поэтому так написан твой код. Передается уид, потом создается ссылка на этот тип документа в этой базе, а потом проверяется наличие этого документа в этой базе.
Короче я не силен в специализированных терминах. Если тут есть специалисты пусть поправят. |
|||
7
vfrcbv
25.04.16
✎
12:07
|
(6) спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |