Многие крупные компании ежедневно сталкиваются с необходимостью обрабатывать потоки документов требующих обязательной регистрации. В связи с этим делопроизводители зачастую не имеют возможности оперативно реагировать на поступающие документы, что приводит к несвоевременному получению и рассмотрению их адресатом, а также исполнению документов работниками компании.
С целью облегчения выполнения рутинных операций по обработке исходящих и внутренних документов, а также минимизации количества ошибок специалистами компании ООО «ЦВД» совместно с заказчиком АО «НПЦАП» была разработана и внедрена модификация по авторегистрации документов.
Данная модификация позволяет автоматизировать процесс регистрации любого вида документа в соответствии с требованиями Заказчика. Часто такая необходимость возникает в отношении служебных записок, которых в организации может создаваться большое количество, при этом требуется освободить от излишней нагрузки (трудоемкости регистрации) делопроизводителей. Также модификация позволяет реализовать автоматическую нумерацию документов, но не при первичном сохранении документа, как это предусматривает коробочный функционал, а только после подписания документа. Таким образом, исключается вероятность, что очередной номер занят, а документ будет отклонен подписантом и останется не подписанным.
На текущем проекте внедрения, авторегистрация была настроена на Исходящих письмах и Служебных записках
Настройка авторегистрации осуществляется через справочник «Виды документов». Для примера возьмем вид документа «Служебная записка». Из рисунка ниже можно увидеть, что к коробочному функционалу добавлены признаки «Автоматическая регистрация» и «Авто резервирование номера»:
Рисунок 1. Настройка авторегистрации вида документа «Служебная записка
Дальнейшие настройка аналогичны стандартной настройки регистрации документов в системе.
Рисунок 2. Журнал регистрации документа
Рисунок 3. Настройка регистрации
Инициатор создает документ, в нашем случае это будет Служебная записка (Рисунок 4):
Рисунок 4. Создание документа
На этапе подписания, происходит регистрация документа, первая часть номера (порядковый номер), вторая часть номера подставляется в зависимости от кода подписанта (Рисунок 5):
Рисунок 5. Авторегистрация документа
После подписания, документ конвертируется в pdf и поступает и дальнейшему изменению не подлежит.
/// <summary>
/// Выполнить сценарий.
/// </summary>
/// <param name="approvalTask">Задача на согласование по регламенту.</param>
/// <returns>Результат выполнения сценария.</returns>
public override Sungero.Docflow.Structures.ApprovalFunctionStageBase.ExecutionResult Execute(Sungero.Docflow.IApprovalTask approvalTask)
{
var result = base.Execute(approvalTask);
try
{
var document = approvalTask.DocumentGroup.OfficialDocuments.FirstOrDefault();
if (document.RegistrationState != Sungero.Docflow.OfficialDocument.RegistrationState.Registered)
{
if (document == null)
return this.GetErrorResult("Не найден документ.");
var documentKind = centrvd.NPCAPCustomSolution.DocumentKinds.As(document.DocumentKind);
if (documentKind == null)
return this.GetErrorResult("Не найден вид документа.");
if (documentKind.AutoRegistrcentrvd.Value)
{
var operation = Sungero.Docflow.RegistrationSetting.SettingType.Reservation;
var registers = centrvd.NPCAPCustomSolution.PublicFunctions.OfficialDocument.NPCAPGetDocumentRegistersByDocument(document);
var defaultDocumentRegister = centrvd.NPCAPCustomSolution.PublicFunctions.DocumentRegister.GetDefaultDocRegister(document, registers, operation);
if (defaultDocumentRegister == null)
return this.GetErrorResult("Не найден журнал регистрации.");
//Регистрация документа.
var regDate = document.RegistrationDate != null ? document.RegistrationDate : Calendar.Today;
var regNumber = document.RegistrationNumber != null ? document.RegistrationNumber : string.Empty;
if (Locks.GetLockInfo(document).IsLocked)
Locks.Unlock(document);
Sungero.Docflow.PublicFunctions.OfficialDocument.RegisterDocument(document, defaultDocumentRegister, regDate, regNumber, false, true);
if (Locks.GetLockInfo(document).IsLocked)
Locks.Unlock(document);
}
}
else
{
Logger.Debug(string.Format("Документ с ИД: {0} ранее зарегестрирован.", document.Id));
if (Locks.GetLockInfo(document).IsLocked)
Locks.Unlock(document);
}
}
catch (Exception ex)
{
result = this.GetErrorResult(ex.Message);
Logger.ErrorFormat(ex.Message);
}
return result;
}
Разработанная модификация значительно упростила процесс регистрации исходящих писем и служебных записок.
В отношении служебных записок в среднем делопроизводители тратили около 1 минуты на операции, связанные с регистрацией документа: открытие карточки документа, выполнение действия «Зарегистрировать», проверку даты регистрации, рег. номера и журнала регистрации, изменение значений при необходимости, подтверждение введенных значений, закрытие карточки документа, выполнение задания на регистрацию. При этом нужно учитывать, что документ некоторое время находится в ожидании, так как в день на регистрацию поступает порядка 100 документов. В итоге среднее время прохождения служебной записки по регламенту после завершения согласования могло составить до 2 часов. Авторегистрация служебных записок позволила полностью исключить участие делопроизводителей в регламенте, таким образом, документ после завершения согласования стал быстрее поступать конечному адресату: примерно за 1-2 минуты.
По исходящим письмам полностью исключить участие делопроизводителей не удалось, так как часть документов должна отправляться из организации в бумажном виде, но и в данном случае время обработки сократилось в среднем на 5-10 минут за счет автоматического выполнения этапа регистрации.
В результате была оптимизирована процедура регистрации, при этом компании не пришлось вносить изменения в свои регламенты, так как учет документов в системе сохранился.
В ближайших планах доработать модификацию в части возможности предоставить выбор инициатору журнала регистрации создаваемого документа.
Вот эта часть кода не сработает. Если блокировку ставит не текущий пользователь, то снять её таким образом нельзя.
С помощью метода можно снять только те блокировки, которые поставлены текущим пользователем в текущем процессе. Если объект уже заблокирован другим пользователем, то снять блокировку нельзя.
Авторизуйтесь, чтобы написать комментарий