Разработка новых типов карточек электронных документов

8 3

Продолжаем серию статей о разработке на ISBL, в которую ранее вошли следующие материалы:

  1. Общие сведения о разработке на IS-Builder
  2. Язык ISBL
  3. Типовые варианты использования функций ISBL
  4. Основы работы с объектной моделью IS-Builder
  5. Разработка на ISBL. Постановка задачи
  6. Разработка справочников в Directum
  7. Работа с наборами данных справочников
  8. Разработка новых типов карточек электронных документов

В текущей статье цикла мы рассмотрим процесс создания типов карточек электронных документов (ТКЭД) для нашей задачи. Тип карточки представляет собой набор реквизитов документа, их представление и логику взаимодействия.

Для того чтобы работнику выдали права, нужно оформить запрос, в котором необходимо указать этого работника и описание прав доступа. Запрос будет представлять собой электронный документ с типом карточки Запрос на назначение прав доступа работнику.

Для создания типа карточки запустим компоненту Типы карточек электронных документов. Для создания нового типа справочника логично было бы нажать кнопку  , но в этом случае, нам пришлось бы добавлять некоторые реквизиты и действия для работы с правами эл. документов, а так же для интеграции с модулем Канцелярия. Поэтому наш новый ТКЭД мы создадим путём копирования  существующего типа карточек Документы произвольной формы. Для этого выберем в списке нужный тип и нажмём кнопку . В поле имя укажем ЗНПДР, изменим заголовок на Запрос на назначение прав доступа работнику.

Для добавления реквизита ссылающегося на созданный ранее справочник необходимо запустить компоненту Реквизиты электронных документов, в которой создать и сгенерировать новый реквизит:

 

На вкладке Реквизиты типа карточки добавим только что созданный реквизит и вынесем его на форму, после сохранения типа карточки.

После этого необходимо связать созданный тип карточки электронного документа с видом электронного документа, для этого откроем справочник Виды электронных документов, выберем подходящий вид, например Служебная записка, и добавим созданный нами ТКЭД в табличную часть вкладки Типы карточек.

 

У каждого ТКЭД, как и у типа справочника, есть свои события, так как тип карточки мы создавали методом копирования, некоторые события уже означены. При создании документа с типом карточки Запрос на назначение прав доступа работнику и видом Служебная записка, наименование заполняется автоматически значением реквизита Шаблон наименования вида электронного документа. Это выполняет код события Добавление После:

  // Заполнение шаблона наименования документа из Вида электронного документа
  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.

Авторизуйтесь, чтобы написать комментарий