Хочу получить значение поля выбранной записи в LookupDataControl, но не его ID или видимую часть а другое поле. Делаю так:

function edtOfferingFormsTypeOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
        var OfferingTypeID =    edtOffering.DataField.LookupDataset.DataFields.ItemsByName('OfferingTypeID').Value; // - тут в значении "Член группы не найден."
        var LookupDataset = LookupControl.LookupDatasetLink.Dataset;
    ApplyDatasetFilter(LookupDataset, 'OfferingTypeID', OfferingTypeID, true);
}

почему так? могу ли я получить значение любого поля записи в LookupDataControl или придется взять его ручками...

Нравится

5 комментариев

заранее поправлю ошибки, в итоге должно быть примерно так:

function edtOfferingFormsTypeOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
	//var OfferingID = edtOffering.DataField.Value; //id записи
	var OfferingTypeID = edtOffering.DataField.LookupDataset.DataFields.ItemsByName('OfferingTypeID').Value;
 
	ApplyDatasetFilter(LookupDataControl.DataField.LookupDataset, 
		'OfferingTypeID', OfferingTypeID, true);
}

Странно как-то...
лучше на событие DataChange датасета брать Offering и по нему получать OfferingTypeID. Не до конца понимаю что вы по результату сделать. Поясните.

Здравствуйте Владимир,
Если я вас правильно понял, то для получения интересующего вас поле советую попробовать написать

LookupDataControl.DataField.LookupDataset.Open();
LookupDataControl.DataField.LookupDataset('интересующее вас поле').Value;

Группа компаний Terrasoft

целью была фильтрация LookupDataControl, сделал так:

function edtOfferingFormsTypeOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
	var OfferingID = edtOffering.DataField.Value; //id записи
	var OfferingTypeID = GetOfferingTypeID(OfferingID);
 
	ApplyDatasetFilter(LookupDataControl.DataField.LookupDataset, 
		'OfferingTypeID', OfferingTypeID, true);
}
 
function GetOfferingTypeID(ID)
{
    var sq = Services.GetNewItemByUSI('sq_Offering');
    ApplySelectQueryFilter(sq, 'ID', ID, true);
 
	var ds = sq.Open();	
	if (ds.RecordsCount == 0) return null;
	return ds.DataFields.ItemsByName('OfferingTypeID').Value;
}

Вместо

"Каукин Владимир Константинович" написал:function GetOfferingTypeID(ID)
{
    var sq = Services.GetNewItemByUSI('sq_Offering');
    ApplySelectQueryFilter(sq, 'ID', ID, true);

        var ds = sq.Open();    
        if (ds.RecordsCount == 0) return null;
        return ds.DataFields.ItemsByName('OfferingTypeID').Value;
}


Можно использовать

 var OfferingTypeID = GetDatasetFieldValueByID('ds_Offering', OfferingID, 'OfferingTypeID')

из скрипта scr_DB

Показать все комментарии