Обращение через три точки

1. user1326147 30.01.24 11:28 Сейчас в теме
В табличной части документа, хочу заполнить все поля номенклатуры, при изменении, чтобы взять текущую ссылку на номенклатуру, обращаюсь на клиенте :
Элементы.ТабличнаяЧасть1.ТекущиеДанные.Наименование 
через три точки, я правильно понимаю, что на клиенте нет обращения к серверу и у меня нет другой возможности получить эту ссылку? Вопрос возник из-за трех точек, на которые все ругаются.
По теме из базы знаний
Найденные решения
3. Anton_new01 30.01.24 12:04 Сейчас в теме
(1)
Вопрос возник из-за трех точек, на которые все ругаются.


почему обращаться через точку - считается плохим тоном?
потому что подразумевается, что вы по Ссылке ( которая хранится в переменной) - пытаетесь тем самым обратиться к реквизитам этой ссылки.
и система в "тихаря" получает объект (что достаточно ресурсоемко) и далее тянет нужный реквизит объекта.

Для примера:
ТекущаяДата = ДокументСсылка.Дата;
Наименование = ДокументСсылка.Наименование;
ВходящийНомер = ДокументСсылка.ВходящийНомер;


Равносильно коду:
ДокументОбъект1 = ДокументСсылка.ПолучитьОбъект();
ТекущаяДата = ДокументОбъект1.Дата;
ДокументОбъект2 = ДокументСсылка.ПолучитьОбъект();
Наименование = ДокументОбъект2.Наименование;
ДокументОбъект3 = ДокументСсылка.ПолучитьОбъект();
ВходящийНомер = ДокументОбъект3.ВходящийНомер;

т.е. самая ресурсоемкая операция получитьОбъект() - использована 3 раза! когда легко можно было использовать 1 раз.
А если запросом, то и вообще без нее. Тут ситуативно, если вы работаете непосредственно с этим Объектом, то работаете через получитьОбъект(), а иначе через ОбщегоНазначения.ЗначенияРеквизитаОбъекта(...)

не считая возможных ошибок, в слествии отсутсвия чего либо...

если же вы этого действия не делаете, то все норм.

Судя по вашему коду вы оперируете структурой данных элементов формы. И тут ничего подобного не происходит. никакой объект с БД не тянется.
user1326147; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Anton_new01 30.01.24 12:04 Сейчас в теме
(1)
Вопрос возник из-за трех точек, на которые все ругаются.


почему обращаться через точку - считается плохим тоном?
потому что подразумевается, что вы по Ссылке ( которая хранится в переменной) - пытаетесь тем самым обратиться к реквизитам этой ссылки.
и система в "тихаря" получает объект (что достаточно ресурсоемко) и далее тянет нужный реквизит объекта.

Для примера:
ТекущаяДата = ДокументСсылка.Дата;
Наименование = ДокументСсылка.Наименование;
ВходящийНомер = ДокументСсылка.ВходящийНомер;


Равносильно коду:
ДокументОбъект1 = ДокументСсылка.ПолучитьОбъект();
ТекущаяДата = ДокументОбъект1.Дата;
ДокументОбъект2 = ДокументСсылка.ПолучитьОбъект();
Наименование = ДокументОбъект2.Наименование;
ДокументОбъект3 = ДокументСсылка.ПолучитьОбъект();
ВходящийНомер = ДокументОбъект3.ВходящийНомер;

т.е. самая ресурсоемкая операция получитьОбъект() - использована 3 раза! когда легко можно было использовать 1 раз.
А если запросом, то и вообще без нее. Тут ситуативно, если вы работаете непосредственно с этим Объектом, то работаете через получитьОбъект(), а иначе через ОбщегоНазначения.ЗначенияРеквизитаОбъекта(...)

не считая возможных ошибок, в слествии отсутсвия чего либо...

если же вы этого действия не делаете, то все норм.

Судя по вашему коду вы оперируете структурой данных элементов формы. И тут ничего подобного не происходит. никакой объект с БД не тянется.
user1326147; +1 Ответить
4. Sashares 34 30.01.24 12:21 Сейчас в теме
(3)
Равносильно коду:
...
т.е. самая ресурсоемкая операция получитьОбъект() - использована 3 раза! когда легко можно было использовать 1 раз.

Позанудствую. Не равносильно.
Это немного не так работает. При первом обращении через точку Объект считывается в память (объектный кеш) весь, но один раз. При последующем обращении остальных реквизитов значения берутся из этого кеша. Объект снова не считывается.
Сделайте замер производительности, увидите, что в вашем коде:
ТекущаяДата = ДокументСсылка.Дата;
Наименование = ДокументСсылка.Наименование;
ВходящийНомер = ДокументСсылка.ВходящийНомер;


Относительно долго будет получаться только дата, а наименование и номер - быстро.
user1326147; +1 Ответить
2. Ferth 30.01.24 11:44 Сейчас в теме
Обращение "Элементы.ТабличнаяЧасть1.ТекущиеДанные" довольно стандартно. Можно посмотреть и в типовых документах. Потом как правило проверяются есть ли вообще эти ТекущиеДанные или они равны Неопределено. И потом уже можно обращаться к колонке "Наименование"
user1326147; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот