Функция Unfreeze |
Функция предназначена для перевода объекта из состояния "заморожен" в нормальное состояние.
Функция последовательно "пробегает" по всем узлам главной логической таблицы и закрывает их как таблицы в памяти и открывает как таблицы БД. При этом, если в главной логической таблице есть узлы являющиеся объектами, то и они в свою очередь, по средством вызова функции Unfreeze, переводятся из состояния замороженности.
Никаких операций по сохранению изменений, произведенных в объекте в состоянии замороженности, системной функцией Unfreeze не производится!
Если необходимо сохранить изменения, необходимо перед вызовом Unfreeze явно вызвать метод IModify.DoFlush.
После первого вызова функции позиция в узлах главной логической таблицы не определена.
Повторные вызовы функции не приводят к пересчитыванию, потере данных или потери позиции в каком либо узле главной логической таблице, однако, если в главной логической таблице есть узлы являющиеся объектами, то для них в свою очередь тоже будет вызвана функция Unfreeze.
Ядро Атлантиса для каждого объекта имеет признак, говорящий о том, был ли объект "заморожен". Его значение можно получить функцией Frozen.
Перед уничтожением объекта его не обязательно "размораживать", так как система это сделает сама.
Ситуации, при которых необходимо перекрывать данный метод:
Необходимо "размораживать" некоторые дополнительные переменные или ссылки на другие объекты не входящих в логическую таблицу.
Необходимо "размораживать" объект в котором вообще нет логических таблиц.
В перекрывающем методе после успешного размораживания собственных переменных необходимо вызвать функцию Unfreeze предка. При этом не надо забывать, что ваша функция Unfreeze может быть вызвана несколько раз и перед разморозкой проверять значение возвращаемое функцией Frozen.
function Unfreeze : word;
Код ошибки (константы с префиксом ts). Это могут быть как ошибки драйвера доступа к БД, так и ошибки логической таблицы.
Функция не выбрасывает исключений.
Версия : Атлантис 5.0.02.