DB.PropertyName

From SunFlurry wiki
Jump to: navigation, search
  <Наименование реквизита> (Работа с реквизитами объекта БД)
Объект:Объект базы данных
Статус разработки: Реализована
Тип:Атрибут
Обращение к БД:Сервер и БД
Доступность:Чтение и запись
Исключения:Не выбран вид объекта, не загружен пер. реквизит
Визуальность:Нет

Атрибут получает или изменяет значение реквизита по наименованию. Важно: если объект не выбран (позиционирован), функция возвратит пустое значение, соответствующее типу данных указанного реквизита (это поведение уменьшает необходимое количество проверок, при каскадном вызове реквизитов, к примеру, конструкция Номенклатура.ТоварнаяГруппа.Префикс, вызывала бы исключение в момент обращения к реквизиту Префикс, если бы реквизит ТоварнаяГруппа не был заполнен и вызов атрибута Номенклатура.ТоварнаяГруппа возвращал бы пустое значение, в текущей же реализации, он возвратит пустое значение типа справочник вида ТоварныеГруппы, что позволит произвести последующее обращение к его реквизиту, который в свою очередь также вернется пустым с нужным типом данных). Важно: При обращении к периодическим реквизитам объекта с помощью имени реквизита, функция возвратит значение реквизита только в случае, когда он был предварительно загружен (т.е. опция PeriodicalProperties в UseOption перед загрузкой объекта была установлена в 1), если реквизит не был загружен, функция не производит его загрузку, а инициирует исключение (это помогает исключить ошибки, трактующие периодические реквизиты, как обычные), для получения значения периодического реквизита можно использовать функцию GetValue. Если объект был загружен, функция не вызывает обращения к серверу базы данных (не затрачивает значительное время на загрузку из БД). При изменении (установке) значения реквизита, изменения не записываются в базу данных до момента вызова функции Save, объект получает признак измененный, если производится визуальное редактирование объекта, форма редактирования также получает признак были изменения. При изменении реквизитов объектов, отображенных на формах, изменения автоматически транслируются на элементы формы. При чтении или записи реквизитов, функция производит заполнение объекта БД из базы данных в следующих случаях:

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

Синтаксис

DB.<Наименование реквизита>:<Значение реквизита>

Возвращаемое значение

Возвращается значение указанного реквизита.

Примеры

//aEl содержит выбранный и загруженный элемент справочника вида Номенклатура с реквизитом "Code" равным "000000005745"
aEl:=Ref.Номенклатура;
aEl.Find("Code","000000005745");
//Фрагмент выводит значение реквизита ТоварнаяГруппа загруженного элемента
Message("Товарная группа: "+aEl.ТоварнаяГруппа);
//Фрагмент изменяет значение реквизитов Цена и Объем и сохраняет изменения в базе данных
aEl.Цена:=0;
aEl.Объем:=0.1;
aEl.Save();
//Внимание: пример используется только для демонстрации работы с атрибутом имени реквизита, не безопасен для реальной базы данных (не блокируется объект)