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


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

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



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

2.


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

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




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






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

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

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

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

Удачи!


using System;

using System.Collections;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Windows.Forms;

using TFlex.DOCs.Model.Macros;

using TFlex.DOCs.Model.Macros.ObjectModel;



using TFlex.DOCs.Model.References.ActiveAction; //обязательно объявлять

using TFlex.DOCs.Model.References.ActiveActions; //обязательно объявлять

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

using TFlex.DOCs.Model.Processes.Events.Contexts.Data; //обязательно объявлять

using TFlex.DOCs.Model.References;

using TFlex.DOCs.Model.References.Procedures; //обязательно объявлять

using TFlex.DOCs.Model.References.Nomenclature.ModificationNotices;

using System.Text;

using System.IO;



public class Macro : MacroProvider

{

public Macro(MacroContext context)

: base(context)

{

}



private EventContext КонтекстСобытияБП //инициализируем данные процесса

{

get; set;

}



private StateObject Этап //инициализируем //инициализируем данные процесса

{

get; set;

}



private StateContextData ДанныеЭтапа //инициализируем данные процесса

{

get; set;

}



private ActiveActionData ДанныеТекущегоДействия //инициализируем данные процесса

{

get; set;

}



private ActiveActionReferenceObject ТекущееДействие //инициализируем данные процесса

{

get; set;

}



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

{

get; set;

}



private ReferenceObject[] ВспомогательныеОбъекты

{

get; set;

}



public override void Run()

{

КонтекстСобытияБП = Context as EventContext;//контекст событий по БизнесПроцессу

if (КонтекстСобытияБП != null)

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

{

ДанныеЭтапа= КонтекстСобытияБП.Data as StateContextData;

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

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

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



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

// Конец





List<ReferenceObject> nomenclatureObjects = new List<ReferenceObject>();

List<ReferenceObject> undoCheckOutObjects = new List<ReferenceObject>();

bool needcheckIn = false;



foreach (ModificationNoticeWithActionsReferenceObject ro in ОсновныеОбъекты.OfType<ModificationNoticeWithActionsReferenceObject >())

foreach (ActionReferenceObject action in ro.ActionObjects)

{

try

{

if (action.Apply(out needcheckIn))

{



if (needcheckIn)

{

ReferenceObject changingObject = action.GetChangingObject();

if (!nomenclatureObjects.Contains(changingObject))

nomenclatureObjects.Add(changingObject);

}

}

else

if (needcheckIn)

{

ReferenceObject changingObject = action.GetChangingObject();

if (!undoCheckOutObjects.Contains(changingObject))

undoCheckOutObjects.Add(changingObject);

}



}

catch (Exception e)

{

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

if (needcheckIn && action != null)

{

ReferenceObject changingObject = action.GetChangingObject();

if (!undoCheckOutObjects.Contains(changingObject))

undoCheckOutObjects.Add(changingObject);

}

}

}

TFlex.DOCs.Model.Desktop.Desktop.CheckIn(nomenclatureObjects, "Выполнение автоматических действий", false);

TFlex.DOCs.Model.Desktop.Desktop.UndoCheckOut(undoCheckOutObjects.Where(o=>o!=null && o.CanUndoCheckOut));

}

}

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