Что такое значение объекта в 1с
Перейти к содержимому

Что такое значение объекта в 1с

  • автор:

ЗначениеРеквизитаОбъекта (БСП)

  • Значение реквизита объекта. Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект.

    // Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. // Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект // для быстрого чтения отдельных реквизитов объекта из базы данных. // // Если необходимо зачитать реквизит независимо от прав текущего пользователя, // то следует использовать предварительный переход в привилегированный режим. // // Параметры: // Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. // - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. // ИмяРеквизита - Строка - имя получаемого реквизита. // ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; // если есть ограничение на уровне записей, то возвращается Неопределено; // если нет прав для работы с таблицей, то возникнет исключение; // если Ложь, то возникнет исключение при отсутствии прав на таблицу // или любой из реквизитов. // // Возвращаемое значение: // Произвольный - зависит от типа значения прочитанного реквизита. // - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено; // - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), // то возвращается Неопределено. // Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт Если ПустаяСтрока(ИмяРеквизита) Тогда ВызватьИсключение НСтр("ru = 'Неверный второй параметр ИмяРеквизита в функции ОбщегоНазначения.ЗначениеРеквизитаОбъекта: |- Имя реквизита должно быть заполнено'"); КонецЕсли; Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные); Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")]; КонецФункции /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////
    // Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. // Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект // для быстрого чтения отдельных реквизитов объекта из базы данных. // // Если необходимо зачитать реквизит независимо от прав текущего пользователя, // то следует использовать предварительный переход в привилегированный режим. // // Параметры: // Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. // - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. // ИмяРеквизита - Строка - имя получаемого реквизита. // ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя; // если есть ограничение на уровне записей, то возвращается Неопределено; // если нет прав для работы с таблицей, то возникнет исключение; // если Ложь, то возникнет исключение при отсутствии прав на таблицу // или любой из реквизитов. // // Возвращаемое значение: // Произвольный - зависит от типа значения прочитанного реквизита. // - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено; // - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), // то возвращается Неопределено. // Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт Если ПустаяСтрока(ИмяРеквизита) Тогда ВызватьИсключение НСтр("ru = 'Неверный второй параметр ИмяРеквизита в функции ОбщегоНазначения.ЗначениеРеквизитаОбъекта: |- Имя реквизита должно быть заполнено'"); КонецЕсли; Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные); Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")]; КонецФункции /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////

    1С 8.3 : РеквизитФормыВЗначение() и ДанныеФормыВзначение() — Описание и примеры использования

    Распечатать

    gvk2009 подробно и доходчиво описал разницу методов, за что ему огромное спасибо:

    В Синтаксис-Помощнике очень скупо написано о процедуре ДанныеФормыВЗначение(), чуть побольше — о РеквизитФормыВЗначение(). И совсем нет примеров использования. Попробуем с этим разобраться.

    РеквизитФормыВЗначение()

    Является методом управляемой формы, компилируется только &НаСервере, контекст формы является для него необходимым, поэтому компиляция &НаСервереБезКонтекста недоступна. На клиенте не работает, поскольку в результате получаем прикладной объект.

    Где и когда его нужно использовать?

    Метод РеквизитФормыВЗначение() необходим, если требуется из модуля формы вызвать стандартный метод объекта или метод (процедуру, функцию) из модуля объекта, из общего модуля.

    Этот метод будет отрабатывать с данными, взятыми из формы, т.е. еще не записанными в базу.

    Для того, чтобы измененные данные вернуть на форму, используется метод ЗначениеВРеквизитФормы().

    Вторым параметром метода РеквизитФормыВЗначение является тип значения. Это необязательный параметр. Если обрабатываемый реквизит не является составным типом, то тип будет автоматически получен из реквизита формы. Иначе генерируется исключение времени выполнения.

     // 1) 
    &НаСервере
    Процедура ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент)
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ДокОбъект.ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент);
    ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
    КонецПроцедуры


    // 2)
    &НаСервере
    Процедура ОчиститьСтрокиСПустойЦенойНаСервере()
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ДокОбъект.ОчиститьСтрокиСПустойЦеной();
    ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
    КонецПроцедуры

    //3)
    &НаСервере
    Функция ОбъектЗаполнен()
    Возврат РеквизитФормыВЗначение("Объект").ПроверитьЗаполнение();
    КонецФункции

    В указанных выше случаях метод РеквизитФормыВЗначение() похож на метод ПолучитьОбъект(). Разница в том, что первый получает объект, заполненный данными формы, а второй — объект с данными из базы.

    ДанныеФормыВзначение()

    В отличие от метода управляемой формы РеквизитФормыВЗначение(), процедура глобального контекста ДанныеФормыВЗначение() может работать без контекста формы, но именно поэтому, в частности, ей необходимо указывать тип конвертируемых данных.

    Обратной процедурой является ЗначениеВДанныеФормы().

     // 1) 
    &НаСервере
    // Инициализация набора констант
    НаборКонстантОбъект = ДанныеФормыВЗначение(НаборКонстант, Тип("КонстантыНабор"));
    НаборКонстантОбъект.Прочитать();
    ЗначениеВДанныеФормы(НаборКонстантОбъект, НаборКонстант);

    // 2)
    &НаСервере
    НаборФорма = Объект.Движения.РегистрУправленческий;
    Набор = ДанныеФормыВЗначение(НаборФорма, Тип("РегистрБухгалтерииНаборЗаписей.РегистрУправленческий"));
    Если Набор.Количество()=0 Тогда
    Возврат;
    КонецЕсли;
    Набор.УстановитьАктивность(НЕ Набор[0].Активность);
    ЗначениеВДанныеФормы(Набор, НаборФорма);

    В этом примере на форме отображен набор записей регистра бухгалтерии. При отработке процедуры, активность набора меняется только на форме, в базе при этом ничего не происходит. Активность у набора записей регистра в базе поменяется только после выполнения операции Записать.

     // 3) 
    &НаКлиенте
    Процедура Заполнить(Команда)
    ОснРеквизит = Объект;
    ВыполнитьНаСервереБезКонтекста(ОснРеквизит);
    КопироватьДанныеФормы(ОснРеквизит,Объект)
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ВыполнитьНаСервереБезКонтекста(ОснРеквизит)
    ОбъектЗначение = ДанныеФормыВЗначение(ОснРеквизит, Тип("ДокументОбъект.АктСверкиВзаиморасчетов"));
    //. Выполнение операций с Объектом "ОбъектЗначение"
    ЗначениеВДанныеФормы(ОбъектЗначение, ОснРеквизит);
    КонецПроцедуры

    В этом примере на клиент возвращается ОснРеквизит, содержащий измененные данные. Но его еще нужно «запихать» в отображаемую форму. Для этого используем процедуру глобального контекста КопироватьДанныеФормы().

    В большинстве случаев процедуры ДанныеФормыВзначение() и РеквизитФормыВЗначение() взаимозаменяемы. При этом РеквизитФормыВЗначение проще в использовании. Но если требуется использование &НаСервереБезКонтекста — тогда только ДанныеФормыВЗначение.

    В качестве иллюстрации взаимозаменяемости Пример 2 еще в двух вариантах:

     // ВАРИАНТ 1 
    &НаКлиенте
    Процедура Активность(Команда)

    ОснРеквизитДвижения = Объект.Движения.РегистрУправленческий;
    АктивностьНаСервереБезКонтекста(ОснРеквизитДвижения);
    КопироватьДанныеФормы(ОснРеквизитДвижения,Объект.Движения.РегистрУправленческий);

    КонецПроцедуры // Активность()

    &НаСервереБезКонтекста
    Процедура АктивностьНаСервереБезКонтекста(ОснРеквизитДвижения)

    Набор = ДанныеФормыВЗначение(ОснРеквизитДвижения, Тип("РегистрБухгалтерииНаборЗаписей.РегистрУправленческий"));
    Если Набор.Количество()=0 Тогда
    Возврат;
    КонецЕсли;
    Набор.УстановитьАктивность(НЕ Набор[0].Активность);
    ЗначениеВДанныеФормы(Набор, ОснРеквизитДвижения);

    КонецПроцедуры // АктивностьНаСервереБезКонтекста()

    // ВАРИАНТ 2
    &НаСервере
    Процедура АктивностьНаСервере()

    НаборФорма = РеквизитФормыВЗначение("Объект");
    Набор = НаборФорма.Движения.РегистрУправленческий;

    Если Набор.Количество()=0 Тогда
    Возврат;
    КонецЕсли;

    Набор.УстановитьАктивность(НЕ Набор[0].Активность);
    ЗначениеВРеквизитФормы(НаборФорма, "Объект");

    КонецПроцедуры // АктивностьНаСервере()

    Разместил: E_Migachev Версии: | 8.2 УП | 8.3 | Дата: 20.08.2014 Прочитано: 115328

    Распечатать

    Возможно, вас также заинтересует

    Похожие FAQ

    Как заполнить табличную часть формы программно? 8
    Нужно по кнопке Заполнить — сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
    Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C: Enterprise Development Tools 52
    И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools — это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Google maps : вывод точек на карту и режим панорамы 9
    В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора База 1С при запуске уходит в дамп и вылетает 1
    В последнее время частенько обращаются пользователи у которых после замены или ремонта компьютера 1С не запускается, а точнее при открытии уходит в dump и вылетает. Как правило, решение одно: Отключить аппаратное ускорение видеокарты В Window Посмотреть все результаты поиска похожих

    Еще в этой же категории

    Как заполнить табличную часть формы программно? 8
    Нужно по кнопке Заполнить — сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П Как открыть внешнюю обработку или отчет программно 1С УП? 7
    В версии 8.2 и старше: приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере. Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий: Ввод по строке — поиск по первым символам или в любом месте наименования 6
    При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Как передать таблицу значений с сервера на клиент? 5
    Многие спрашиваю, как передать тз с сервера на клиент — ниже несколько вариантов как это можно реализовать: Через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр НаКлиенте Процедура ПолучитьТаблицу НаСервер(Команд а) ТЗВСтроке = ПолучитьТЗНаС Вывод результата запроса на форму УП в таблицу значений (аналог СоздатьКолонки() для УП) 2
    при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки(): Процедура ПоискНажатие(Элемент) Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ДокументоОборот.Этап, | ДокументоОборот.Отдел, | Докуме Посмотреть все в категории Управляемое приложение, Тонкий клиент

    1С 8.3 БСП ЗначениеРеквизитаОбъекта — Программист 1С Минск. Автоматизация бизнеса.

    ПРИМЕРЫ КОДА 1С

    Перейти в раздел примеры кода 1С 8.3:

    1С 8.3 БСП ЗначениеРеквизитаОбъекта. Возвращает значения реквизита, прочитанного из информационной базы по ссылке на объект. Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект для быстрого чтения отдельных реквизитов объекта из базы данных. Функция доступна только на сервере, но если нужно получить реквизит на клиенте, то я ищу модуль ВызовCервера, например, в БП 3.0 это ОбменСКонтрагентамиСлужебныйВызовСервера.ЗначениеРеквизитаОбъекта/

    Примера кода от rayastar

    &НаКлиенте
    Процедура ЗначениеРеквизитаОбъекта ( Команда )

    // Использование на клиенте.
    СтранаПроисхождения = ОбщегоНазначенияРТВызовСервера . ЗначениеРеквизитаОбъекта ( Номенклатура , «СтранаПроисхождения» );

    // Использование на сервере
    СтранаПроисхождения = СтранаПроисхождения ();

    &НаСервере
    Функция СтранаПроисхождения ()

    Возврат ОбщегоНазначения . ЗначениеРеквизитаОбъекта ( Номенклатура , «СтранаПроисхождения» );

    Что такое значение объекта в 1с

    В 1С есть встроенный язык программирования, который мы начали обсуждать в уроке про язык 1С.

    Особенностью языка 1С является объектная модель работы с базой данных. Она основывается на объектах 1С. Таким образом справочник – это объект 1С и когда Вы его считываете из базы данных, Вы получаете данные сразу из нескольких таблиц, упакованные в структуру, описанную в конфигурации (реквизиты, табличные части и прочее), см. урок про объектную модель представления данных 1С.

    Обращаться к объекту 1С можно напрямую или через ссылку. Обращение через ссылку может производится фоново, достаточно незаметно для программиста.

    Например:

    Запрос = Новый Запрос(«ВЫБРАТЬ Ссылка, Наименование Из Справочник.Контрагенты»);

    //разово выполнили запрос на сервере и переслали результат на компьютер пользователя
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();

    //обратились к результату запроса, который находится в памяти компьютера пользователя
    Наименование = Выборка.Наименование;
    ИНН = Выборка.Ссылка.ИНН;

    //ИНН мы в запросе не считывали, при обращении через ссылку к ИНН фоново генерируется полное считывание объекта справочника по ссылке в локальную память компьютера (бывает краткое, но ИНН не входит в кешируемые поля)

    Как мы видим, при незнании этих особенностей – одно лишнее движение может значительно увеличить разовые обращения к базе данных и как следствие снизить производительности программы и загрузку сети.

    Поговорим про особенности работы со значениями в 1С.

    Значение 1С — переменные

    1. Итак, переменная, это поле, не добавленное в конфигурации, а которое мы определяем прямо в модуле программы 1С (модули 1С).

    Под константным значением понимается значение 1С, указанное в коде напрямую. Например:

    Переменная1 = 22; //22 – это константа
    Переменная2 = «Привет!»; //«Привет» — это константа

    2. Переменные в 1С не типизированы. Это значит, что одной и той же переменной можно назначать любые значения. Например:

    Переменная = 22;
    Переменная = «Привет!»; //назначаем той же переменной новое значение 1С – строку, а не число

    3. Во многих языках программирования обязательно «объявлять» переменную. Это значит нужно указать сначала, что есть такая переменная, а только потом ей пользоваться:

    Перем Переменная1;
    Переменная1 = 20;

    В 1С это делать можно, но не обязательно. Будет работать и такой способ (обращение и создание сразу):

    Переменная1 = 20;

    4. Строгого контроля наличия переменной нет. Если мы забыли создать переменную, но уже обращаемся к ней, то ее значение 1С будет равно «Неопределено».

    //здесь переменной еще нет
    Если Чтото = 20 Тогда
    //мы ее создаем только, если Чтото=20
    Переменная1 = 100;
    КонецЕсли;

    //мы обращаемся в любом случае, даже если Чтото=1 и мы не входили в условие
    Если Переменная1 = Неопределено Тогда
    //здесь что-то выполняем

    В описанном случае, если мы не попали в первое условие, то переменной как бы нет. На самом деле она есть и равна «Неопределено».

    5. Видимость переменной обычная для других языков. Сначала глобальные, но в функции их можно переопределить (создать переменную внутри функции с таким же названием, тогда глобальная будет не видна).

    Значение 1С — реквизиты объектов 1С

    Реквизиты объектов 1С – это поля справочника или документа. Они добавляются и редактируются в конфигураторе в окне конфигурации. Мы уже обсуждали их в уроке про реквизиты 1С.

    Реквизиты объектов 1С – типизированы. Это значит, что при добавлении поля Вы явно указываете его тип – строка или число или еще что-то. Значение 1С по умолчанию у такого реквизита будет аналогично выбранному типу (для числа – 0, для строки – пустая строка, для ссылочных типов — справочник, документ и т.п. – пустая ссылка).

    Реквизиты могут иметь несколько вариантов типов. В этом случае Вы ставите галочку «Несколько типов» и указываете одновременно варианты. У этого поля по прежнему может быть только одно значение 1С, но вариантов значения теперь больше. По умолчанию у такого реквизита будет значение 1С «Неопределено».

    При назначении значения реквизиту производится проверка на соответствие типа. Если тип не соответствует, 1С пытается преобразовать значение 1С (например, число 22 в строку «22»). Если преобразовать не получается, то устанавливается значение 1С по умолчанию.

    Преобразование производится и при изменении типа реквизита. Например, Вы создали реквизит, пользователи с ним работали (заполняли в документах). И через пол года Вы решили изменить тип реквизита. Реквизит не будет очищен, будет произведена попытка преобразовать значения (по аналогичной схеме).

    Значение 1С — объект 1С

    Объект 1С – это набор реквизитов и табличных частей плюс методы (функции). Обычно объект 1С сам умеет себя считывать из базы данных и записывать. Объекты 1С бывают разных видов (справочники, документы и т.п.).

    Хранится объект 1С как одна строка в таблице SQL (для шапки) и несколько строк в других таблицах SQL (для каждой табличной части, если таковые есть). Идентифицируется объект 1С по автоматически генерируемому идентификатору – GUID.

    Аналог объекта 1С – это экземпляр класса в других языках программирования, со своим конструктором, деструктором, методами и свойствами.

    Так как объекты 1С тесно связаны с данными, то конструирование объекта 1С возможно путем создания нового объекта или считывания из базы данных.

    Создаем новый объект справочника:

    //новый, метод зависит от вида объекта
    НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();

    Получение существующего объекта всегда производится из ссылки на него (см. далее). Любым образом получаем ссылку (поиск, выборка, запрос и т.п.), а у ссылки вызываем метод:

    //получаем ссылку поиском
    НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду(«111»);
    НоменклатураОбъект = НоменклатураСсылка.ПолучитьОбъект();

    При получении или создании объекта 1С, он создается один раз в памяти компьютера. При попытке его назначения одной или другой переменной, это будет один и тот же объект. Таким образом переменная не значит сам объект, а значит ссылку на него.

    //переназначаем полученный/созданный объект другой переменной
    Переменная = НоменклатураОбъект;
    НоменклатураОбъект.ИНН = «22»; //изменяем поле объекта через одну переменную

    Если Переменная.ИНН = «22» Тогда //при обращении через другую переменную мы имеем тот же объект, и у него тоже изменился ИНН
    //здесь что-то делаем..

    Каждый объект в базе данных имеет свою «версию». Это идентификатор, который позволяет определить последнее изменение объекта (но не его дату, просто факт – было изменение или нет). При получении объекта из базы данных, при считывании, объект запоминает свою версию. При попытке записи обратно, объект проверяет, что версия все еще та же (не изменилась другим пользователем) и при изменении – откажется записываться (то есть нужно заново считывать, изменять, записывать).

    Значение 1С — ссылка 1С

    Каждый объект имеет идентификатор (GUID) и он позволяет однозначно найти объект в базе данных (т.е. он уникальный).

    Объекты 1С, которые можно найти по идентификатору называют ссылочными типами данных, под ссылкой подразумевая этот уникальный идентификатор. У каждого справочника, документа и т.п. – есть обязательное поле Ссылка.

    Допустим у Вас есть в конфигурации справочник Номенклатура. В документ Накладная Вы добавляете поле с типом справочника. При заполнении документа пользователь выберет товар. В поле сохранится идентификатор товара (то есть — ссылка).

    Все механизмы встроенного языка 1С, которые оперируют поиском – возвращают ссылку на найденный объект. Например:

    //Поиск элемента справочника стандартным механизмом по коду
    НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду(«111»);

    //Поиск элемента справочника стандартным механизмом по наименованию
    НоменклатураСсылка = Справочники.Номенклатура.НайтиПоНаименованию(«111»);

    //Перебор всех элементов справочника (точнее ссылок на все элементы)
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
    НоменклатураСсылка = Выборка.Ссылка;
    КонецЦикла;

    Если элемент справочника не найден – все эти методы возвращают «пустую» ссылку (то есть не указывающую ни на какой элемент). Проверить пустую ссылку можно следующим образом:

    Если НоменклатураСсылка.Пустая() Тогда
    //здесь что-то делаем..

    Имея во встроенном языке ссылку на объект, Вы можете обратиться к любому полю объекта (т.е. реквизиту) на чтение. Чтобы изменить реквизит – Вам нужно из ссылки получить объект (см. выше). Например:

    Важная особенность: когда у Вас есть ссылка – у Вас есть только идентификатор. Когда Вы обращаетесь через ссылку к полю, происходит считывание объекта в память компьютера. Вариант считывания зависит от того, к какому полю обратились. При обращении сначала к одному полю, а потом к другому – будет произведено два считывания.

    • Краткое кеширование (обращение к типовым полям)
      Считываются только типовые поля (код, наименование, номер, дата и т.п.)
    • Полное кеширование (обращение к нетиповым полям)
      Считываются все поля.

    Кеширование производится в память компьютера, точнее в ограниченное количество памяти компьютера. Память под кеширование организована в виде очереди и при переполнении затираются считанные ранее элементы.

    Проголосовать за этот пост:

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *