ПРАВИЛО – одно или несколько действий, автоматически выполняемых над полученными заданиями, заданиями-контролями, уведомлениями или стартованными задачами, которые отвечают определенным условиям, с возможными исключениями из этих условий.
Каждый пользователь может настраивать для себя правила, делается это в Сервис –> Правила. Как настраивать правила вручную описано в справке. Но не все пользователи хотят их настраивать или знают о возможности их использования , тогда перед администратором встает вопрос: «Как можно распространить настроенные правила для всех пользователей (или для заданной группы пользователей)?».
Правила хранятся в системном справочнике EXPLORER_RULE, он не имеет визуального представления. В справочнике заданы следующие реквизиты:
Описание правила (Rule scheme) – это xml-ка:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<pre>
<Rule>
<Params>
<Param Name="CopyFolder" Type="22" Description="">
<Value ID="103743" Name="Важные договоры" SystemCode="DIRECTUM" ContentKind="5" Created="14.03.2011 17:33:49" Modified="14.03.2011 17:33:58" Author="Administrator" FolderType="4" UserStatus="0" HasChildren="false" AutoCleanable="false" URL=""/>
</Param>
<Param Name="Importance" Type="32" Description="">
<PickValues>
<PickValue Code="L" Name="L" NameLocalizeID="SYSRES_SBINTF.LOW_IMPORTANCE_NAME_ACCUS"/>
<PickValue Code="N" Name="N" NameLocalizeID="SYSRES_SBINTF.NORMAL_IMPORTANCE_NAME_ACCUS"/>
<PickValue Code="H" Name="H" NameLocalizeID="SYSRES_SBINTF.HIGH_IMPORTANCE_NAME_ACCUS"/>
</PickValues>
<Value Value="H"/>
</Param>
<Param Name="ExInitiator" Type="33" Description="" NeedIgnoreUnoperatingRecords="true">
<Value AccountType="0" Value="Kostenkova_KK"/>
</Param>
</Params>
<Actions>
<Action ActionType="Copy">
<ActionParam Name="CopyFolder" Param="CopyFolder"/>
</Action>
</Actions>
<Conditions>
<Condition Param="Importance"/>
</Conditions>
<Exclusions>
<Exclusion Param="ExInitiator"/>
</Exclusions>
</Rule></pre>
У xml-ки есть следующие разделы:
Если нужно распространить правила для других пользователей, то администратор может настроить его у себя и программно скопировать записи для других пользователей, изменив значение реквизита User.
Пример: нужно настроить правило всем работникам юридического отдела, по которому все задания, пришедшие по ТМ «Согласование договорных документов» и имеющие высокую важность, копировались в папку «Важные договоры».
Еще могут быть случаи, когда параметры, например, папки у пользователей должны быть разные (задания должны копироваться не в общую папку «Важные договоры», а в папку «Важные договоры <Имя пользователя>»). В этом случае нужно в xml-ке для каждого пользователя изменить ИД папки.
// Найти запись, которую нужно скопировать
Rule = References.EXPLORER_RULE.GetObjectByID(116324)
// Создать новую запись
NewRule = References.EXPLORER_RULE.CreateNew()
// Скопировать данные в новую запись
NewRule.AssignObject(Rule; ArrayOf())
// Изменить пользователя
NewRule.ISBReplaceableUser = ServiceFactory.GetUserByName('Kostenkova_KK').Code
// Найти нужную папку по наименованию
Search = Searches.CreateNew(ckFolder)
SearchCriteria = Search.SearchCriteria
FolderNameCriteria = SearchCriteria.Add('Name')
FolderNameCriteria.SetSimpleValue('Важные договоры Костенкова К.К.')
SearchFolders = Search.Execute
// Если нашли папку, то изменить ID в xml-ке с правилом
if SearchFolders.Count > 0
SearchFolders.Reset
SearchFolderInfo = SearchFolders.Value
// Изменить схему правила
XmlObject = CreateObject("MSXML.DOMDocument")
XmlObject.LoadXml(NewRule.Requisites('Текст').AsString)
CopyFolder = XmlObject.SelectSingleNode("//Params/Param[@Name='CopyFolder']/Value")
// Установить новое ИД
CopyFolder.setAttribute("ID"; SearchFolderInfo.ID)
NewRule.Текст = XmlObject.Xml
endif
// Изменить наименование
NewRule.SYSREQ_NAME = NewID()
NewRule.Save
Конечно, не все правила, удобные и применяемые администратором, нужно принудительно распространять на всех пользователей. Правила созданы для индивидуальной настройки, их нужно предварительно согласовывать с пользователями.
А автоочистку во ВХОДЯЩИХ/ИСХОДЯЩИХ настроить можно централизовано для всех?
Этот вопрос рассматривали в http://club.directum.ru/forum/topic745-автоочистка-уточнение-промежутка-времени.aspx
Ответ Алексея Язынина: Настроить у себя в проводнике системы нужные настройки, скопировать файл "C:\Users\ >\AppData\Roaming\NPO Computer\IS-Builder\<Код системы>\EdmsExplorer.cfg". Положить в такую же папку на компьютерах пользователей. Имейте ввиду, что скопируется не только эта настройка, а многие другие настройки тоже.
Все получилось. Работает. А как мне еще запустить правило сразу после копирования к пользователю? Чтобы правило отработало на уже существующих записях (заданиях), а не только на тех, что будут попадать во Входящие.
Подскажите, а как узнать ID своего правила, которое создал?
Программно найти в справочнике правил по пользователю, который создал правило, и по наименованию.
да да, уже нашел :) спасибо
Запустил сейчас скрипт, выдает ошибку "Объект не существует". Ругается на CopyFolder.setAttribute("ID"; SearchFolderInfo.ID).
Оказалось на версии 4.8 поменялась Rule scheme. Вместо параметра CopyFolder теперь MoveFolder
Параметр CopyFolder даже в 4.7 уже не актуален)
ID вашего правила:
Подскажите, как решить следующую проблему:
Есть настроенное правило, которое перемещает задания с конкретным видом задачи в конкретную папку. Копирую настроенное правило, меняю ИД папки, ИД вида задачи - новое правило не отрабатывает. Если еще меняю Код вида задачи (а это текстовый реквизит), то при в ходе в настройку правил - вылетает ошибка Access violation at address 00DEEC0E in module 'SBCl.bpl' (EDOMParseError - В текстовом комментарии обнаружен недопустимый знак). Подозреваю, что тут дело в текстовом формате (кодировке), т.е. как только я меняю текстовое значение, то xml записывает его "кракозябрами". Вот код:
Без TaskKind.setAttribute("Code"; TaskKindCode)
в D:\TestXML.xml все читабельно, а если же трогаю текстовый параметр ("Code") - то D:\TestXML.xml все текстовые значения в непонятном формате и правила вызывают Access violation.Подскажите, как можно решить данную проблемку?
Подскажите, где находится этот xml-файл с правилами?
Авторизуйтесь, чтобы написать комментарий