Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
копирование ЛСК документа CAD, Необходимо скопировать ЛСК из одного документа в другой средствами API
 
Добрый день, есть задача по переносу созданных Локальных Систем Координат (ЛСК) в другой документ с теми же координатами и свойствами? Подходящего метода в API не нашел,  да и в интерфейсе не предусмотренно, стандартый конструктор создает точку по координатам, которые нельзя явно получить у ЛСК источника. Может кто сталкивался??? Спасибо
Настройка пользовательских колонок в справочнике, Возникла задача в справочнике вывести в пользовательскую колонку иконку типа объекта, используя макрос
 
В поле IconImage  возвращаю иконку типа объекта. А в результате система приводит значение к типу string.
Кстати  для string параметров такой проблемы нет. Например удачно получилось вытянуть в колонку для "Номенклатуры" список связанных файлов документа



Так настраивается пользовательская колонка:
1.

2.


Здесь показана функция возвращающая значение для колонки.

А это чтоб поразмыслить. Здесь сложности никакой так как в этом справочнике это родная колонка!




Администрирование справочника изображений






Так получается, в какой форме нужно передавать данные? Может кто сталкивался.
Изменено: Evgeniytti - 25.01.2015 21:44:13
Tflex Docs 12. Получение прикрепленных к бизнес - процессу объектов для обработки макросом, Каким образом получить ссылки на объекты прикрепленные к бизнес процессу для их обработки на этапе бизнес процедуры типа МАКРОС
 
Добрый день! Уверен данный пример вас полностью устроит

см. коментарии
и перед прочтением кода  
см. администрирование системы\ системные справочники\пороцедуры
см. администрирование системы\ системные справочники\процессы
см. администрирование системы\ системные справочники\текущие действия процессов
внимательно на базовые типы справочников их группы параметров(перекликаются с api) и связи с действиями

т.к справка по api для процедур отсутствует

[B]этот макрос используется в процедуре "проведение ИИ" по сути не важно на каком этапе его вставить в схему, так как он смотрит запущенные процесс и прикрепленные к нему документы[/B]

Удачи!


[COLOR=#0000ff]using[/COLOR] System;

[COLOR=#0000ff]using[/COLOR] System.Collections;

[COLOR=#0000ff]using[/COLOR] System.Collections.Generic;

[COLOR=#0000ff]using[/COLOR] System.IO;

[COLOR=#0000ff]using[/COLOR] System.Linq;

[COLOR=#0000ff]using[/COLOR] System.Windows.Forms;

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.Macros;

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.Macros.ObjectModel;



[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.References.ActiveAction; //обязательно объявлять

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.References.ActiveActions; //обязательно объявлять

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.Processes.Events.Contexts; //обязательно объявлять, базовый класс для управления процессами

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.Processes.Events.Contexts.Data; //обязательно объявлять

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.References;

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.References.Procedures; //обязательно объявлять

[COLOR=#0000ff]using[/COLOR] TFlex.DOCs.Model.References.Nomenclature.ModificationNotices;

[COLOR=#0000ff]using[/COLOR] System.Text;

[COLOR=#0000ff]using[/COLOR] System.IO;



[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]class[/COLOR] Macro : MacroProvider

{

   [COLOR=#0000ff]public[/COLOR] Macro(MacroContext context)

       : [COLOR=#0000ff]base[/COLOR](context)

   {

   }

   

   [COLOR=#0000ff]private[/COLOR] EventContext КонтекстСобытияБП //инициализируем данные процесса

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }

   

   [COLOR=#0000ff]private[/COLOR] StateObject Этап //инициализируем //инициализируем данные процесса

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }

   

   [COLOR=#0000ff]private[/COLOR] StateContextData ДанныеЭтапа //инициализируем данные процесса

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }

   

   [COLOR=#0000ff]private[/COLOR] ActiveActionData ДанныеТекущегоДействия //инициализируем данные процесса

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }

   

   [COLOR=#0000ff]private[/COLOR] ActiveActionReferenceObject ТекущееДействие //инициализируем данные процесса

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }

   

   [COLOR=#0000ff]private[/COLOR] ReferenceObject[] ОсновныеОбъекты [B]// вспомогательные переменные для хранения интересующих вас объектов[/B]

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }



   [COLOR=#0000ff]private[/COLOR] ReferenceObject[] ВспомогательныеОбъекты

   {

       [COLOR=#0000ff]get[/COLOR]; [COLOR=#0000ff]set[/COLOR];

   }

   

   [COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]override[/COLOR] [COLOR=#0000ff]void[/COLOR] Run()

   {

       КонтекстСобытияБП = Context [COLOR=#0000ff]as[/COLOR] EventContext;[COLOR=#008000]//контекст событий по БизнесПроцессу [/COLOR]

       [COLOR=#0000ff]if[/COLOR] (КонтекстСобытияБП != [COLOR=#0000ff]null[/COLOR])

   [B] // получение списка объектов из процесса[/B]

       {  

           ДанныеЭтапа= КонтекстСобытияБП.Data [COLOR=#0000ff]as[/COLOR] StateContextData;

           Этап = ДанныеЭтапа.State;

           ТекущееДействие = ДанныеЭтапа.ActiveAction;

           ДанныеТекущегоДействия = ТекущееДействие.GetData<ActiveActionData>();

       

           ОсновныеОбъекты = ДанныеТекущегоДействия.GetReferenceObjects().ToArray();  // список объектов(указанных при запуске) вашего процесса.

[COLOR=#008000] [B]// Конец[/B][/COLOR]



           

           List<ReferenceObject> nomenclatureObjects = [COLOR=#0000ff]new[/COLOR] List<ReferenceObject>();

           List<ReferenceObject> undoCheckOutObjects = [COLOR=#0000ff]new[/COLOR] List<ReferenceObject>();

           [COLOR=#0000ff]bool[/COLOR] needcheckIn = [COLOR=#0000ff]false[/COLOR];



           [COLOR=#0000ff]foreach[/COLOR] (ModificationNoticeWithActionsReferenceObject ro [COLOR=#0000ff]in[/COLOR] ОсновныеОбъекты.OfType<ModificationNoticeWithActionsReferenceObject >())

               [COLOR=#0000ff]foreach[/COLOR] (ActionReferenceObject action [COLOR=#0000ff]in[/COLOR] ro.ActionObjects)

               {

                   [COLOR=#0000ff]try[/COLOR]

                   {

                       [COLOR=#0000ff]if[/COLOR] (action.Apply([COLOR=#0000ff]out[/COLOR] needcheckIn))

                       {

                                                       

                           [COLOR=#0000ff]if[/COLOR] (needcheckIn)

                           {

                               ReferenceObject changingObject = action.GetChangingObject();

                               [COLOR=#0000ff]if[/COLOR] (!nomenclatureObjects.Contains(changingObject))

                                   nomenclatureObjects.Add(changingObject);

                           }

                       }

                       [COLOR=#0000ff]else[/COLOR]

                           [COLOR=#0000ff]if[/COLOR] (needcheckIn)

                           {

                               ReferenceObject changingObject = action.GetChangingObject();

                               [COLOR=#0000ff]if[/COLOR] (!undoCheckOutObjects.Contains(changingObject))

                                   undoCheckOutObjects.Add(changingObject);

                           }

                       

                   }

                   [COLOR=#0000ff]catch[/COLOR] (Exception e)

                   {

                       TFlex.DOCs.Model.Processes.Objects.ExceptionManager.RegisterException(e);

                       [COLOR=#0000ff]if[/COLOR] (needcheckIn && action != [COLOR=#0000ff]null[/COLOR])

                           {

                               ReferenceObject changingObject = action.GetChangingObject();

                               [COLOR=#0000ff]if[/COLOR] (!undoCheckOutObjects.Contains(changingObject))

                                   undoCheckOutObjects.Add(changingObject);

                           }

                   }

               }

           TFlex.DOCs.Model.Desktop.Desktop.CheckIn(nomenclatureObjects, [COLOR=#ff0000]"Выполнение автоматических действий"[/COLOR], [COLOR=#0000ff]false[/COLOR]);

           TFlex.DOCs.Model.Desktop.Desktop.UndoCheckOut(undoCheckOutObjects.Where(o=>o!=[COLOR=#0000ff]null[/COLOR] && o.CanUndoCheckOut));

       }        

   }        

}
Проведение Извещений об изменении, Осуществление возможностей проведения ИИ с учетом потребностей предприятия
 
Как оказалось при выборе действия "замена вариантом" происходит обновление карточки объекта номенклатуры исходя из изменений в ее варианте, а файл объекта не меняется на файл варианта, он [B][I]обновляется[/I][/B] на основе варианта, а имя, атрибуты и расположение в хранилище файлов сохраняется как до изменения.
Проведение Извещений об изменении, Осуществление возможностей проведения ИИ с учетом потребностей предприятия
 
Добрый день!
В процессе освоения механизма проведения ИИ в DOCs 2012 столкнулся со следующей проблемой. В ходе выполнения процесса "Проведение Извещения об изменении" не происходит автоматического выполнения действий(в моем случае я использовал действие "замена вариантом"). Подробнее: Во вкладке Основные объекты в карточке ИИ справочника извещений подключил сам объект и его вариант, у каждого свой собственный файл. Далее на первой вкладке карточки ИИ выбрал действие "Замена вариантом", указал объекты соответственно. Все объекты: карточка, изменяемый объект, его вариант сохранены, изменяемый объект и вариант находятся на хранении, их файлы также сохранены, стадия файлов не контролируется. Используется стандартная схема для технического документооборота. Процесс  "Проведение Извещения об изменении" выполняется до завершения. Опишите что необходимо сделать для выполнения автоматических действий(замены вариантом)
Изменено: Evgeniytti - 05.07.2014 11:13:37
Страницы: 1