Здравствуйте,
есть проблема:
Создал справочник - добавил поле в Активность.
В карточке редактирования Email разместил это поле. Хочется, чтобы при выборе значения в справочнике в тело письма попадал текст из справочника. Создал скрипт в PersonalReplyEditChange:
var replyText = Page.DataSource.ActiveRow.GetTypedColumnValue("PersonalReply");
Page.BodyEdit.SetValue(replyText);
однако при изменении значения справочного поля в карточке вываливается ошибка - Значение с именем "PersonalReply" не найдено
Что я делаю не так?
Нравится
День добрый.
А где хранится "текст из справочника"? В поле 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 =)