...

Запись новой версии версии файла в карточку документа.

Тема в разделе "Вопросы по функционалу", создана пользователем Turuhansky, 10 дек 2020.

  1. Turuhansky

    Turuhansky Member

    Добрый день. Для записи новой версии файла в карточку из вложения использую код:

    if (context.VersionDocument != null) {
    PublicAPI.Docflow.DocumentVersion.AddDocumentVersion (context.Dokument, context.VersionDocument.File, PublicAPI.Enums.Documents.DocumentVersionStatus.Current);

    Если в объекте вложения стоит тип связи "1 к 1", то проблем нет, файл переносится. Но никак не могу понять, каким образом перенести несколько файлов из объекта с типом связи "многие ко многим".
     
  2. arkarimov

    arkarimov Member

    У вас две переменных в коде -источник и получатель (VersionDocument и Document соотв) не очень понятно что хотите - из одного источника передать в много получателей? Или много файлов в одну версию запихать?
     
  3. Turuhansky

    Turuhansky Member

    Много в одну.
     
  4. arkarimov

    arkarimov Member

    Так не получится,одна версия это строго один файл
     
  5. Turuhansky

    Turuhansky Member

    Я имею в виду вот сюда (скрин). По ходу выполнения процесса файлы сюда подгружаются из вложений вышеуказанным скриптом. Один скрипт - один объект "Вложение" - один файл. Чтобы подгрузить скриптом несколько файлов из одного объекта "Вложение", нужно задать в его настройках тип связи "многие ко многим". Но тогда этот скрипт не срабатывает.
     

    Вложения:

  6. arkarimov

    arkarimov Member

    Тоесть вы версии используете просто как хранилище произвольных файлов, а не как последовательность версий одного? Это так себе идея, но если настаиваете, то вот должно работать так:
    Код:
    foreach (var doc in context.VersionDocument)
    {
    PublicAPI.Docflow.DocumentVersion.AddDocumentVersion (context.Dokument, doc.File, PublicAPI.Enums.Documents.DocumentVersionStatus.Current);
     
    1 это нравится
  7. Turuhansky

    Turuhansky Member

    Как хранилище используем только в случае с процессом по согласованию и полному циклу отработки служебных записок. Это в своем роде регистрационная карточка, которой автоматически присваивается номер. Все сопутствующие документы по процессу вплоть до договора собираются тут. Другого способа реализовать подобное в СЕ найти пока не удалось.
    За код спасибо, буду пробовать.
     
  8. arkarimov

    arkarimov Member

    Ну если нужно всю сопутку собрать, то лучше делать либо отдельными доками, кидая в связанные к основному (сценарием естессно) либо в карточку документа внести дополнительные поля с ссылками на доки/вложения (доки или вложения зависит от того что за документы)
     
  9. arkarimov

    arkarimov Member

    Поправочка, заглянул в CE, там документы в самом деле не отредактировать, тогда я бы рекомендовал в связи сбрасывать, и/или делать отдельные папки для каждой служебки, а не версии подстраивать.
     
  10. Turuhansky

    Turuhansky Member

    Добрый день, очень прошу помочь по этому же коду. Он прекрасно работает, но автором версии становится текущий исполнитель в зоне ответственности, под которым запускается сценарий. До недавних пор это было неважно, но в одном из процессов это критично. Можно ли при записи версии этим скриптом назначить автором не текущего, а нужного мне пользователя, который по ходу процесса уже содержится в одной из переменной типа "Пользователь"? Не прибегая к манипуляциям со сменой ответственных в графической модели процесса.
     
    Последнее редактирование: 12 фев 2021
  11. arkarimov

    arkarimov Member

    Два варианта на выбор, либо выполнять код от нужного пользователя (должны быть права на это у него) - ниже пример кода
    Либо искать свойство автор у версии, и подменять его в сценарии после добавления версии.
    Код:
    foreach (var doc in context.VersionDocument)
    {            Locator.GetServiceNotNull<ISecurityService>().RunByUser(context.MoyPolzovatel, () => {
    PublicAPI.Docflow.DocumentVersion.AddDocumentVersion (context.Dokument, doc.File, PublicAPI.Enums.Documents.DocumentVersionStatus.Current);
                                                                            });
    
    }
     
    1 это нравится
  12. Turuhansky

    Turuhansky Member

    Еще раз большое спасибо)
     

Поделиться: