<< Click to Display Table of Contents >> Разработка > Примеры разработки > Документы Как изменить длину содержания в карточке документа |
Ситуация
В организации принято подробно заполнять содержание в карточке приказа. В базовом решении свойство Содержание (Subject) имеет ограничение на количество символов. Необходимо расширить допустимую длину до 1000 символов и более.
Решение
Чтобы увеличить содержание, нужно создать новое свойство с типом «Текст», добавить его на форму с заголовком Содержание и доработать логику использования свойства согласно требованиям вашей организации. Исходный контрол содержания потребуется удалить с формы, а его свойство сделать необязательным для заполнения. Для этого:
1.В своем решении перекройте тип документа «Приказ» (Sungero.RecordManagement.Order).
2.В редакторе решения добавьте зависимость от модуля Sungero.RecordManagement.
3.В редакторе перекрытого типа документа в узле «Форма» в параметрах основной вкладки MainPage снимите флажок Использовать контролы предка, чтобы вкладка стала доступной для изменения.
4.Перейдите в группу контролов MainGroupDEV, LeftGroupDEV, MainDEV и удалите контрол SubjectDEV. В результате с формы удалится контрол Содержание.
5.Сделайте базовое свойство Subject необязательным для заполнения.
Настройка обязательности полей наследуется от функции SetRequiredProperties() базового типа документа «Официальный документ» (OfficialDocument). Чтобы изменить обязательность свойства Subject, в редакторе типа документа добавьте разделяемую функцию с модификатором override:
public override void SetRequiredProperties()
{
base.SetRequiredProperties();
_obj.State.Properties.Subject.IsRequired = false;
}
6.В узле «Свойства» создайте свойство Содержание (ContentDev).
7.В параметрах свойства в поле *Тип свойства выберите значение «Текст». Таким образом, свойство сможет поддерживать многостраничные описания более 1000 символов. Остальные настройки сделайте такие же, как для базового свойства Содержание (Subject):
8.Добавьте новое свойство ContentDev на форму перекрытого типа документа:
9.При необходимости доработайте логику использования нового свойства согласно требованиям вашей организации.
Например, свойство Содержание может использоваться при формировании имени документа. А так как новое содержание должно быть подробным (более 1000 символов), то его не надо отображать в имени документа. В этом случае следует изменить формат имени, допустим, на такой:
<Вид документа> №<Регистрационный номер> от <Дата документа>
Формат имени документа задается в функции FillName() базового типа документа «Официальный документ» (OfficialDocument). Чтобы изменить формат имени документа, в редакторе типа документа добавьте разделяемую функцию FillName() с модификатором override:
public override void FillName()
{
//Получить вид документа.
var documentKind = _obj.DocumentKind;
//Очистить имя.
if (documentKind != null && !documentKind.GenerateDocumentName.Value && _obj.Name == Sungero.Docflow.OfficialDocuments.Resources.DocumentNameAutotext)
_obj.Name = string.Empty;
if (documentKind == null || !documentKind.GenerateDocumentName.Value)
return;
var name = string.Empty;
// Заполнить имя в формате: <Вид документа> №<Рег. номер> от <Дата документа>.
using (TenantInfo.Culture.SwitchTo())
{
// Добавить к имени №<Рег. номер>.
if (!string.IsNullOrWhiteSpace(_obj.RegistrationNumber))
name += Sungero.Docflow.OfficialDocuments.Resources.Number + _obj.RegistrationNumber;
// Добавить к имени <Дату документа>.
if (_obj.RegistrationDate != null)
name += " от " + _obj.RegistrationDate.Value.ToString("d");
}
if (string.IsNullOrWhiteSpace(name))
name = Sungero.Docflow.OfficialDocuments.Resources.DocumentNameAutotext;
else if (_obj.DocumentKind != null)
name = _obj.DocumentKind.ShortName + name;
_obj.Name = Sungero.Docflow.PublicFunctions.Module.TrimSpecialSymbols(name);
}
Затем вызовите FillName() в событии «Изменение значения свойства» каждого свойства, которое используется в функции:
•Рег. № (RegistrationNumber):
public override void RegistrationNumberChanged(Sungero.Domain.Shared.StringPropertyChangedEventArgs e)
{
FillName();
}
•Дата документа (RegistrationDate):
public override void RegistrationDateChanged(Sungero.Domain.Shared.DateTimePropertyChangedEventArgs e)
{
FillName();
}
10.Сохраните изменения и опубликуйте решение.
В результате после создания и регистрации карточка приказа примет вид:
В поле Содержание можно добавлять многострочный текст. Имя документа формируется по формату <Вид документа> №<Регистрационный номер> от <Дата документа>.
© Компания Directum, 2024 |