Приветствую уважаемые члены сообщества!
Сегодня я хочу предложить Вам метод, который с одной стороны очень упрощает жизнь и делает Директум более дружелюбной к пользователю, а с другой стороны подрывает принципы классификации документов и наверное вызовет бурю негодования у "правильных" разработчиков. И так ближе к делу.
Код предложенный ниже, просто без всяких забот и хлопот, открывает окно проводника для выбора файла, КАК ЭТО ПРИВЫКЛИ ДЕЛАТЬ ВСЕ, а не так как предлагают нам "Директумовцы" =). Код автоматически заполняет указанную карточку, поределяет вид документа и редактор. Так же что не мало важно складывает все файлики в конкретную папку в системе!
Т.е. Имея такую кнопку в реестре договоров мы легко ее настраиваем на карточку документов используемую в данном бизнес-решении. Код:
// Код зап.
RRCCode = Object.Requisites(SYSREQ_CODE).AsString
// передаю параметры в карточку электронного документа.
FName = ФайлВыбрать()
Наименование = ExtractFileName(FName)
Расширение = ExtractFileExt(FName)
КодПриложения = ServiceFactory.GetEditorByExtension(Расширение).Code
//-----------------------------------------------------------------------------
//вместо жестких значений Д000047 лучше завести константу и хранить в ней значения
// и обращаться к константам с помощью функций:
// Конст() - для записи значений
// КонстЗнач() - для чтения значений
EDoc = EDocuments.CreateNewFromFile('РЕГДОГ_СОГЛАСОВАТЬ_ДОГОВОР';'Д000047';КодПриложения;FName ) // Вот где мы задаем наши значения для карточки, по порядку: Тип карточки(Имя), Вид эл. док(код).
//-----------------------------------------------------------------------------
// заполнить реквизиты карточки электронного документа
EDocDataSet = EDoc.DataSet
EDocDataSet.Requisites("ISBEDocName").Value = Наименование
EDocDataSet.Requisites("ДОГОВОР_Согласование").Value = RRCCode
// права доступа
full = EDoc.AccessRights.Managers
gr = ServiceFactory.GetGroupByName("ВСЕ")
if (EDoc.AccessRights.IsManager(gr)) or (EDoc.AccessRights.IsReader(gr)) or (EDoc.AccessRights.IsWriter(gr))
else
full.add(gr)
EndIf
// сохранить изменения в карточке электронного документа
EDocDataSet.ApplyUpdates
// поместить документ в определенную папку
// и обращаться к константам с помощью функций:
// Конст() - для записи значений
// КонстЗнач() - для чтения значений
IDFolder = 103069 // указать ид папки
if IDFolder <<>> ''
SearchFolder = Searches.CreateNew(ckFolder)
SearchCriteria = SearchFolder.SearchCriteria
IDFolderCr = SearchCriteria.Add("ИД")
IDFolderCr.AddSingleValue(IDFolder;vtEqual)
FolderList = Searches.Execute(SearchFolder)
if FolderList.Count <<>> 0
FolderList.Reset
Folder = FolderList.Value
if not VarIsNull(Folder)
Folders.PasteToFolder(Folder;EDoc.Info)
endif
endif
endif
// связать документ с карточкой справочника
EDocuments.BindTo(Object.Info;EDoc.Info)
// Показать связанные эл. документы
BoundEDocumentsSearchDescr = Searches.Load("BOUND_EDOCUMENT_SEARCH")
BoundEDocumentsSearchDescr.InitializeSearch(Object.Info)
Searches.Show(BoundEDocumentsSearchDescr)
Тут где-то уже проскакивала идея использовать директум как виртуальный диск, похоже начало уже положено :)
Авторизуйтесь, чтобы написать комментарий