Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Если в организации для работы с первичными учетными документами используется собственный тип карточек «Передаточные документы», то для отображения информации о подписях таких документов необходимо доработать их карточки.

Чтобы настроить отображение подписей в окне «Информация о подписях», в типе карточек документов создайте метод GetExtraSignatures с двумя параметрами:

Версия – объект IEDocumentVersion, тип «Вариантный». Версия документа, для которой добавляются подписи;
Список подписей – объект IExtraSignatureList, тип «Вариантный». Используется для получения информации о подписях.

Имена параметров можно задать произвольные, важно задать порядок их следования и тип данных.

Примечание

Метод GetExtraSignatures вызывается только для документов, у которых есть подписи из таблицы SBEDocSignature, основанные на алгоритмах ГОСТ.

Пример настройки отображения подписей

Формализованные первичные учетные документы, такие как УПД, акт или накладная, состоят из двух XML-файлов:

первый титул – с информацией продавца (исполнителя);
второй титул – с информацией покупателя (заказчика).

На каждый файл ставится подпись одного из участников сделки. Подпись первого титула отображается всегда. Чтобы в окне «Информация о подписи» также отображалась подпись второго титула документа:

1.Для типа карточек документов «Передаточные документы» создайте метод GetExtraSignatures.
2.Добавьте код:

 

  // Добавить подпись второго титула в окно «Информация о подписях»

  if Assigned(Object.DFASecondTitleSignature)

    VersionNum = GetLastActiveEDocumentVersionNum(Object) 

    Version : IEDocumentVersion

    VersionID = SQL(Format("

      select 

        XRecID

      from 

        dbo.SBEDocVer

      where 

        EDocID = %s

        and Number = %s"; ArrayOf(Object.ID; Version.Number)))    

    // Получить все подписи единственной действующей версии документа с комментарием «Подпись второго титула»

    Query = Format("select XRecID 

      from 

        [dbo].[SBEDocSignature]

      where 

        EDocID = %s

        and VersionID = %s

        and Comment in (

          select String

          from

            dbo.SBLocalizedData

          where

            Code = 'DIR6E54DB11_5D69_4BB8_B04E_AE6C9AD92440' 

            and GroupCode = 'DFA')"; ArrayOf(Object.ID; VersionID))

    // Если таких подписей нет, добавить подпись второго титула.

    if not Assigned(SQL(Query)) and Version.Number = VersionNum  

      User = NULL

      // Список подписей

      SignatureList : IExtraSignatureList

      Signature = Object.DFASecondTitleSignature

      SignedData = Object.DFASecondTitle

      

      Kind = Object.SYSREQ_EDOC_KIND

      

      Kinds = SQL("

        select

          Value

        from

          dbo.MBConst

        where

          Const in (" & DFAGetDocKindConstant(; TRUE) & ")")

  

      if Assigned(Object.Requisites("DFAAuthoritiesForSigning").ValueID) and CharPos(Kind; Kinds) 

        UserID = SQL("

        select

          usr.Analit  

        from

          dbo.MBAnalit authorities

        inner join dbo.MBAnalit as empl 

          on empl.Analit = authorities.FIO2

        inner join dbo.MBAnalit as usr  

          on usr.Analit = empl.Polzovatel

        where

          authorities.Analit = " & Object.Requisites("DFAAuthoritiesForSigning").ValueID)

 

        if Assigned(UserID)

          User = ServiceFactory.GetUserByID(UserID)

        endif   

      endif   

      /* Добавить дополнительную подпись документа в лист структуры SignatureList (const Signature: WideString; const Content: WideString; const Author: IUser; const ByUser: IUser; const Comment: WideString или подпись, подписанные данные, подписанта, пользователя, за которого поставлена подпись, и примечание к подписи) */

      if Assigned(User)

        SignatureList.Add(MimeDecodeString(Object.DFASecondTitleSignature); SignedData; User; User; LoadString('DIR6E54DB11_5D69_4BB8_B04E_AE6C9AD92440'; 'DFA'))

      else

        SignatureList.Add(MimeDecodeString(Object.DFASecondTitleSignature); SignedData; nil; nil; LoadString('DIR6E54DB11_5D69_4BB8_B04E_AE6C9AD92440'; 'DFA'))  

      endif  

    endif  

  endif   

В результате в окне «Информация о подписях» отобразится подпись утверждающего нашей организации на втором титуле. Чтобы различать подписи, для подписи на втором титуле отображается соответствующая подсказка:

Щелкните для увеличения изображения

Для документов, подписанных в версии Directum 5.6.1 и младше, в окне отобразятся две подписи утверждающего нашей организации для первого и второго титула:

Щелкните для увеличения изображения

© Компания Directum, 2020 Сообщество пользователей Directum
.navbar > a:hover { background: #FFD73B; }