docs: function f_urun_id(_urun_id, _tahta_id, _opts) {
          //ürünü buluyoruz ve bilgilerini geri döndürüyoruz
  
          /**
           * ürün bilgisini şemasıyla getirir
           * @param {UrunDB} _urun
           * @param {OptionsUrun} _optsUrun
           * @returns {*}
           */
          function f_urun_bilgisi(_urun, _optsUrun) {
  
              if (!_urun) {
                  return null;
              }
  
              var /** @type {Urun} */
              olusan_urun = schema.f_create_default_object(schema.SCHEMA.URUN);
  
              olusan_urun = _.extend(olusan_urun, _urun);
  
              return result.dbQ.Q.all([
                  _optsUrun.bUreticiKurum ? f_urun_ureticisi(_urun.Id) : {Id: 0},
                  _optsUrun.bArrAnahtarKelimeler ? f_urun_anahtar_tumu(_urun.Id, _tahta_id) : [{Id: 0}]
              ]).then(function (_ress) {
                  olusan_urun.Uretici = /** @type {KurumDB} */_ress[0];
                  olusan_urun.AnahtarKelimeler = /** @type {AnahtarKelime[]} */_ress[1];
                  return olusan_urun;
              });
          }
  
          return (Array.isArray(_urun_id)
              ? result.dbQ.hmget_json_parse(result.kp.urun.tablo, _urun_id)
              : result.dbQ.hget_json_parse(result.kp.urun.tablo, _urun_id))
              .then(function (_dbUrun) {
                  if (_dbUrun == null) {
                      return null;
  
                  } else {
  
                      var /** @type {OptionsUrun} */
                      opts = result.OptionsUrun(_opts);
  
                      if (Array.isArray(_dbUrun)) {
                          opts.bUreticiKurum = false;
  
                          return _dbUrun
                              .mapX(null, f_urun_bilgisi, opts)
                              .allX()
                              .then(function (dbUrunBilgilerle) {
  
                                  return f_urun_ureticisi(_urun_id)
                                      .then(function (dbUreticiKurumlar) {
  
                                          dbUrunBilgilerle.forEach(function (_elm, _idx) {
                                              if (_elm) {
                                                  _elm.Uretici = dbUreticiKurumlar[_idx];
                                              }
                                          });
  
                                          return dbUrunBilgilerle;
                                      });
                              });
                      } else {
                          return f_urun_bilgisi(/** @type {UrunDB} */_dbUrun, opts);
                      }
                  }
              });
      }