Автозаполнение поля

Добрый день.
Пишу: Если в справочном поле 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;

Нравится

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

Для установки значения в справочное поле используется метод SetValueAndText.
Где найти примеры его использования — вы знаете.

Подскажите, как вытащить наименование SRType, зная SRTypeId?

Page.SRTypeEdit.SetColumnValueAndText(SRTypeId, SRType.Name);

Для этого есть функция GetEntityTypedColumnValue.

В карточке Инцидента в обработчике события (по факту выбора в поле 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

Пожалуйста, подскажите, как исправить эту ошибку. Заранее спасибо

Это значит, что в базе нет таблицы с указанным именем.

"Зверев Александр" написал:

Это значит, что в базе нет таблицы с указанным именем.


заменила Incident на ServiceRequest

в итоге - Опубликовывает без ошибок. Но при выборе в карточке Инцидента в поле OriginEdit - ничего не подставилось

Используйте отладку.

а нужно использовать SetColumnValue или SetValueAndText ? Если SetValueAndText - то пишет ошибку "не содержит определение для SetValueAndText . Пропущена директива using или ссылка на сборку"

Посмотрите в конфигурации готовые примеры использования этой функции. Сделайте полностью аналогично.

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, а не после повторного открытия карточки. Заранее спасибо

Попробуйте провести отладку и посмотреть, какое значение в какую переменную попадает.
Затем исправьте ошибки в своём коде.

Не попадает в переменную string SRTypeName.

Не пойму, как взять именно наименование SRTypeName, если известен SRTypeId?

Вам нужно правильно воспользоваться функцией 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, будет работать.

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