В любой организации, где применяются системы электронного документооборота, делопроизводители постоянно сталкиваются с регистрацией документов (входящие, исходящие, внутренние). И на каждом документе нужно проставить номер и дату для облегчения идентификации. Причем вне зависимости от способа поступления документа (если документ входящий) или способа дальнейшего распространения (если документ внутренний), делопроизводитель всегда выполняет практически одну и туже операцию: заносит документ в систему, присваивает ему номер из журнала, проставляет номер на документе и т.д.
Например, в нашей организации, внутренний документ, прошедший процедуру подписания при помощи ЭП, распечатывался, на нем ставился номер, потом снова сканировался уже с номером, и рассылался для ознакомления. Таких примеров можно привести множество. В каждой организации, наверняка, найдется процесс, связанный именно с датой и номером регистрации.
Данный функционал как раз и призван исключить рукописное проставления номера на документе и повторное сканирование.
Предложенный код достаточно добавить в "Действия и методы" в справочник "Типы справочников"- "РКК" для проставления даты и номера на регистрируемом документе. Разумеется нужно потратить время на настройку отображения в случае использования типовых бланков.
Исходный документ преобразуется в формат pdf и сохраняется в новой версии, так что всегда будет сохранен исходный вариант документа.
После добавления метода в карточке РКК добавим кнопку на панели инструментов для добавления даты и номера регистрации. Вы можете настроить вид по своему усмотрению.
Для версии 5.6 или 5.7 код сценария немного нужно еще оптимизировать для определения места расположения и вывода.
RRC = Object
DocumentID = RRC.ISBIntNumber
RegNumber = RRC.Дополнение
DateReg = RRC.ДатаВремя
InputSh = InputDialog('Сдвиг штампа по вертикали|Сдвиг штампа по горизотали';'0|0';;;;;; TRUE)
foreach SS in CSubString('cc'; '|')
//Проверка на наличие РКК
if not Assigned(RegNumber) or not Assigned(DateReg)
Result = 'РКК не зарегистрирована'
exitfor
EndIf
if not Assigned(DocumentID)
Result = 'С РКК не связан основной документ'
exitfor
EndIF
HTML = '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тег TABLE</title>
</head>
<body text = "blue">
<table width="86%" cellpadding="5">
<tr>
<td><big><b> '& "Рег. № " & RegNumber & " от " & DateReg & ' </b></big>
</td>
</tr>
</table>
</body>
</html>'
Document = EDocuments.GetObjectByID(DocumentID)
// Получить последнюю версию документа
Version = GetLastEDocumentVersionNum(Document)
SQL = SQL("SELECT TypeVersionData FROM SBEDocVer WHERE Number = " & Version & " AND EDocID = "& DocumentID & "")
//Вызов функции для преобразования документа в формат PDF с помощью сервиса преобразования
If SQL <<>> "PDF"
DCTSConvertEDocumentToPDF(ConvertToPDFWSDLFileName; Document; ; FALSE)
EndIf
Path = GetTempFolder() & "\" & "Stamp.png"
HTMLFileName = Format("%s%s%s"; ArrayOf(GetTempFolder(); GetHashInFormatGUID(); '.html'))
WriteFile(HTMLFileName;; HTML)
GeneratePNGImageFromHTML(HTMLFileName; Path; TRUE)
//Вставка изображения в PDF документ
//Параметры: Документ, версия, В новую версию - да, путь до файла, Координаты вставки X Y, 0 - на первую страницу, масштаб
STAMP_X = Substring(InputSh; "|"; 1)
STAMP_Y = Substring(InputSh; "|"; 2)
AddImageToPDFDocument(Document; Version; TRUE; Path; STAMP_X; STAMP_Y; 0; ; 50)
DeleteFile(HTMLFileName)
DeleteFile(Path)
ShowMessage('Штамп на документ установлен')
EndForeach
Для версии 5.8 указанный выше сценарий не будет работоспособным из-за изменений в системных службах и используемой функции DCTSConvertEDocumentToPDF. Для данной версии код сценария будет уже другим, нужно заменить окончание сценария на следующие:
// Заменить с этого места
Document = EDocuments.GetObjectByID(DocumentID)
CheckExtension = Document.Info.Editor.Extension
//Проверка на pdf
if CheckExtension <<>> 'PDF'
FCConvertEDocumentToPDF(Document)
endif
// Получить последнюю версию документа
Version = GetLastEDocumentVersionNum(Document)
Path = GetTempFolder() & "\" & "Stamp.png"
HTMLFileName = Format("%s%s%s"; ArrayOf(GetTempFolder(); GetHashInFormatGUID(); '.html'))
WriteFile(HTMLFileName;; HTML)
GeneratePNGImageFromHTML(HTMLFileName; Path; TRUE)
StampInsertComplit = FALSE
StampAutoInsert = FALSE
if InteractiveMode()
while not StampInsertComplit
Input = MessageBoxEx(INFORMATION_CAPTION; "Выберите действие";; "Сформировать|Сохранить|Отмена";;;; cbsCommandLinks; "Отмена")
if Input == 'НЕУДАЧА: ESC' or Input == 'Отмена'
Result = 'Прервано пользователем'
exit()
endif
if Input == 'Сформировать'
StampInsertComplit = FALSE
InputSh = InputDialog('Сдвиг штампа по вертикали|Сдвиг штампа по горизотали';'0|0';;;;;; TRUE)
STAMP_X = Substring(InputSh; "|"; 1)
STAMP_Y = Substring(InputSh; "|"; 2)
FileName = GetTempFolder() & "\" & "\Temp.pdf"
Document.Export(Version; FileName; False; False;;;)
AddImage = AddImageToPDFFile(FileName; Path; STAMP_X; STAMP_Y; 0; ; 50)
if AddImage
OpenFile(FileName; 'N';'Да';ecotFile)
else
showmessage("Штамп не установлен")
endif
endif
if Input == 'Сохранить'
StampInsertComplit = TRUE
DeleteFile(HTMLFileName)
DeleteFile(Path)
ImportFileIntoEDocumentVersion(FileName;;;;;Document.ID)
ShowMessage('Штамп на документ установлен')
endif
endwhile
endif
После внесения модификации делопроизводитель проставляет номер на документе при помощи данного функционала, указав координаты расположения. Немного о процессе в виде скриншотов при работе в Directum 5.8.
После нажатия в карточке РКК созданного действия в диалоговом окне выбираем "Сформировать"
Указываем координаты расположения и открывается окно просмотра документа с размещенным на нем штампом даты и номера регистрации.
Если вариант расположения устраивает при просмотре на документе, то документ сохраняется (скриншот выше). И в документе будет зафиксирована дата и номер регистрации. Вывод даты и номера можно настроить по своему усмотрению в коде сценария в секции html. Если вариант расположения не устраивает, то закрываем предварительный просмотр документа, система вернется на диалоговое окно выбора действия (Сформировать... и т.д.). После ввода новых координат просматриваем отображение штампа. И так по кругу, пока результат не устроит. Можно заранее ввести координаты в сценарии и тогда простановка даты и номера сведется просто к действию: нажал на кнопочку - сформировал - сохранил документ.
Авторизуйтесь, чтобы написать комментарий