В текущих версиях конструктора сделать это можно только программно, и задача не тривиальная. поэтому приведу готовый кусок кода.
Обработчик события AfterActivate - будет выполнен сразу после открытия карточки.
на С#
// обработчик события AfterActivate - будет выполнен сразу после открытия карточки private void cardControl_AfterActivate(System.Object sender, System.EventArgs e) { // получаем свойство типа "Нумератор". Нужно указать название свойства var numeratorProperty = GetCardProperty("Регистрационный номер"); // если номер уже задан, то выходим из метода, ничего не делая if (numeratorProperty.Value != null) return; // получаем атрибут правила и его значение (идентификатор) var ruleAttribute = numeratorProperty.Description.GetAttribute("Rule"); Guid? ruleId = (Guid?)ruleAttribute.Value; // с помощью преобразователя данных создаем новый номер по правилу var numeratorMapper = new DocsVision.BackOffice.Model.CardProperties.DataAccess.NumeratorNumberMapper( Session, CardData.Id, DomainObject.NumbersSectionId.Value); var number = numeratorMapper.Create(ruleId.Value); // устанавливаем новое значение свойства numeratorProperty.Value = number; // обновляем элементы карточки, чтобы отобразить новое значение RefreshControls(); } // вспомогательный метод поиска элемента по названию private CardProperty GetCardProperty(string propertyName) { foreach (CardProperty property in PropertyController.CardProperties) { if (property.Name == propertyName) return property; } return null; }
Vb.net
Private Sub cardControl_AfterActivate(sender As System.Object, e As System.EventArgs) ' получаем свойство типа "Нумератор" Dim numeratorProperty AS DocsVision.BackOffice.Model.CardProperties.Entities.CardProperty = GetCardProperty("Регистрационный номер") ' если номер уже задан, то выходим из метода, ничего не делая If numeratorProperty.Value IsNot Nothing Then Return End If ' получаем атрибут правила и его значение (идентификатор) Dim ruleAttribute as DocsVision.BackOffice.Model.Layouts.Entities.PropertyAttribute = numeratorProperty.Description.GetAttribute("Rule") Dim ruleId As System.Nullable(Of Guid) = CType(ruleAttribute.Value, System.Nullable(Of Guid)) ' с помощью преобразователя данных создаем новый номер по правилу Dim numeratorMapper as DocsVision.BackOffice.Model.CardProperties.DataAccess.NumeratorNumberMapper = New DocsVision.BackOffice.Model.CardProperties.DataAccess.NumeratorNumberMapper(me.Session, CardData.Id, DomainObject.NumbersSectionId.Value) Dim number as DocsVision.BackOffice.Model.CardProperties.Entities.NumeratorNumber = numeratorMapper.Create(ruleId.Value) ' устанавливаем новое значение свойства numeratorProperty.Value = number ' обновляем элементы карточки, чтобы отобразить новое значение me.PropertyController.RefreshControls End Sub ' вспомогательный метод поиска элемента по названию Private Function GetCardProperty(propertyName As String) As DocsVision.BackOffice.Model.CardProperties.Entities.CardProperty For Each [property] As DocsVision.BackOffice.Model.CardProperties.Entities.CardProperty In PropertyController.CardProperties If [property].Name = propertyName Then Return [property] End If Next Return Nothing End FunctionЧитать дальше
0 коммент.:
Отправить комментарий