Продолжаем серию статей о разработке на ISBL, в которую ранее вошли следующие материалы:
В текущей статье цикла мы рассмотрим процесс создания типов карточек электронных документов (ТКЭД) для нашей задачи. Тип карточки представляет собой набор реквизитов документа, их представление и логику взаимодействия.
Для того чтобы работнику выдали права, нужно оформить запрос, в котором необходимо указать этого работника и описание прав доступа. Запрос будет представлять собой электронный документ с типом карточки Запрос на назначение прав доступа работнику.
Для создания типа карточки запустим компоненту Типы карточек электронных документов. Для создания нового типа справочника логично было бы нажать кнопку , но в этом случае, нам пришлось бы добавлять некоторые реквизиты и действия для работы с правами эл. документов, а так же для интеграции с модулем Канцелярия. Поэтому наш новый ТКЭД мы создадим путём копирования существующего типа карточек Документы произвольной формы. Для этого выберем в списке нужный тип и нажмём кнопку . В поле имя укажем ЗНПДР, изменим заголовок на Запрос на назначение прав доступа работнику.
Для добавления реквизита ссылающегося на созданный ранее справочник необходимо запустить компоненту Реквизиты электронных документов, в которой создать и сгенерировать новый реквизит:
На вкладке Реквизиты типа карточки добавим только что созданный реквизит и вынесем его на форму, после сохранения типа карточки.
После этого необходимо связать созданный тип карточки электронного документа с видом электронного документа, для этого откроем справочник Виды электронных документов, выберем подходящий вид, например Служебная записка, и добавим созданный нами ТКЭД в табличную часть вкладки Типы карточек.
У каждого ТКЭД, как и у типа справочника, есть свои события, так как тип карточки мы создавали методом копирования, некоторые события уже означены. При создании документа с типом карточки Запрос на назначение прав доступа работнику и видом Служебная записка, наименование заполняется автоматически значением реквизита Шаблон наименования вида электронного документа. Это выполняет код события Добавление После:
// Заполнение шаблона наименования документа из Вида электронного документа EDocKind = Object.Requisites("ISBEDocKind").AsString NameTemplate = References.ВЭД.GetObjectByCode(EDocKind).Requisites("Дополнение").AsString EDocName = Object.Requisites("ISBEDocName").AsString if (NameTemplate <<>> "") and (EDocName == "") Object.ISBEDocName = NameTemplate endif
Следовательно, если возникнет необходимость формировать наименование для документов определённого типа карточки, то можно переписать этот код. Например, мы хотим, чтобы наименование документа зависело от нового типа карточки, а не от вида электронного документа, заменим приведённый код на следующий:
// Получить текущую дату Today = Today() // Заполнение шаблона наименования документа if not Assigned(Object.ISBEDocName) Object.ISBEDocName = Format('Запрос на назначение прав от %s'; Today) endif
В событии Добавление После, так же можно означить значения реквизитов по-умолчанию:
// Заполнить реквизит Дата документа текущей датой Object.Дата4 = Today
Достаточно часто, встречается задача автоматического добавления прав документам определённого типа. Решить такую задачу можно разместив в событии типа карточки следующий код:
// Получить группу Настройщики Group = ServiceFactory.GetGroupByName('TUNING') // Добавить группе Настройщики полные права Object.AccessRights.Managers.Add(Group)
В данном случае мы добавляем полные права на документ, группе пользователей Настройщики(TUNING), разумеется, группа должна существовать.
В заключение, отмечу, что типы карточек электронных документов похожи на типы справочников. И у тех, и у других есть реквизиты, представления, похожие события.
Пакет разработки для Directum версии 4.7: demo.zip (48,40 Кб)
Пакет разработки для Directum версии 5.1: demo51.zip (57,07 Кб)
Порадовала строка Today = Today()
:-D
А что не так? Today это имя переменной, Today() это получение текущей даты. В переводе на русский цензурный - записать в переменную Today текущую дату.
Добавлен пакет разработки для DIRECTUM 5.0.
Авторизуйтесь, чтобы написать комментарий