docs: function f_id(_ihale_id, _tahta_id, _opts) {
  
          function f_ihale_detaylarini_bagla(_ihale, _optsIhale) {
  
              //ihale yoksa null dön
              if (!_ihale) {
                  return null;
              }
  
              var olusan_ihale = schema.f_create_default_object(schema.SCHEMA.IHALE);
              olusan_ihale = _.extend(olusan_ihale, _ihale);
  
              return result.dbQ.Q.all([
                      _optsIhale.bYapanKurum ? f_yapan_kurum(_ihale.Id) : {Id: 0},
                      _optsIhale.bTakip ? result.dbQ.sismember(result.kp.tahta.ssetTakiptekiIhaleleri(_tahta_id), _ihale.Id) : 0,
                      opts.bArrKalemleri ? f_kalem_tumu(_ihale.Id, _tahta_id, _optsIhale.optKalem) : []])
                  .then(function (_arrResults) {
                      olusan_ihale.Kurum = _arrResults[0];
                      olusan_ihale.Takip = _arrResults[1];
                      olusan_ihale.Kalemler = _arrResults[2];
                      return olusan_ihale;
                  });
  
              /* arrPromises.push(_optsIhale.bYapanKurum
               ? f_yapan_kurum(_ihale.Id)
               : null);
  
               arrPromises.push(_optsIhale.bTakip
               ? result.dbQ.sismember(result.kp.tahta.ssetTakiptekiIhaleleri(_tahta_id), _ihale.Id)
               : 0);
  
               arrPromises.push(opts.bArrKalemleri
               ? f_kalem_tumu(_ihale.Id, _tahta_id, _optsIhale.optKalem)
               : []);
  
               return arrPromises.allX()
               .then(function (_arrResults) {
               console.log("_arrResults")
               console.log(JSON.stringify(_arrResults))
  
               olusan_ihale.Kurum = _arrResults[0];
               //olusan_ihale.Kurum_Id = olusan_ihale.Kurum.Id;
               olusan_ihale.Takip = _arrResults[1];
               olusan_ihale.Kalemler = _arrResults[2];
               return olusan_ihale;
               });*/
          }
  
          var opts = result.OptionsIhale(_opts);
  
          return (Array.isArray(_ihale_id)
              ? result.dbQ.hmget_json_parse(result.kp.ihale.tablo, _ihale_id)
              : result.dbQ.hget_json_parse(result.kp.ihale.tablo, _ihale_id))
              .then(function (_dbIhale) {
                  if (_dbIhale == null) {
                      return null;
                  } else {
  
                      // Ihale dizimizin kurumlarını çekerek herbirine bağlayalım
                      if (Array.isArray(_dbIhale)) {
                          opts.bYapanKurum = false;
  
                          return _dbIhale
                              .mapX(null, f_ihale_detaylarini_bagla, opts)
                              .allX()
                              .then(function (dbIhaleBilgilerle) {
                                  return f_yapan_kurum(_ihale_id)
                                      .then(function (dbYapanKurumlar) {
  
                                          dbIhaleBilgilerle.forEach(function (_elm, _idx, _arr) {
                                              if (_elm) {
                                                  _arr[_idx].Kurum = dbYapanKurumlar[_idx];
                                              }
                                          });
  
                                          return dbIhaleBilgilerle;
                                      });
                              });
  
                      } else {
                          return f_ihale_detaylarini_bagla(_dbIhale, opts)
                      }
                  }
              });
      }