"Коллективная чистка" папок пользователей

18 8

Знакома ли вам ситуация, когда пользователи путаются в десятках своих заданий, разложенных по папкам или же нагроможденных во Входящих, и стопке отправленных задач? «Позвольте, существует же “Автоочистка”!», - скажут некоторые из нас, и будут правы. Однако, не все пользователи желают и готовы выполнять череду команд "Сервис - Параметры - Автоочистка", а потом еще и выбирать папки и думать над параметрами удаления. И даже те из них, кто готов пойти на такие решительные меры, должны иметь в виду, что для выполнения стандартной очистки необходимо закрытие и повторное открытие проводника. И еще то, что папки, полученные ими путем замещения кого-либо из коллег, очищаться таким образом не будут. Дополнительным "бонусом" в этой ситуации является наличие у бедного пользователя старой версии клиента DIRECTUM, который обновляет полный список задач в Исходящих и заданий во Входящих при выполнении/отправке в работу нового объекта.

Варианты настройки правил, параметров, а также рекомендации по поддержанию индивидуального порядка в рабочей области приведены здесь и здесь. Но оставался открытым вопрос о возможности удаления ссылок на ненужные объекты массово и с минимальным участием пользователя.

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

Удаление ссылок происходит в результате работы сценария, использующего служебные справочники.

Справочник "Критерии автоочистки задач"

Справочник содержит следующие реквизиты: «Выполнено дней, от», «Важность задачи» («Обычная», «Низкая», «Высокая»), а также табличные части  «От пользователя» и «По типовым маршрутам».

Например, для того, чтобы определять ссылки на все задачи с важностью «Низкая», выполненные вчера или ранее, требуется создание следующего критерия:

Справочник "Критерии автоочистки заданий"

Справочник содержит следующие реквизиты: «Выполнено дней, от», «Тип задания» («Уведомление», «Задание», «Задание-контроль»), а также табличные части  «От пользователя» и «По типовым маршрутам».

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

 

А теперь предположим, что есть группа пользователей, которая желает:

  1. избавляться от ссылок на отправленные задачи с низкой важностью из Исходящих и подпапок Исходящих (пользователи в группе продвинуты и используют распределение по подпапкам, с помощью правил или вручную) на следующий день после отправки;
  2. не видеть во Входящих ссылки на выполненные задания по маршрутам из группы Канцелярия;
  3. но, при этом, видеть там уведомления, автором которых является президент, даже если по канцелярии. 

Создадим для нее правило в справочнике "Критерии автооочистки"

Справочник содержит три вкладки:

  1. «Папки» - определяет, для кого действует правило и какие папки необходимо очищать:
  • «Пользователь/Группа пользователей» (выбирать, для кого создается правило, необходимо при добавлении новой записи),
  • «Автоматически очищать Входящие/Исходящие" (плюс подпапки),
  • а также табличная часть «Пользовательские папки» (только для правил с типом «Пользователь»).

Укажем группу и параметры папок:

2. «Задачи» - определяет, какие критерии нужно отрабатывать при удалении ссылок на задачи: табличные части «Очищать» и «Не очищать». Добавим "Не важные" задачи:

3. «Задания» - определяет, какие критерии нужно отрабатывать при удалении ссылок на задания: табличные части «Очищать» и «Не очищать». Укажем критерий "ТМ Канцелярия" для удаления и критерий "От президента" в качестве исключения:

 

Создать правило для конкретного пользователя, выдвигающего исключительные требования, тоже не сложно. Для этого при добавлении записи нужно выбрать «Пользователь», сделав, этим самым, доступной табличную часть «Пользовательские папки» (для выбора доступны только те папки, автором которых является указанный на карточке Пользователь):

 

Созданные правила с состоянием "Действующая" обрабатываются сценарием "Автоматическая очистка папок" по расписанию, заданному администратором системы. На карточке каждого критерия есть скрытый строковый реквизит, который заполняется ограничивающим sql-выборку условием при сохранении карточки. Поэтому сценарий при выполнении считывает эти строковые ограничения из критериев, указанные в таблицах «Очищать» и «Не очищать», и объединяет их условием OR (а не формирует запрос «с нуля» для каждого правила). Сами условия «Очищать» и «Не очищать» объединяются условием AND.
В итоге формируется запрос, возвращающий ИД объектов, ссылки на которые нужно удалить. Удаление ссылок происходит через объектную модель.
 

Несколько замечаний: 

  • под «подпапками» имеются в виду только папки первого уровня. Для обработки нескольких уровней вложенности нужно пользоваться Пользовательскими папками, выбирая там родительскую;
  • для выбора в таблице «Пользовательские папки» доступны только те папки, автором которых является Пользователь;
  • если значение какого-либо реквизита на карточке критерия не указано, оно не будет ограничивать выбору (например, если не указан тип задания, будут рассматриваться все);
  • есть возможность настройки правила как для всех маршрутов (и свободных, и всех типовых), только типовых, отдельных типовых;
  • параметры логирования задаются с помощью двух констант: признака ведения лога и пути к логу-файлу;
  • одно правило может содержать в себе несколько критериев и несколько критериев-исключений. Для одного пользователя/группы пользователей можно создавать несколько правил;
  • в комплект входит пакет разработки и руководство администратора;
  • сценарий рекомендуется запускать раз в сутки.

    Сслылка для скачивания:

    Autoclean.zip (389,42 Кб)

Алексей Пестерев

Марина, это отличный материал и функционал!

Марина Котусева

Алексей, спасибо! Реализация - заслуга Дениса Закиркова.

Юлия Мартыненко

Эхх, хотелось бы еще подобную штуку для создания подпапок) 

Марина Котусева

Юлия, а для чего такой функционал? Для настройки сортировки заданий в "принудительные" папки :)?

Юлия Мартыненко

да) например, всем специалистам финансовой службы нужна папка во входящих "счета".

я читала, что папки- это ЛИЧНОЕ для каждого сотрудника и что они сами должны их сортировать, как им вздумается.. по этому поводу инструкцию пользователям написала, как создавать папки и как сортировать задания самостоятельно..но, им "заниматься этим некогда", поэтому приходится к каждому приходить и создавать правила. 

у нас директум только внедрили, некоторым сотрудникам правила создала. но сотрудники из коммерческой службы узнали, что у финансистов задания рассортированы и теперь клянчат папочку "договоры"...а их 30 человек. а служб у нас 14. и все очень заняты и не хотят читать инструкции) 

так что, функционал создания папок сортировки заданий, мне очень бы помог..не смотря на все отрицательные рекомендации)

Фанис Мирсаитов

Попросите изменить отношение к вашей службе.

Вячеслав Широбоков

Добрый день! Возникла потребность в данной доработке, на тестовой базе для конкретного пользователя ярлыки удалились корректно. Перенесли на рабочую, в итоге у кого как удалилось, у кого то очистились, но у большинства очистились выборчно. Перепробовали разные варианты добавления правил: только по задачам старше 30 дней для группы так и для пользователя; только по заданиям; только по заданиям по ТМ; по заданиям по свободным маршрутам. В итоге на конкретном пользователе с заданиями 3х летней давности очистку запускали в 3 этапа(старше 720 дней, старше 300, старше 30),но опять же условия "старости" заданий не выполняется корректно, запускали сегодня, а выполненные задания остались начиная с 5го декабря прошлого года. Правила создавали для заданий с контролем и без, результат тот же. Может быть причина в версии Директум (4.9.1), на которую скрипт не рассчитан. Кто запускал на этой версии поделитесь опытом.

 

Вячеслав Широбоков

Как выяснилось проблема в блоке:

ExceptionsOff()
            if TypeObject == 'Task' 
              ContenstTaskList = Tasks.GetContents(ObjectIDRec)
            else 
              ContenstTaskList = Jobs.GetContents(ObjectIDRec)
            endif
            Folders.CutFromFolder(FolderInfo; ContenstTaskList) 
          ExceptionsOn()

Если включить ошибки, то при большом количестве записей ID происходит исключение, поэтому у кого то чистит,у кого то нет. Чем заменить эту функцию, пока непонятно. Разве что как временное решение удалять порционно..

Авторизуйтесь, чтобы написать комментарий