пятница, 4 октября 2013 г.

DV 5.1.2344 Добавление ссылки на карточку в другую карточку

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

using System;
using DocsVision.BackOffice.CardLib.CardDefs;
using DocsVision.Platform.ObjectModel;
using DocsVision.BackOffice.ObjectModel;
using DocsVision.BackOffice.ObjectModel.Services;
using Docsvision.DocumentsManagement;
using DocsVision.Platform.ObjectModel.Search;


        /// <summary>
        /// В список ссылок документа добавляет связанный документ
        /// </summary>
        /// <param name="document">карточка документа в который добавляется ссылка на другую карточку</param>
        /// <param name="addeddocument">карточка добавляемого документа в качестве ссылки в карточку другого документа</param>
        /// <param name="LinkName">Имя связи из справочника ссылок</param>
        private void CreateRefInCard(Document document, Document addeddocument, string LinkName)
        {
            IReferenceListService referenceService = CardControl.ObjectContext.GetService<IReferenceListService>();
           

            ReferenceList referenceList;
            if (document.MainInfo.ReferenceList == null)
            {
                referenceList = referenceService.CreateReferenceList();
                CardControl.ObjectContext.SaveObject(referenceList);
           
                document.MainInfo.ReferenceList = referenceList;
            }
            else
            {
                referenceList = document.MainInfo.ReferenceList;
            }
       
            LinksLinkType linkType = CardControl.ObjectContext.FindObject<LinksLinkType>(new QueryObject("LinkName", LinkName));
           
            Guid CardTypeID = CardControl.Session.CardManager.GetCardData(CardControl.ObjectContext.GetObjectRef(addeddocument).Id).Type.Id;
           
            referenceService.CreateReference(referenceList, linkType, CardControl.ObjectContext.GetObjectRef(addeddocument).Id, CardTypeID, false);
            CardControl.ObjectContext.AcceptChanges();
        }