Справочник со значением

В схеме есть поле - справочник со значением, как при выборе поля в карточке редактирования получить это значение (не Id и не Name). В обработчике надо писать запрос к таблице-справочнику?. По сути вопрос как лучше(правильнее и короче) из карточки обратиться после выбора значения справочника к произвольному полю справочника

Нравится

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

простите, не совсем понятен вопрос. Опишите на примере желаемый результат.

К отображаемому полю справочника можно обратится прямо из текущего датасета.
Пример для поля контакт:
В датасете есть колонки ContactID (ID) и ContactName (Name).

var Name = dlData.Dataset('ContactName');

К другим полям, нужно общаться уже кодом по ID (ContactID)

// Получение текущего ID контакта
var ContactID = dlData.Dataset('ContactID'); 
 
// Получение датасета контакта
var Dataset = Services.GetNewItemByUSI('ds_Contact');
// Фильтр по ID контакта
ApplyDatasetFilter(Dataset, 'ID', ContactID, true);
Dataset.Open();
// ... получение значений
Dataset.Close();

function GetFieldValueFromLookupDataset(Dataset, IDValue, ResultFieldName) имеется ввиду датасет справочника

и другие варианты:
function GetDatasetFieldValueByID(DatasetUSI, IDValue, FieldName)
function GetDatasetFieldValueFromDatasetByUSI(DatasetUSI, FilterFieldName, FilterFieldValue, ResultFieldName)
function GetFieldValueFromDatasetUSIByFilterFieldValue(DatasetUSI, FilterFieldName, FilterFieldValue, ResultFieldName)
function GetDatasetFieldValueFromDatasetByFilter(Dataset, FilterFieldName, FilterFieldValue, ResultFieldName)

а если вам надо много значений:
GetDatasetFieldValuesByID(DatasetUSI, ID, FieldNames)
GetDatasetFieldsValuesNamedArray(Dataset, FieldNames)

Господа, думаю вы совершили ту же ошибку, что и я постоянно совершаю - форум по BPM, а не по Terrasoft.

Я бы делал тупо (фактически происходит как у Константина):
1) Вынимаем id записи из поля;
2) Через entitySchemaManager находим данную запись;
3) Вынимаем из нее нужное нам значение;

Как это в BPM сделать коротко я не знаю, но хотел бы узнать, есть ли аналоги функций, описанных Дмитрием, в bpm?

Александр, именно так и делаю... просто хотелось как-нибудь поделикатнее вытащить значение...Всем спасибо ))

"Сазанов Александр Владимирович" написал:Как это в BPM сделать коротко я не знаю, но хотел бы узнать, есть ли аналоги функций, описанных Дмитрием, в bpm?

Примерно так:

Guid accountId = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue<Guid>(UserConnection, "Contact", "Account.Id", contactId);

В общем ругается на эту строчку, пишет у класса Terrasoft.Configuration.CommonUtilities нет определения GetEntityTypedColumnValue<>

Guid accountId = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue<Guid>(UserConnection, "Contact", "Account.Id", contactId);

Вообще, по-моему этот метод у Entity, так что вначале неплохо бы её само достать....

Ольга, попробуйте так:

var ContactValue = Page.ContactEdit.Text.ToString();

Получить идентификатор выбранной записи справочника можно так:

ContactID = Page.ContactEdit.Value.ToString();

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