0 0,00 

Переименование и версионирование файлов в БП

20.02.2022

В бизнес-процессах иногда требуется запрашивать файлы. Пользователи могут называть их на свое усмотрение, но порой нужно стандартное название и версионирование. В дизайнере бизнес-процессов нет действий по переименованию файлов или версиям, поэтому будем использовать обходной маневр 🙂 Ведь в Диске тоже есть бизнес-процессы, именно этим мы и воспользуемся. 

Содержание

Создание процесса на Диске

Для начала нужно включить бизнес-процессы на Диске. Перейдите Диск –> Общий диск. Нажмите на шестеренку и выберите Настройку бизнес-процессов.

Настройка бизнес-процессов

Установите галочку Активировать Бизнес-процессы и нажмите Сохранить.

Настройка бизнес-процессов

Теперь можно приступить к созданию бизнес-процесса. Нажмите шестеренку и выберите Бизнес-процессы.

Создание БП

Далее Создать –> Создать последовательный бизнес-процесс.

Создание БП

Введите название процесса, уберите автоматический запуск и скройте из меню ручного запуска, нажмите Сохранить.

Создание БП

Перед вами появится пустой бизнес-процесс. Приступим к созданию.

Создание БП

Параметры

Нажмите Параметры шаблона и перейдите во вкладку Параметры. Создайте два параметра:

  • Новое название (new_name) – обязательный, тип строка;
  • ID папки (IDpapki) – обязательный, тип строка.
Параметры

Переменные

Далее перейдите во вкладку Переменные. Создайте переменные:

Переменные

Нажимаем Сохранить и приступаем непосредственно к процессу. 

Действия бизнес-процесса Переименование файла

Сначала выведем в лог переданные параметры.

ID папки и название

Параметры: ID папки и название

Действие Запись в отчет

  • Заголовок — Параметры: ID папки и название;
  • Текст — {=Template:IDpapki > printable}, {=Template:new_name > printable}
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
  •  

Изменение переменных

С помощью действия Изменение переменных обнулим переменные:

  • Счетчик
  • Существует ли файл с таким именем
  • Новая версия
  • ID файла
  • Проверка имени
  • Значение итератора

А также в переменную Название файла запишем значения из параметра Новое название, разбитого на части точками (для этого мы используем функцию explode). Это нужно для дальнейшего получения расширения файла.

Название файла = {{=explode(‘.’,{{Название файла}})}}

Изменение переменных

Итератор

Далее добавим Итератор по переменной Название файла

Итератор

Внутри присвоим переменной Значение итератора значение итератора с помощью вставки значения.

  • Значение итератора = {=A4459_94292_15870_27250:Value}
Итератор по очереди запишет в переменную части между точками, т.е. последним значением будет расширение файла.
Значение итератора
Новое название файла

Новое название файла

Действие Изменение переменных.

  • Новое название файла = {=Template:new_name}.{=Variable:Iterator_value}

Т.е. Новое название файла равно параметр Новое название точка переменная Значение итератора.

Новое название файла

Действие Запись в отчет.
 
  • Заголовок — Новое название файла; 
  • Текст — {=Variable:File_new_name > printable};
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку;
Проверка файла с таким именем

Проверка файла с таким именем

Действие PHP код.

  • PHP код – код ниже.

Это действие есть только в коробке. В маркете есть приложения для облака с REST API, но в данном случае мы используем обращение непосредственно к базе данных.

				
					global $DB;
 
    $folderID = {=Template:IDpapki};
    $fileNAME = {=Template:new_name > printable};
 
    $sql = "select ID from b_disk_object where PARENT_ID=$folderID AND NAME like '$fileNAME%'";
    $arFile = $DB->Query($sql)->Fetch();
    
    if ($arFile['ID'] > 0)
    {        // файл есть
        $this->SetVariable('Check_name',  $fileNAME);
        $this->SetVariable('IDfile',  $arFile['ID']);
        $this->SetVariable('File_exists', 'Да');
    }
    else
    {        // файла нет
        $this->SetVariable('Check_name',  $fileNAME);
        $this->SetVariable('File_exists', 'Нет');
    }
				
			
  • $folderID – ID папки, в которой лежит файл;
  • $fileNAME – название файла без расширения, вставляем параметр Новое название; 
  • ‘Check_name’ – переменная Проверка имени;
  • ‘IDfile’ – переменная ID файла; 
  • ‘File_exists’ – переменная Существует ли файл с таким именем;
 

Проверка имени, есть ли файл, ID файла

Действие Запись в отчет.
 
  • Заголовок — Проверка имени, есть ли файл, ID файла; 
  • Текст — {=Variable:Check_name > printable}, {=Variable:File_exists > printable}, {=Variable:IDfile > printable};
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку;
Лог

Файл с таким именем уже есть?

Добавим конструкцию Условие.

Файл с таким именем уже есть

Ветка Да

Файл с таким именем уже есть
Да
  • Тип условия — значение переменной;
  • Свойство или переменная — Существует ли файл с таким;
  • Условие — равно;
  • Значение — Да.
Разветвление
Логируем результат условия действием Запись в отчет.
 
  • Заголовок — Разветвление; 
  • Текст — Файл с таким именем уже есть;
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку;
Разветвление. Файл с таким именем есть
Цикл
Цикл
Цикл
Цикл

Выполняет свои поддействия до тех пор, пока выполняется заданное условие:

  • Заголовок – Цикл;
  • Тип условия – значение переменной;
  • Свойство или переменная – Существует ли файл с таким именем;
  • Условие – равно;
  • Значение – Да.
Счетчик

Действие Изменение переменных:

  • Заголовок – Счетчик;
  • Переменная – Счетчик;
  • Значение – ={=Variable:Num}+1
Счетчик
Лог счетчика
Счетчик

Действие Запись в отчет

  • Заголовок — Счетчик;
  • Текст — {=Variable:Num > printable}
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
  •  
Новая версия

Действие Изменение переменных:

  • Заголовок – Новая версия;
  • Переменная – Новая версия;
  • Значение – {=Template:new_name}_v{=Variable:Num}
Новая версия файла
Лог новой версии файла
Новая версия

Действие Запись в отчет

  • Заголовок — Новая версия;
  • Текст — {=Variable:New_ver > printable}
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
  •  
Проверка файла с таким именем

Действие PHP код.

  • PHP код – код ниже.

Это действие есть только в коробке. В маркете есть приложения для облака с REST API, но в данном случае мы используем обращение непосредственно к базе данных.

Проверка файла с таким именем
				
					global $DB;
 
    $folderID = {=Template:IDpapki};
    $fileNAME = {=Variable:New_ver};
 
    $sql = "select ID from b_disk_object where PARENT_ID=$folderID AND NAME like '$fileNAME%'";
    $arFile = $DB->Query($sql)->Fetch();
    
    if ($arFile['ID'] > 0)
    {        // файл есть  
        $this->SetVariable('Check_name',  $fileNAME);
        $this->SetVariable('IDfile',  $arFile['ID']);
        $this->SetVariable('File_exists', 'Да');
    }
    else
    {        // файла нет
        $this->SetVariable('Check_name',  $fileNAME);
        $this->SetVariable('File_exists', 'Нет');
    }
				
			
  • $folderID – ID папки, в которой лежит файл;
  • $fileNAME – название файла без расширения, в этот раз вставляем переменную Новая версия; 
  • ‘Check_name’ – переменная Проверка имени;
  • ‘IDfile’ – переменная ID файла; 
  • ‘File_exists’ – переменная Существует ли файл с таким именем;
 
Лог
Проверка имени, есть ли файл, ID файла
Действие Запись в отчет.
 
  • Заголовок — Проверка имени, есть ли файл, ID файла; 
  • Текст — {=Variable:Check_name > printable}, {=Variable:File_exists > printable}, {=Variable:IDfile > printable};
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку;
Файл с таким именем уже есть?

Да:

  • Тип условия – значение переменной;
  • Свойство или переменная – Существует ли файл с таким именем;
  • Условие – равно;
  • Значение – Да.

Нет:

  • Тип условия – Истина.
Файл с таким именем уже есть
Разветвление
Разветвление
Логируем результат условия действием Запись в отчет.
 

Под условием Да

  • Заголовок — Разветвление; 
  • Текст — Файл с таким именем уже есть;
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку;

Под условием Нет

  • Заголовок — Разветвление;
  • Текст — Файла с таким именем нет;
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку.
Название файла

Действие Изменение полей документа.

  • Заголовок – Название файла;
  • Поле – Название файла;
  • Значение –  {=Variable:New_ver}.{=Variable:Iterator_value}
Название файла

Ветка Нет

Файла с таким именем нет
Нет
  • Тип условия — Истина.
Разветвление
Логируем результат условия действием Запись в отчет.
 
  • Заголовок — Разветвление; 
  • Текст — Файла с таким именем нет;
  • Загрузить отчет для доступа из бизнес-процесса — устанавливаем галочку;
Разветвление
Название файла
Название файла

Действие Изменение полей документа.

  • Заголовок – Название файла;
  • Поле – Название файла;
  • Значение – {=Variable:File_new_name}

Процесс переименования и версионирования файла на Диске готов. Теперь рассмотрим как его запускать и пользоваться. 

 

Создадим простенький процесс в статусе смарт-процесса по запросу файла у пользователя. 

Создание процесса в Смарт-процессе

В смарт-процессе, помимо стандартных, создано поле Папка с файлами типа Ссылка. Заходим в Роботы, в нужном статусе создаем процесс.

БП
Создание процесса

Создать папку в Диске

Действие Создать папку в Диске.
 
  • Заголовок — Создать папку в Диске; 
  • Где создать — Папка Диска;
  • Папка — выбираем папку на общем Диске;
  • Название папки – {{Название}} (т.е. папка будет называться так же как и элемент смарт-процесса);
  • Создатель папки – можно указать при желании, а можно оставить пустым.
Создание папки
Папка с файлами

Папка с файлами

С помощью действия Изменение полей документа записываем в поле элемента смарт-процесса Папка с файлами ссылку на созданную папку.

  • Заголовок – Папка с файлами;
  • Поле – Папка с файлами (автоматически);
  • Значение – https://адрес сайта/bitrix/tools/disk/focus.php?folderId={=A52638_95563_64025_51594:ObjectId}&action=openFolderList&ncc=1

{=A52638_95563_64025_51594:ObjectId} – ID созданной папки из вставки значения. Также обратите внимание, что ссылка вставляется в верхнее поле.

Уведомление Ответственного

Действие Уведомление пользователя.
 
  • Заголовок — Уведомление Ответственного; 
  • Отправитель уведомления — {{Ответственный}};
  • Получатель уведомления — {{Ответственный}};
  • Текст уведомления для сайта

    Необходимо разработать РКД по ТКП.

    Перейдите в [url=/company/personal/bizproc/{=Workflow:ID}/]задание[/url].

  • Тип уведомления – Персонализированное уведомление (с аватаром).
Уведомление
Разработка РКД

Разработка РКД

Действия Запрос дополнительной информации.

  • Заголовок – Разработка РКД;
  • Заполняют сотрудники – {{Ответственный}};
  • Название задания – Разработка РКД;
  • Описание задания – Разработайте РКД по ТКП.
  • Текст кнопки в задании – Отправить;
  • Показывать поле ввода комментария – Да;
  • Обязательность комментария – Нет;
 
  • Метка для поля комментария — Комментарий; 
  • Устанавливать текст статуса — Да;
  • Текст статуса — Ожидание разработки РКД;
  • Период ожидания информации – если оставить пустым, то задание будет висеть до выполнения, если же задать период, то по его истечению процесс пойдет дальше, не дожидаясь ответа пользователя.
  • Ограничить доступ – Нет;
  • Тип делегирования – Никому;
Разработка РКД
РКД

Внизу действия нажмите Добавить поле и введите параметры переменной:

  • Название – РКД;
  • Код – RKD;
  • Описание – по желанию;
  • Тип – Файл;

Обязательное и множественное.

Нажмите Сохранить дважды.

 

Загрузить в Диск

Действие Загрузить в Диск.
 
  • Заголовок — Загрузить в Диск; 
  • Куда загрузить — Папка Диска;
  • Папка{=A52638_95563_64025_51594:ObjectId};
  • Файл для загрузки{=Variable:RKD};
  • Загружать от имени – можно указать при желании, а можно оставить пустым.
Загрузить в диск

{=A52638_95563_64025_51594:ObjectId} – ID созданной папки из вставки значения. 

{=Variable:RKD} – Переменная РКД, созданная в предыдущим действии.

Папка с файлами

Запуск бизнес-процесса Переименование файла

Действие Запуск бизнес-процесса.

  • Заголовок – Запуск бизнес-процесса Переименование файла;
  • ID документа{=A19763_57724_76073_27442:ObjectId};
  • Сущность – Диск;
  • Тип документа – Общий диск;
  • Шаблон – Переименование файла;
  • Ожидать завершения бизнес-процесса — устанавливаем галочку;

Параметры бизнес-процесса:

  • Новое название – РКД;
  • ID папки{=A52638_95563_64025_51594:ObjectId}.

{=A19763_57724_76073_27442:ObjectId} – ID файла, который должен приложить пользователь;

{=A52638_95563_64025_51594:ObjectId} – ID созданной папки из вставки значения. 

Детально об объекте Диска

Действие Детально об объекте Диска.
 
  • Заголовок — Детально об объекте Диска; 
  • Исходный объект — {=A19763_57724_76073_27442:ObjectId};
Детально об объекте диска
Папка с файлами

Добавить комментарий

Действие Добавить комментарий.

  • Заголовок – Добавить комментарий;
  • Комментарий – [COLOR=red]Процесс:[/COLOR] {=A35752_72707_47372_481:InfoUser > friendly} [COLOR=green]разработал(а)[/COLOR] [url=/bitrix/tools/disk/focus.php?objectId={=A49921_69085_9283_48931:ObjectId}&cmd=show&action=showObjectInGrid&ncc=1]{=A49921_69085_9283_48931:Name}[/url]. {=A35752_72707_47372_481:Comments};
  • Автор – {=A35752_72707_47372_481:InfoUser};
 
 
  • [COLOR=red]текст[/COLOR]– красный цвет;
  • {=A35752_72707_47372_481:InfoUser > friendly} – пользователь, выполнивший задание, берется из вставки значения – дополнительные результаты (> friendly – модификатор для нормального отображения имени);
  • [COLOR=green]текст[/COLOR] – зеленый цвет;
  • {=A49921_69085_9283_48931:ObjectId} – ID файла из вставки значения – дополнительные результаты – детально об объекте диска;
  • {=A49921_69085_9283_48931:Name} – название файла из вставки значения – дополнительные результаты – детально об объекте диска;
  • {=A35752_72707_47372_481:Comments} – комментарии пользователя;
 

В этом процессе какой бы файл ни приложил пользователь, он всегда будет называться РКД. Версионирование здесь не пригодится. Если добавить согласование и при отклонении отправлять на доработку, то тогда уже файлы будут называться РКД, РКД_v2, РКД_v3 и т.д.

Читайте также

5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x
0
    0
    Корзина
    Корзина пустаВернуться в магазин