Имя: Пароль:
1C
1С v8
Что за тип ВыборкаСсылка?
0 DirecTwiX
 
25.12.12
19:20
Как-то раз получил ошибку в коде:
Выборка = Доки.АБС.Выбрать();
Выборка.Следующий();
ДокОб=Выборка.ПолучитьОбъект();

С тех пор всё время пишу
ДокОб=Выборка.Ссылка.ПолучитьОбъект();

Чтобы наверняка) Может когда-то можно это не писать?)
1 zak555
 
25.12.12
19:21
используй запросы
2 zak555
 
25.12.12
19:21
*не морочь себе голову "выборкой"
3 DirecTwiX
 
25.12.12
19:23
Использую по возможности)
Сути дела не меняет) Там всё равно будет ВыборкаСсылка)
4 Reset
 
25.12.12
19:24
(0) Оба варианта идентичны
5 zak555
 
25.12.12
19:25
ДокументВыборка.<Имя документа> (DocumentSelection.<Имя документа>)
ДокументВыборка.<Имя документа> (DocumentSelection.<Имя документа>)
Свойства:

<Имя общего реквизита> (<Common attribute name>)
<Имя реквизита> (<Attribute name>)
<Имя табличной части> (<Tabular section name>)
ВерсияДанных (DataVersion)
Дата (Date)
Номер (Number)
ПометкаУдаления (DeletionMark)
Проведен (Posted)
Ссылка (Ref)

Методы:

ПолучитьОбъект (GetObject)
Следующий (Next)

Описание:

Объект этого типа возвращается методом Выбрать у объекта типа ДокументМенеджер.<Имя документа> и представляет собой специализированный способ перебора документов.
Обход документов выполняется системой динамически. Это означает, что использование выборки не считывает все документы сразу, а выбирает их порциями из базы данных. Такой подход позволяет достаточно быстро обходить с помощью выборки большие списки документов и не загружает в память всех элементов выборки.
Важно! Данному объекту доступны все свойства объекта ДокументСсылка.<Имя документа>.

Доступность:

Сервер, толстый клиент, внешнее соединение.
См. также:

ДокументМенеджер, метод Выбрать
ДокументОбъект
ДокументСсылка
ЖурналДокументовМенеджер, метод Выбрать
6 zak555
 
25.12.12
19:26
(4) лишнее обращение к объекту через ссылку
7 zak555
 
25.12.12
19:26
+ (6)

ДокументВыборка.<Имя документа>.ПолучитьОбъект (DocumentSelection.<Имя документа>.GetObject)
ДокументВыборка.<Имя документа> (DocumentSelection.<Имя документа>)
ПолучитьОбъект (GetObject)
Синтаксис:

ПолучитьОбъект()
Возвращаемое значение:

Тип: ДокументОбъект; Неопределено.
Неопределено - объекта в базе нет (например, при обмене данными или после непосредственного удаления объекта, на который есть ссылки).
Описание:

Получает объект для чтения, изменения, добавления и удаления документа, на котором в данный момент спозиционирована выборка.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

ДокОбразец = Неопределено;
ДокВыборка = Документы.СписаниеТоваров.Выбрать(НачДата, КонДата);
Пока ДокВыборка.Следующий() Цикл
   Если ДокВыборка.Проведен Тогда
       Если ДокВыборка.Организация = Организация Тогда
           ДокОбразец = ДокВыборка.ПолучитьОбъект();
           Прервать;
       КонецЕсли;
   КонецЕсли;
КонецЦикла;
8 Reset
 
25.12.12
19:27
(6) Нет
9 DirecTwiX
 
25.12.12
19:27
(4) (6) Да, сейчас тоже проверил. Значит раньше где-то не там косяк был))
Спасибо!
10 Reset
 
25.12.12
19:27
(6) Ну то есть лишнее только визуально, "длиннее" оператор
11 zak555
 
25.12.12
19:28
(8) ты считаешь, что оптимальнее писать

ДокОб=Выборка.Ссылка.ПолучитьОбъект();

чем

ДокОб=Выборка.ПолучитьОбъект();


?
12 Reset
 
25.12.12
19:31
(11) Нет, я бы использовал второй вариант, т.к. короче
13 Reset
 
25.12.12
19:32
(11) И "оптимальнее" - это ты мне приписываешь, я сказал (4)
14 zak555
 
25.12.12
19:50
(12) т.е. только из-за того, что короче писать ?
15 Reset
 
25.12.12
20:21
(14) Да. короче, читабельней.

При Выборка.Ссылка не происходит излишнее чтение объекта, т.к. "ссылка" уже считана (выборка спозиционирована).
Напротив, Выборка.Ссылка.Реквизит - существенно хуже чем Выборка.Реквизит, тут происходит именно (6)

Или я ошибаюсь?
16 kiruha
 
25.12.12
20:26
(0)
П-ть
Выборка происходит динамически
Т.е. например если по основному представлению -
кто то в базе что то сделал, поменял наименование -
можно легко пропустить или дважды прочесть, или наткнуться на уже удаленный
Отсюда и редкая ошибка - ПолучитьОбъект
17 kiruha
 
25.12.12
20:27
Короче если алгоритм важный - не используй выборку - только запрос