Dereferencing (разыменование)
Слово "разыменование" на английском
разыменование на context.reverso.net
dereference глаг.
комп. разыменовать; разыменовывать
прогр. получать значения переменных по указателю;
(Мультитран)
dereference
(programming)
To access the thing to which a pointer points, i.e. to follow the pointer. E.g. in C, the declarations
int i; int *p = &i;
declare i as an integer and p as a pointer to integer. p is initialised to point at i ("&i" is the address of i - the inverse of "*"). The expression *p dereferences p to yield i as an lvalue, i.e. something which can appear either on the left of an assignment or anywhere an integer expression is valid. Thus
*p = 17;
would set i to 17. *p++ is not the same as i++ however since it is parsed as *(p++), i.e. increment p (which would be an invalid thing to do if it was pointing to a single int, as in this example) then dereference p's old value.
The C operator "->" also dereferences its left hand argument which is assumed to point to a structure or union of which the right hand argument is a member.
At first sight the word "dereference" might be thought to mean "to cause to stop referring" but its meaning is well established in jargon.
This article is provided by FOLDOC - Free Online Dictionary of Computing (foldoc.org)
https://encyclopedia2.thefreedictionary.com/dereference
Про "разыменование", про планы выполнения запросов в 1С - человек показывает "кухню" (inner workings)
https://infostart.ru/1c/articles/805991/
Николай Кузнецов (kuzyara) Рейтинг: 1735
Обращение к полям таблицы через точку [Док.Номенклатура.Комплект] называется операцией разыменования ссылочного поля. Программисту 1С важно понимать, что даже самый маленький запрос может быть интерпретирован в 7-этажного монстра.
По мотивам //infostart.ru/public/165456/ ...
Разыменование ссылочных полей - то ли допускается, то ли рекомендуется (ИТС).
https://its.1c.ru/db/metod8dev/content/2590/hdoc
4. Разыменование ссылочных полей
В 1С:Предприятии 8 допускается обращение к свойствам объектов через одну или несколько точек, например, «Номенклатура.Поставщик.Страна». Это позволяет значительно упростить написание запросов. Рекомендуется всегда пользоваться разыменованием полей там, где это возможно, чтобы не усложнять запросы лишними конструкциями.
//обращение к свойству объекта через одну точку
ВЫБРАТЬ
Ссылка,
ЮрФизЛицоКонтрагента.ИНН,
ПодразделениеКомпании.Код
ИЗ Документ.РасходныйКассовыйОрдер
//обращение к свойствам объектов через несколько точек
ВЫБРАТЬ
Ссылка,
Ответственный.ОсновнойБанковскийСчет.Банк.КоррСчет
ИЗ Документ.АвансовыйОтчет
РСА Их авансовых отчетов получить корсчета банков? Лавров ругался про таких.
"Разыменование ссылочных полей составного типа в языке запросов" - надо использовать аккуратно. Для составных типов по ссылкам надо выбирать ТОЛЬКО НУЖНЫЕ таблицы
https://its.1c.ru/db/v8std/content/654/hdoc
2.3. При необходимости следует жертвовать компактностью и универсальностью кода ради производительности:
- Как правило, для выполнения конкретного запроса в данных условиях не нужны все возможные типы данной ссылки. В этом случае, следует ограничить количество возможных типов при помощи функции ВЫРАЗИТЬ.
- Если данный запрос является универсальным и используется в нескольких разных ситуациях (где типы ссылки могут быть разными), то можно формировать запрос динамически, подставляя в функцию ВЫРАЗИТЬ тот тип, который необходим при данных условиях.
Это увеличит объем исходного кода и, возможно, сделает его менее универсальным, но может существенно повысить производительность и стабильность работы запроса.
Например, неправильно:
Запрос.Текст = "ВЫБРАТЬ
| Продажи.Регистратор.Номер,
| Продажи.Регистратор.Дата,
| Продажи.Контрагент,
| Продажи.Количество,
| Продажи.Стоимость
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ ...
В данном запросе используется обращение к реквизитам регистратора. Регистратор является полем составного типа, которое может принимать значения ссылки на один из 56 видов документов.
SQL-текст этого запроса будет включать 56 левых соединений с таблицами документов. Это может привести к серьезным проблемам производительности при выполнении запроса.
Правильно:
Для решения данной конкретной задачи нет необходимости соединяться со всеми 56 видами документов. Условия запроса таковы, что при его выполнении будут выбраны только движения документов РеализацияТоваровУслуг и ЗаказыПокупателя. В этом случае можно значительно ускорить работу запроса, ограничив количество соединений при помощи функции ВЫРАЗИТЬ().
Запрос.Текст = "ВЫБРАТЬ
| ВЫБОР
| КОГДА Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Номер
| КОГДА Продажи.Регистратор ССЫЛКА Документ.ЗаказПокупателя
| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ЗаказПокупателя).Номер
| КОНЕЦ КАК Номер,
| ВЫБОР
| КОГДА Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Дата
| КОГДА Продажи.Регистратор ССЫЛКА Документ.ЗаказПокупателя
| ТОГДА ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.ЗаказПокупателя).Дата
| КОНЕЦ КАК Дата,
| Продажи.Контрагент,
| Продажи.Количество,
| Продажи.Стоимость
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| ИЛИ Продажи.Регистратор ССЫЛКА Документ.ЗаказыПокупателя";
Этот запрос является более громоздким и, возможно, менее универсальным (он не будет правильно работать для других ситуаций - когда возможны другие значения типов регистратора). Однако, при его выполнении будет сформирован SQL запрос, который будет содержать всего два соединения с таблицами документов. Такой запрос будет работать значительно быстрее и стабильнее, чем запрос в его первоначальном виде.
Две основные операции с указателями — присвоение и разыменование
https://otvet.mail.ru/question/173580897
Chaz Ashley
Языки программирования, в которых предусмотрен тип указателей, содержат, как правило, две основные операции над ними: присваивание и разыменование. Первая из этих операций присваивает указателю некоторый адрес. Вторая служит для обращения к значению в памяти, на которое указывает указатель. Разыменование может быть явным и неявным, в большинстве современных языков программирования разыменование происходит только при явном указании.
РСА:
Разыменование — обращение к значению, на которое указывает указатель (переменная). Что тогда "неявное разыменование"?
Переменная и указатель — какая разница?
- Переменная - ссылка на значение, хранящееся ГДЕ-ТО в памяти.
- Указатель - это объект (переменная?), значение которого есть адрес переменной, константы, других указателей или функций.
Самое оптимальное применение для указателей - перебор значений массивов (без индексов)? Смотри https://metanit.com/c/tutorial/5.5.php