/**
  * Загрузить данные
  * если PK не указан, то определяет его по данным стуктутуры и имеющихся
  * значений полей (на случай перезагрузки записи, при неполной ее
  * предварительной загрузке)
  * вызывает preLoad()
  * вызывает _load(PK) (реализация забора данных)
  * если данные были загружены успешно, вызывает postLoad()
  * сохраняет полученные данные в хранилище Lms_Item_Store
  * 
  * @param mixed $pkValue
  * @return Lms_Item_Abstract
  */
 public final function load($pkValue = null)
 {
     if ($pkValue === null) {
         $assocPkValue = $this->_getAssocPkValue();
     } else {
         if (is_array($pkValue)) {
             $assocPkValue = $pkValue;
         } else {
             $struct = $this->getStruct();
             $pk = $struct->getPk();
             $assocPkValue = Lms_Item_Scalar::descalarize($pkValue, $pk);
         }
     }
     $this->_preLoad();
     if (false !== ($value = $this->_load($assocPkValue))) {
         if ($this->_scalarPkValue === null) {
             $this->_scalarPkValue = Lms_Item_Scalar::scalarize($assocPkValue);
         }
         Lms_Item_Store::setValues($this->getTableName(), $this->_scalarPkValue, $value);
         $this->_postLoad();
     } else {
         if ($pkValue !== null) {
             $this->_scalarPkValue = null;
         }
     }
     return $this;
 }