Если в организации для работы с первичными учетными документами используется собственный тип карточек «Передаточные документы», то для отображения информации о подписях таких документов необходимо доработать их карточки.
Чтобы настроить отображение подписей в окне «Информация о подписях», в типе карточек документов создайте метод 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 |