передать значение справочного поля в текстовое

Здравствуйте,

есть проблема:

Создал справочник - добавил поле в Активность.
В карточке редактирования Email разместил это поле. Хочется, чтобы при выборе значения в справочнике в тело письма попадал текст из справочника. Создал скрипт в PersonalReplyEditChange:

var replyText = Page.DataSource.ActiveRow.GetTypedColumnValue("PersonalReply");
Page.BodyEdit.SetValue(replyText);

однако при изменении значения справочного поля в карточке вываливается ошибка - Значение с именем "PersonalReply" не найдено

Что я делаю не так?

Нравится

4 комментария

День добрый.
А где хранится "текст из справочника"? В поле Name объекта PersonalReply?

Если хотите заполнять BodyEdit тем что выбираете можно просто прописать:

    Page.BodyEdit.SetValue(Page.PersonalReplyEdit.Text);

на самом деле нужный текст хранится в поле ReplyText но как достучаться до него я пока не могу придумать =( пока получилось примерно то, что вы подсказали, только так:

var replyText = Page.PersonalReplyEdit.Text;
Page.BodyEdit.SetValue(replyText);

Если я правильно понял задачу, попробуйте подобную конструкцию:

// Получить Id записи справочника
Guid personalReplyId = Page.DataSource.ActiveRow.GetTypedColumnValue<Guid>("PersonalReplyId");
string replyText = string.Empty;
if (personalReplyId != Guid.Empty)
{
    // Получить Текст из справочника (можно в метод универсализировать)
    EntitySchemaQuery esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "PersonalReply");
    string replyTextColumnName = esq.AddColumn("ReplyText").Name; // "Текст из справочника"
    Entity entity = esq.GetEntity(UserConnection, personalReplyId);
    replyText = entity.GetTypedColumnValue<string>(replyTextColumnName);
}
// Записать текст в Body
Page.BodyEdit.SetValue(replyText);

PersonalReply - имя объекта-справочника
ReplyText - колонка объекта PersonalReply

Спасибо вам огромное, Дмитрий!

Заработало, но только после того как я заменил первую строку вашей конструкции на:
Guid personalReplyId = (Guid)Page.PersonalReplyEdit.Value;

теперь наш ДИТ снова сможет использовать для ответов пользователям кучу знакомых шаблонов из старого ServiceDesk =)

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