В схеме есть поле - справочник со значением, как при выборе поля в карточке редактирования получить это значение (не Id и не Name). В обработчике надо писать запрос к таблице-справочнику?. По сути вопрос как лучше(правильнее и короче) из карточки обратиться после выбора значения справочника к произвольному полю справочника
Нравится
простите, не совсем понятен вопрос. Опишите на примере желаемый результат.
К отображаемому полю справочника можно обратится прямо из текущего датасета.
Пример для поля контакт:
В датасете есть колонки 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();