пятница, 4 сентября 2020 г.

Добавление обработчика MainFileAdded (обработчик на событие после добавления основного файла)

 FilesViewWithPreview filesViewWithPreview = documentCardControl.FilesViewWithPreview;

filesViewWithPreview.MainFileAdded+= new EventHandler<DocsVision.BackOffice.ObjectModel.Services.Entities.DocumentMainFileEventArgs> (AfterMainFileAdded);

Сам обработчик:

private void AfterMainFileAdded(object sender, DocumentMainFileEventArgs e)

{

.......

}

вторник, 14 апреля 2020 г.

Как заполнить поле Сотрудник (Employee) текущим пользователем в javascript

/*
Данная функция получает текущего пользователя и заполняет им поле employee1
Этот скрипт необходимо положить в папку с решением
employee1 - наименование элемента управления в web разметке
Дополнения к УД - наименование решения
*/

var genController = require("@docsvision/webclient/Generated/DocsVision.WebClient.Controllers").GenControllers; //EmployeeController;
var app = require("@docsvision/webclient/Application").Application;
var extensionManager = require("@docsvision/webclient/System/ExtensionManager").extensionManager;

function setCurrentEmployee(sender, args) {
 let layout = sender.layout;
 let employee1 = layout.controls.employee1;
 let emplval = employee1.params.value;

var appobj = new app();
var emplc = new genController.EmployeeController();
var emplobj = emplc.getEmployee(appobj.CurrentEmployeeId);

emplobj.done(function(value) {
employee1.params.value=value;
});

}

// Регистрируем расширение и все его обработчики
extensionManager.registerExtension({
    name: "Дополнения к УД",
    version: "5.5.14",
    globalEventHandlers: [{ setCurrentEmployee: setCurrentEmployee }]
});

Как в Web клиенте заполнить поле пользователь в javascript

//Скрипт записывает пользователя, жестко заданного в скрипте в виде json, в поле employee1

var extensionManager = require("@docsvision/webclient/System/ExtensionManager").extensionManager;

function validateOnStateChanging(sender, args) {
 let layout = sender.layout;
 let employee1 = layout.controls.employee1;

var toempl={id: "64dcbcb8-a503-40ba-a0a5-a9919c759843", isCurrent: false, displayName: "Администратор К. О.", firstName: "Крас", lastName: "Администратор", middleName: "Офис", position: null, fieldPath: null, unitId: "c51f9dd1-5058-4f69-ae3d-9c3fc24e97c6", pathInDirectory: null,
dataType: 64};

let jsonstr = JSON.stringify(toempl)
employee1.params.value=JSON.parse(jsonstr);
    MessageBox.ShowWarning(jsonstr);
}

// Регистрируем расширение и все его обработчики
extensionManager.registerExtension({
    name: "Дополнения к УД",
    version: "5.5.14",
    globalEventHandlers: [{ validateOnStateChanging: validateOnStateChanging }]
});

пятница, 24 января 2020 г.

Ошибки в консоли настройки Docsvision 5.4. Решения

При открытии вкладки Модули расширения\Управление процессами возникает ошибка доступа и вкладка становится неактивной.
Решение: При добавлении пользователя под которым запускается консоль настройки в пользователи SQL сервера ошибка не исчезает, но вкладка остается активной  с доступной кнопкой Настройка почты. При добавлении пользователю SQL сервера роли sysadmin ошибки при открытии вкладки не возникает.
Так же решается ошибка доступа при открытии настройки  базы данных по кнопке Настройка на вкладке Базы данных


вторник, 18 сентября 2018 г.

Функция получения полного регистрационного номера из документа

//Данная функция по объекту типа Document получает из него нолный номер, присвоенный этому документу.

private string getRegNumber(Document doc)
{
BaseCardNumber bsnumber=null;
bsnumber = doc.Numbers.SingleOrDefault<BaseCardNumber>(t => t.GetObjectId()==doc.MainInfo.GetGuid("RegNumber"));
if (bsnumber==null)
return "";
else
return bsnumber.Number;
}

Определение текущего года с помощью javascript в xslt преобразовании для префикса номера в конструкторе правил нумерации Docsvision 5.4

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:ms="urn:schemas-microsoft-com:xslt"
  xmlns:my="http://sib-intel.com/my"
  exclude-result-prefixes="ms my">

  <ms:script language="JScript" implements-prefix="my">
  <![CDATA[
  function getCurrDate () {
    var mdate = new Date()
    return mdate.getFullYear().toString().substr(-2);
  }
  ]]>
  </ms:script>

<xsl:template match="/">
<xsl:text>ТТК-К-</xsl:text>
<xsl:value-of select="my:getCurrDate()"/>
<xsl:text>-</xsl:text>
</xsl:template>
</xsl:stylesheet>

суббота, 28 апреля 2018 г.

Удаление бизнес-процессов, приостановившихся по ошибке с определенным именем с помощью SQL скрипта

/*
Данный скрипт был применен в DocsVision версии 5.4
*/
declare @cid uniqueidentifier
declare @UserID uniqueidentifier
declare @SessionID uniqueidentifier

set @UserID =(select top 1 UserID from dbo.dvsys_users where AccountName ='domain\hyper')
set @SessionID = (select top 1 SessionID from  dbo.dvsys_sessions where UserID = @USerID)

if (@UserID is not null) and (@SessionID is not null)
begin
      declare cur cursor for
      select InstanceID from
      dbo.[dvtable_{0EF6BCCA-7A09-4027-A3A2-D2EEECA1BF4D}]
      where State=3 and Name like '%Экземпляр подпроцесса УД Отправка почтовых уведомлений%'
      open cur
      fetch next from cur into @cid
      while @@fetch_status=0
      begin  
EXEC [dbo].[dvsys_card_delete] @UserID,@SessionID, @cid,1
         fetch next from cur into @cid
      end
      close cur
      deallocate cur
end