Тема: Выгрузка документов
При стандартной выгрузке документов из архива выгружается весь файловый состав.
Как средствами API выгрузить отдельный файл из файлового состава документа?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
TechnologiCS → TechnologiCS → Использование TechnologiCS API → Выгрузка документов
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
При стандартной выгрузке документов из архива выгружается весь файловый состав.
Как средствами API выгрузить отдельный файл из файлового состава документа?
У интерфейса файлового состава документа (IDocFiles2) есть процедура SaveAs, которая позволяет сохранить текущий файл под любым именем.
Вот пример кода для TechnologiCS в. 6.3
Sub TestSaveFile() Dim Files ' As IDocFiles Файловый состав документа Dim FolderPath ' As String Папка в которую необходимо выгрузить файл If TcsApp.Archive.ShowModal("Выберите документ") <> 0 Then If Not TcsApp.Archive.IsEmpty Then Set Files = TcsApp.Archive.Properties("FILES").AsIDispatch If Files.ShowModal("Выберите файл для выгрузки") <> 0 Then If Not Files.IsEmpty Then FolderPath = ScriptHelper.SelectFolderDialog("Выберите папку для выгрузки файла", "") If Not IsNull(FolderPath) Then If Right(FolderPath, 1) <> "\" Then FolderPath = FolderPath & "\" End If ' If Call Files.SaveAs(FolderPath, 0 ) End If End If End If Set Files = Nothing End If End If End Sub
Если не использовать выбор папки средствами TechnologiCS (ScriptHelper.SelectFolderDialog), а задавать как-то по-другому, то код будет работать и на предыдущих версиях.
Sub TMG(TCSActiveModule, TCSExecutionParams) 'тестовый макрос альтернативной ВЫГРУЗКИ LogObject.ScriptTimeOut = 0 CurEvent = TCSExecutionParams.DocExecutionParams.CurrentEvent 'Текущее событие Select Case CurEvent 'Работа макроса по этапам Case CSDN_Const.dceBeforeUnload 'Этап до выгрузки TCSExecutionParams.DocExecutionParams.StepFlags = CSDN_Const.deSkipAllUnloadSteps 'Пропуск стандартной выгрузки и работы макроса после выгрузки ' Определение временной папки (папки выгрузки) типа C:\unload_docs\V19668\ FileNamePath = TCSExecutionParams.DocExecutionParams.ActiveFileNamePath k=len(FileNamePath)-1 Do While k>0 If mid(FileNamePath,k,1)="\" Then fp2=mid(FileNamePath,1,k) k=0 Else k=k-1 End If Loop ' Сохранение документа Set fso = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set fldr = fso.GetFolder(fp2) If Err Then Set fldr = fso.CreateFolder(fp2) End If On Error goto 0 Call TCSActiveModule.SaveAs (fp2,0) 'Открытие документа Set Shell = CreateObject("Shell.Application") Call Shell.ShellExecute(FileNamePath) If Err Then TCSExecutionParams.ReturnCode = 1 TCSExecutionParams.ReturnMessage = "Не могу выполнить команду над выгруженным документом " + QuotedString(FileNamePath) + ": " + Err.Description + "#" + Err.Source Err.Clear Else TCSExecutionParams.ReturnCode = 0 TCSExecutionParams.ReturnMessage = "Работа закончена!" End If Case Else Call TCSApp.ShowMessageBox("Ошибка", "Ни один шаг макроса по выгрузке и обновлению не отработал!") TCSExecutionParams.ReturnCode = 0 End Select End Sub
Спасибо! Получилась приблизительно такая конструкция.
Кусок "Определение временной папки" к сожалению не удачен - но не смог найти переменную, которая отвечает за папку выгрузки, назначенную пользователем в настройках TechnologiCS
Кусок "Определение временной папки" к сожалению не удачен - но не смог найти переменную, которая отвечает за папку выгрузки, назначенную пользователем в настройках TechnologiCS
Попробуйте следующие варианты: первый вариант - у интерфейса IDocCommands метод GetDefaultUnloadPath,
второй - у интерфейса приложения IOCS_Application4 метод UnloadDocsFolder .
Я только не очень понял зачем нужна альтернативная выгрузка? TechnologiCS все равно будет выгружать файлы сам (даже если здесь что-то написать).
В обработчике есть различные стадии работы (EnumDocExecutionEvent) процесса выгрузки, такими образом вы можете выполнить дополнительные операции (но не делать то что TechnologiCS и так делает, и скорей всего лучше чем в скриптах).
Ну я вообщем всё в первом сообщении изложил. Нужно было выгрузить 1 файл из файлового состава, при чём сделать это таким же способом ( 1 нажатие кнопки) как предусмотрено стандартными средствами.
Всё удалось реализовать с вашей помощью:
1) Действие выгрузки всех файлов из файлового состава отменяется, и кнопка такая ( для заданного типа файла) убирается.
2) Кнопка на выгрузку 1го файла работает как нужно.
Здравствуйте, а возможно ли организовать просмотр документа без выгрузки его файлового состава? И ограничить возможность сохранения документов пользователю на свой компьютер из определенного архива,т.е. просмотрел пользователь документ, закрыл, сохранить не может, к нему в папки документ не выгрузился.
Здравствуйте, а возможно ли организовать просмотр документа без выгрузки его файлового состава?
Не сильно ясно. Можно сделать превью в виде картинки, тогда точно ничего выгружаться не будет.
Для того чтобы посмотреть приложением нужен файл, а значит его нужно приложению отдать. Можно теоретически сделать защищенное хранилище (типа виртуальной файловой системы, в TechnologiCS этого нет), но все равно у приложения есть команда сохранить как, так что это только добавит немного удобства, но никак не решит проблему копирования куда либо. Это надо решать комплексно. Тут самое простое дать пользователям терминалы без внешних носителей и ограничить сетевое взаимодействие корпоративными приложениями, либо организовать защиту рабочих мест. Тогда пользователи просто физически не смогут скопировать файл или передать за пределы защищенной зоны.
ограничить возможность сохранения документов пользователю на свой компьютер из определенного архива,т.е. просмотрел пользователь документ, закрыл, сохранить не может, к нему в папки документ не выгрузился
Тут не сильно ясно. TechnologiCS итак разграничивает доступ к каждому документу. И не имея доступа пользователь не сможет документ просмотреть, а тем более сохранить.
Если под словом сохранить имеется ввиду все таки выгрузка на локальный диск, то мы приходим к ситуации выше.
Что вы пытаетесь реализовать?
Что вы пытаетесь реализовать?
Пытаемся реализовать пожелания клиента, чтобы его КД никто никуда никак и никогда не мог сохранить к себе. По ответу все понятно, спасибо. Будем организовывать им отдельный архив со строгой организацей доступа. Попытки как то ограничить папку выгрузки - результата не дают- только работе мешают.
Пытаемся реализовать пожелания клиента, чтобы его КД никто никуда никак и никогда не мог сохранить к себе.
Ну это только комплексная защита компьютера и сети. Напрямую из TechnologiCS это никак не решить.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
TechnologiCS → TechnologiCS → Использование TechnologiCS API → Выгрузка документов