Программирование форм-вкладок с полями


В данной статье мы изучим возможности FossLook по созданию форм-вкладок для "разгрузки" основной карточки документа. Ознакомьтесь со статьей "Программирование в FossLook" для получения базовых знаний, необходимых для понимания изложенного материала.

В данной статье мы продолжим работу над нашей библиотекой "Моя библиотека". В нашем распоряжении есть документ такого вида:

Документ FossLook

Предположим, что нам нужно взять поле "Важность документа" и перенести его на отдельную закладку с именем "Важность".

Для реализации данной задачи нам необходимо создать на диске файл с именем "FormImportance.cs", который будет содержать следующий код:

using System;
using System.Collections.Generic;
using System.Text;
using Foss.FossDoc.ObjectModel.DataRepresentation.Plugins.Forms;
using Foss.FossDoc.ObjectModel.DataRepresentation.Plugins;
using Foss.FossDoc.ObjectModel.DataRepresentation.View;
using Foss.FossDoc.ObjectModel.DataRepresentation.View.DocumentCard;
using Foss.FossDoc.ObjectModel.Data;
using DS;

namespace Foss.FossDoc.Plugins.DocumentLibrary._00000004ACC4D0E64E6E4BB3AB556A978E31326F
{
	public class FormImportance : Foss.FossDoc.ObjectModel.DataRepresentation.View.DocumentCard.CardFormCustom
	{
		protected override TPropertyTag[] HideAndShowFileds
		{
			get
			{
				return new TPropertyTag[1] {
					Foss.FossDoc.ApplicationServer.Converters.PropertyTag.FromString("0x80700F00")
				};
			}
		}
	}
}

Где "0x80700F00" это тэг поля "Важность документа". Если мы посмотрим на вкладку "Объект" поля "Важность документа" с помощью системы администрирования, то это сочетание двух свойств: "Идентификатор свойства" и "Тип свойства". Старшая часть это идентификатор, а младшая описывает тип поля.

Также нам необходимо создать на диске файл с именем "FormImportanceInfo.cs", который будет содержать следующий код:

using System;
using System.Collections.Generic;
using System.Text;
using Foss.FossDoc.ObjectModel.DataRepresentation.Plugins.Forms;
using Foss.FossDoc.ObjectModel.DataRepresentation.Plugins;
using Foss.FossDoc.ObjectModel.DataRepresentation.View;

namespace Foss.FossDoc.Plugins.DocumentLibrary._00000004ACC4D0E64E6E4BB3AB556A978E31326F
{
	public class FormImportanceInfo : IFormInfoOverride
	{
		public FormContext Context
		{
			get
			{
				return FormContext.Inplace;
			}
		}

		public FormPriority Priority
		{
			get
			{
				return FormPriority.High;
			}
		}

		public IForm CreateInstance()
		{
			return new FormImportance();
		}

		public IFormInfo Clone()
		{
			return null;
		}

		public System.Drawing.Image Icon
		{
			get
			{
				return null;
			}
		}

		string IExtensionContextInfo.UniqueName
		{
			get
			{
				return typeof(FormImportance).FullName;
			}
		}

		public string Name
		{
			get
			{
				return "Важность";
			}
		}

		public string Description
		{
			get
			{
				return "";
			}
		}

		public string[] CategoryNames
		{
			get
			{
				return new string[] 
				{
					"Моя библиотека.Документ.x56757654"
				};
			}
		}

		public string[] GetCategoryAttributeNames(string categoryName)
		{
			return null;
		}

		public string[] OverridenFromsUniqueNames
		{
			get
			{
				return new[] { Foss.FossDoc.ObjectModel.DataRepresentation.View.DocumentCard.FormNames.DocumentCardInplaceForm };
			}
		}
	}
}

Необходимо обратить внимание на область "CategoryNames", в кавычках необходимо указать уникальное имя того типа документа, с которым вы в данный момент работаете. С помощью системы администрирования и закладки "Объект" можно увидеть уникальное имя нужного вам типа документа.

Далее, файлы "FormImportance.cs" и "FormImportanceInfo.cs" необходимо добавить в "Default form script" необходимого вам типа документа.

Тип документа FossLook

После всех проделанных нами действий, документ приобретает следующий вид:

Документ FossLook

© 2001-2017 ФОСС-Он-Лайн. Все права защищены.