Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Требуется реализовать предопределенный поиск заданий, задач, документов, записей справочников в зависимости от ИД текущего пользователя.

Подробнее Вариант 1. Результаты поиска отображаются в модальном окне

Модальное окно можно открывать различными способами: по кнопке/гиперссылке в карточках документов и записей справочников, по кнопке на панели действий в списке записей справочника или в проводнике. Суть заключается в том, что из JS вызывается сценарий, который возвращает ИД документов.

Прикладной сценарий

Создать сценарий:

 

// Загрузить описание поиска и получить список критериев.
SearchFactory = Application.SearchFactory
SearchDesciption = SearchFactory.Load('EDOCUMENT_SEARCH')
Criteria = SearchDesciption.SearchCriteria
 
// Отобрать документы, автором которых является текущий пользователь.
AuthorCriterion = Criteria.Add('ISBEDocAuthor')
UserName = Application.Connection.UserName
AuthorCriterion.Add(ServiceFactory.GetUserByName(UserName).Code)
 
// Отобрать документы, созданные за последнюю неделю.
CreatedCriterion = Criteria.Add('ISBEDocCreateDate')
CreatedCriterion.AddRange(Today() - 7; Today())
 
// Получить найденные данные.
FindDocs = SearchDesciption.Execute()
// Заполнить массив, состоящий из ИД найденных документов.
DocsId = ArrayOf()
i = 0                         
foreach Doc in FindDocs
  DocsId = AddElementToArray(DocsId; Doc.ID)
  i = i + 1
endforeach
// Вернуть массив с ИД документов.
Result = DocsId

JS

 

WebAccess.services.script.run("WASearchGetDocs",{})
  .success(function (result) {
    // Проверить полученные из сценария данные.
    if (typeof result === 'undefind' || result.Count === 0) {
      // Если за последнюю неделю не было измененных документов,

      // вывести сообщение, что документы не найдены.
      var toast = new WA.CMP.NTF.Toast()
      toast.showMessage("Документы не найдены.");
    } else {
      // Сгенерировать форму с найденными документами и показать ее в диалоге.
      var CP = WA.CMP;
      var form = new CP.forms.FormBuilder("last_edit_edoc");
      var docObjectLinks = [];
      // Для каждого найденного значения сформировать ссылку на документ.
      result.forEach(function (item) {
        docObjectLinks.push({ "ID": item, "Kind": OBJECT_TYPE.EDOCUMENT });
      });
      form.addObjectList("Docs", OBJECT_TYPE.EDOCUMENT, docObjectLinks, true);
 
      var dialog = new CP.dialogs.BaseDialog();
      dialog.title = L("LAST_OPENED_DOCS");
      dialog.html = form.render();
     dialog.width = 600;
      dialog.isShowCancelButton = true;
      dialog.show();
    };
  })
  .fail(function (res) {
    console.log('FAIL');
  })

Результат:

Подробнее Вариант 2. Панель поиска в проводнике

Требуется в панель Найти добавить кнопку для поиска по записям справочника РКК с реквизитами для поиска Работник и Номер регистрации. В критериях поиска реквизит Работник будет заполняться работником текущего пользователя.

XML

 

<Extension name="MyExt" title="My_Extension" jsfile="/js/myext.js" class="DIRECTUM.WebAccess.Company.Services,DIRECTUM.WebAccess.Company" >
  <SideBar>
  <ToolItem type="Search" name="MySearch" tooltip="MySearch" icon="/App_Sprites/SidebarAndExtensions/EDocumentSearch_24.png">
    <Criterion name="Работник">
      <requisite type="Reference" refcode="РКК" name="Работник" />
    </Criterion>
    <Criterion name="RRC_REG_NUM">
      <requisite type="Reference" refcode="РКК" name="Дополнение" />
    </Criterion>
  </ToolItem>
</SideBar>
</Extension>

JS

 

(function (global) {
 WA.ready(function () {
   WA.CR.sideBar.tabs.MySearch.bind('click', function () {
     setTimeout(function () {
       fillWorkerReq();
    }, 100);
  });
});
});
 
function fillWorkerReq() {
var ajaxData = {
  'ReferenceCode': 'РАБ',
  'FilterExpression': '[Пользователь]= ' + WA.CR.user.ID,
  'FilterValue': '',
  'Requisites': ['ИД', 'Наименование'],
  'RecordsCount': 1,
  'StartFromRecord': 0,
  'SortIndex': 0,
  'SortDirection': 'desc'
};
 WA.SRV.call("/Reference.asmx/GetRecords", ajaxData).done(function (res) {
  if (res) {
    var id = res[0].Requisites[0].Value;
    var displayValue = res[0].Requisites[1].Value;
     $('#MySearchРаботник').data('ReferenceSelectInstance').setValue([id, displayValue, displayValue, {}])
  }
});
}

Результат:

© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }