Добрый день.
Пишу: Если в справочном поле OriginEdit выбрали значение с ИД ceb02546-179e-4c11-b959-df488f53f799 , то справочное поле SRTypeEdit должно автоматически заполниться значением с ИД dc284b1f-be17-402b-9134-1836d4b1f21f . Не пойму , как написать на С#, не получатся так: (Guid)Page.SRTypeEdit.Value = SRTypeId;
Guid sost = new Guid("ceb02546-179e-4c11-b959-df488f53f799");
var sost1 = (Guid)Page.OriginEdit.Value;
var SRTypeId = new Guid("dc284b1f-be17-402b-9134-1836d4b1f21f");
string s = "ИД Задачи ";
if (sost1 == sost)
{
Page.SymptomsEdit.Value = s;
//(Guid)Page.SRTypeEdit.Value = SRTypeId;
}
return true;
Нравится
Для установки значения в справочное поле используется метод SetValueAndText.
Где найти примеры его использования — вы знаете.
В карточке Инцидента в обработчике события (по факту выбора в поле OriginEdit выбрали значение с ИД ceb02546-179e-4c11-b959-df488f53f799) мне нужно, чтобы автоматически заполнилось поле SRTypeEdit значением, соответствующим ИД dc284b1f-be17-402b-9134-1836d4b1f21f. Пишу:
Guid dir = new Guid("ceb02546-179e-4c11-b959-df488f53f799");
var dir1 = (Guid)Page.OriginEdit.Value;
Guid SRTypeId = new Guid("dc284b1f-be17-402b-9134-1836d4b1f21f");
string SRTypeName = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Incident", "SRType", SRTypeId);
string s = "ИД Задачи ";
if (dir1 == dir)
{
Page.SymptomsEdit.Value = s;
Page.DataSource.ActiveRow.SetColumnValue("SRTypeId", SRTypeName);
}
return true;
Опубликовывает без ошибок. При выборе в карточке Инцидента в поле OriginEdit - ошибка :
Date: 25.01.2017 11:54:53
Date (UTC): 25.01.2017 8:54:53
Exception Message: Элемент с именем "Incident" не найден
Exception Type: Terrasoft.Common.ItemNotFoundException
Exception Source: Terrasoft.Core
Пожалуйста, подскажите, как исправить эту ошибку. Заранее спасибо
Это значит, что в базе нет таблицы с указанным именем.
Посмотрите в конфигурации готовые примеры использования этой функции. Сделайте полностью аналогично.
Guid dir = new Guid("ceb02546-179e-4c11-b959-df488f53f799");
var dir1 = (Guid)Page.OriginEdit.Value;
Guid SRTypeId = new Guid("dc284b1f-be17-402b-9134-1836d4b1f21f");
string SRTypeName = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "ServiceRequest", "SRType", SRTypeId);
string s = "ИД Задачи ";
if (dir1 == dir)
{
Page.SymptomsEdit.Value = s;
Page.DataSource.ActiveRow.SetColumnValue("SRTypeId", SRTypeId);
Page.SRTypeEdit.SetValueAndText(SRTypeId, SRTypeName);
}
return true;
В итоге: опубликовало без ошибок. Но: когда я открываю карточку Инцидента и выбирают определенный Origin (происхождение инцидента), то в поле авт-ки не подтягивается нужный мне SRType (Тип обращения). А вот при сохранении этой карточки Инцидента и открытии ее на изменение - в поле SRType отображается нужный мне тип обращения. Для сравнения - если я беру другой Origin , сохраняю карточку Инцидента и открываю ее вновь - поле SRType не заполнено. Т.е., в принципе-то, алгоритм работает. Подскажите, пожалуйста, как сделать так, чтобы поле SRType заполнялось сразу же при выборе опред.Origin, а не после повторного открытия карточки. Заранее спасибо
Попробуйте провести отладку и посмотреть, какое значение в какую переменную попадает.
Затем исправьте ошибки в своём коде.
Вам нужно правильно воспользоваться функцией GetEntityTypedColumnValue. Примеры неоднократно опубликованы на этом сайте.
У меня все получилось:
Guid dir = new Guid("ceb02546-179e-4c11-b959-df488f53f799");
var dir1 = (Guid)Page.OriginEdit.Value;
Guid SRTypeId = new Guid("dc284b1f-be17-402b-9134-1836d4b1f21f");
var SRTypeName =Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "SRType", "Name", SRTypeId);
string s = "ИД Задачи ";
if (dir1 == dir)
{
Page.SymptomsEdit.Value = s;
Page.DataSource.ActiveRow.SetColumnValue("SRTypeId", SRTypeId);
Page.SRTypeEdit.SetValueAndText(SRTypeId, SRTypeName);
}
return true;
Мне кажется, что и без строки, где вызываете SetColumnValue, будет работать.