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


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

Страницы: 1 2 След.
Выбранные элементы
 
Отлично, именно то что нужно!
Выбранные элементы
 
Доброго всем времени суток у меня такой вот вопрос, я хочу написать макрос для группового копирования объектов справочника в T-Flex DOCs, имеется ввиду, что нужно скопировать выбранные объекты в справочнике в буфер. То есть если открываешь какой-нибудь справочник, затем выделяешь объекты, они становятся выбранными, а как в макросе обратиться именно к этим выбранным объектам не могу понять...подскажите, если кто сталкивался или есть ли какие-нибудь идеи
Схемы процессов и как с ними бороться
 
Доброго всем времени суток, как известно наверное многим, основным инструментом взаимодействия пользователей являются бизнес-процессы и процедуры, основные моменты работы с ними понятны, но хотелось бы более понятного описания каждого блока, не знаю возможно такое могут предоставить только в тех. поддержке, но вдруг нет, может у кого нить есть какая нибудь информация по этому, т.к. в руководстве данный раздел описан скажем прямо не самым лучшим образом...
Обновление страниц в T-FLEX DOCs
 
Доброго всем времени суток, возникла задача обновлять страницы клиента в автоматическом режиме, подскажите никто с таким не встречался?! Как это можно решить?
Мой пользователи T-Flex DOCs очень сильно ругаются, что при каждом том или ином изменении им приходится каждый раз обновлять страницу нажимая на кнопочку в правом верхнем углу(или f5 на клавиатуре) возможно ли каки либо образом организовать обновление страниц автоматически например с периодом в 3 минуты???
DOCs, событие "Изменение связи"
 
хочу заметить что тут вариант описан когда одни и те же объекты могут находиться в разных дочерних объектах, а удаляется из родителя только в том случае если нигде не повторяется
DOCs, событие "Изменение связи"
 
Делал я значит делал этот супер пупер макрос и вот что получилось, косячки наверняка есть, однако все работает на УРА:

[CODE]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;

public class Macro : MacroProvider
{
   public Macro(MacroContext context)
       : base(context)
   {
       bool test = false;
       Объект работа = ТекущийОбъект;
       Объект обраб = null;
       Объекты объектыработы = работа.СвязанныеОбъекты["Связь с объектом"];
       Объекты тестработы = работа.СвязанныеОбъекты["Список объектов для сравнения"];
       int i=0, j=0, c=0;
       foreach( Объект тест_раб in тестработы)
           {
           i++;
           }
       foreach( Объект об_раб in объектыработы)
           {
            j++;
           }
     
       string[] список = new string[i] , список2= new string[j];
       
       if (i<=j) c=j;
       else c=i;
       
       bool[] ok = new bool[c];
       
       for (int ax=0; ax<c; ax++)
           {
           ok[ax]=false;
           }
       i=0;
       j=0;
       
       if (работа.РодительскийОбъект == null)
           {
           Сообщение ("Ошибка", "Не найден проект");
           return;
           }
       else
           {    
           Объект род_проект = работа.РодительскийОбъект;
           род_проект.Изменить();  
           Объекты объектырод = род_проект.СвязанныеОбъекты["Связь с объектом"];
           Объекты Дочобъекты = род_проект.ДочерниеОбъекты;
           int kol=0, mk=0, at=0;
           Объекты дочобсписка = null;
           foreach (Объект дочоб in Дочобъекты)
               {
               if(дочоб.ToString()!=работа.ToString())
                   {
               дочобсписка = дочоб.СвязанныеОбъекты["Связь с объектом"];
               mk=at;
               at=0;

               foreach(Объект дочобсп in дочобсписка)
               {    
               at++;
               }
                  if(at>mk) mk=at;
               kol++;
              // Сообщение ("", "mk-"+mk.ToString()+" at-"+at.ToString()+" kol-"+kol.ToString());
               }
               }
           string[,] список3 = new string[mk,kol];
           kol=0;
     
              дочобсписка =null;
           foreach (Объект дочоб in Дочобъекты)
               {
               if(дочоб.ToString()!=работа.ToString())
                   {
               дочобсписка = дочоб.СвязанныеОбъекты["Связь с объектом"];
               int m=0;
               foreach(Объект дочобсп in дочобсписка)
               {    
                  if (m<mk){
                  список3[m,kol]= дочобсп.Параметр["Наименование"];
                  m++;
                   }
                  }
               kol++;
               }
               }
            //   Сообщение ("", mk.ToString()+" "+kol.ToString());
         /* for (int n=0; n<kol; n++)
               for (int l=0; l<mk; l++)
                   {
               Сообщение ("", список3[l,n]+" "+l.ToString()+" "+n.ToString());
           } */
           
           if (объектыработы == null) return;
           if (тестработы != null)
               {
               foreach( Объект тест_раб in тестработы)
                   {
                   список[i]=тест_раб.Параметр["Наименование"];
                   i++;                      
                   }
               foreach(Объект об_раб in объектыработы)
                   {
                   список2[j] = об_раб.Параметр["Наименование"];
                   j++;
                   }
               for(int a=0; a<i; a++)
                   {
               for(int b=0; b<j; b++)
                   {
                         if (список[a]==список2[b])
                          {
                          ok[a] = true;
                          }
                   }
           }    
       
       int d=0, f=0;
       foreach( Объект об_раб in объектыработы)
           {
               род_проект.Подключить("Связь с объектом", об_раб);              
           }
     
       foreach( Объект тест_раб in тестработы)
           {
 
             for(int az1=0; az1<c; az1++)
             {
               if(az1<i)                  
               if((тест_раб.Параметр["Наименование"]==список[az1])&&(ok[az1] == false))
                 {
               test = false;    
                   for (int n=0; n<kol; n++)
                     for (int l=0; l<mk; l++)
                            {
                             if(тест_раб.Параметр["Наименование"]==список3[l,n]) test = true;
                            }
                 if (test == false) род_проект.Отключить("Связь с объектом", тест_раб);    
       
               }
             }
           }
         // Сообщение ("Оповещение", "Повтор - "+test.ToString());
       }
       else
           {
          foreach( Объект об_раб in объектыработы)
           {
              род_проект.Подключить("Связь с объектом", об_раб);
           }
       }
       род_проект.Сохранить();
       }              
   }
}[/CODE]
Удивительное и невероятное "Управление проектами" в DOCs 14, Возникает ошибка "Ссылка на объект не указывает на экземпляр объекта."
 
В общем одна бедой меняется другой, обновились мы до 14.1.0.1 и чтобы вы думали упали все макросы которые писались продолжительное время, а все из-за отсутствия TFlex.DOCs.Workflow.dll, так что всех предупреждаю будьте внимательны при обновлении, если у кого есть от этой версии файлик поделитесь плиз...
DOCs, событие "Изменение связи"
 
О! Точно! спасибо за идею, Валерий, попробую сделать со сравнением списков, думаю должно все получиться, обязательно отпишусь как получу какие-нибудь результаты и макрос приложу тогда уж...
DOCs, событие "Изменение связи"
 
Да вы правильно поняли, что нужно чтобы к родительскому объекту подключались все объекты подключенные по связи дочерних объектов, но так же чтобы и работал обратный процесс при отключении этих объектов. В принципе я с вами согласен - ваш вариант действительно будет работать (насчет того чтобы "вешать"  макрос на сохранение объекта) уверен даже, потому что так я уже пробовал делать, только вот тогда возникает проблема с быстродействием, такое решение получается не оптимальным, быстродействие такого решения очень сильно зависит от количества подключенных объектов...

Есть конечно вариант сделать через кнопку, то есть зайти через "Управление справочниками", там настроить диалог в дочернем объекте и повесить там на кнопку макрос, который будет отключать объекты и в дочернем, и в родительском объектах - по быстродействию это будет быстрее (не нужно прочесывать кучу уже подключенных объектов, а можно напрямую находить в родительском - например по параметру), но тогда нужно заморачиваться с диалогом, полностью его настраивать (что не всегда удобно, т.к. могут использоваться диалоги по умолчанию)

Интересует же все таки возможность добраться до уже существующих "команд", причем в данном частном случае - это команда "Отключить", просто интересно есть ли такая возможность в DOCs?  
DOCs, событие "Изменение связи"
 
Всем доброго времени суток, перейдем сразу к делу:
Допустим у вас есть справочник, а в данном справочнике есть родительский объект и дочерний, при этом к обоим объектам можно подключать другие объекты со связью "на любой справочник", мы пишем с вами довольно простой макрос, чтобы объекты подключенные по такой связи к дочернему объекту, автоматически подключались к родительскому объекту. Все что я написал это так скажем начальные условия, теперь же возникает другая задача, которую и требуется разрешить, предположим, что нужно отключить через дочерний объект эти ранее подключенные объекты по связи "на любой справочник" да таким образом что бы и в родительском объекте они отключились тоже, каким способом можно это решить?
Хотелось бы это решить с помощью стандартной команды "Отключить", но такой способ я так понимаю возможен только если подключать макрос к событию "Изменение связи", однако в таком случае не будет работать первый макрос, потому что в первом макросе тоже изменяется связь с тем же наименованием. А отдельную кнопку делать и писать на неё макрос по которому будут отключаться объекты не хочется. Можно каким либо образом запускать макрос при выполнении конкретной команды "Отключить"?

Старался проблему расписать наиболее доходчиво, но если, что - готов разъяснить более доходчиво, не прикладываю никаких макросов, потому что это общий случай и я уже е в первый раз встречаюсь с подобной вещью.  
Удивительное и невероятное "Управление проектами" в DOCs 14, Возникает ошибка "Ссылка на объект не указывает на экземпляр объекта."
 
Нет, все справочники активированы!
Удивительное и невероятное "Управление проектами" в DOCs 14, Возникает ошибка "Ссылка на объект не указывает на экземпляр объекта."
 
Это конечно хорошее решение, вот только чтобы обновить версию до 14.1.0.1 её нужно купить наверно...
Удивительное и невероятное "Управление проектами" в DOCs 14, Возникает ошибка "Ссылка на объект не указывает на экземпляр объекта."
 
Доброго времени суток, возникла большая проблема, не работает модуль "Управление проектами", в данном модуле не создаются объекты, причем есть возможность нажать на кнопку создать-> выбрать тип.., затем выбираешь тип - иии.........о чудо!!! Ошибка..."Ссылка на объект не указывает на экземпляр объекта.", подскажите пожалуйста была ли у кого такая проблема и как её можно решить?

В журнале ошибок появляется следующее сообщение:

14.0.2.63 Time: 08.09.2015 15:35:03, Error:System.NullReferenceException
Message: Ссылка на объект не указывает на экземпляр объекта.
Source: TFlex.DOCs.ProjectManagement
Stack trace:
  в TFlex.DOCs.References.ProjectManagement.ProjectElement.OnStartDateChanged(Object oldValue)
  в TFlex.DOCs.References.ProjectManagement.ProjectElement.OnParameterChanged(Parameter p, Object oldValue)
  в TFlex.DOCs.References.ProjectManagement.Project.OnParameterChanged(Parameter p, Object oldValue)
  в TFlex.DOCs.Model.References.ReferenceObject.RaiseParameterChanged(Parameter p, Object oldValue)
  в TFlex.DOCs.Model.Parameters.ReferenceObjectParameters.RaiseParameterChanged(Parameter p, Object oldValue)
  в TFlex.DOCs.Model.Parameters.Parameter`1.SetValue(Object value, Boolean updateModified)
  в TFlex.DOCs.Model.Parameters.DateTimeParameter.SetValue(Object value)
  в TFlex.DOCs.Model.Parameters.Parameter.set_Value(Object value)
  в TFlex.DOCs.Model.Parameters.Parameter`1.set_Value(T value)
  в TFlex.DOCs.References.ProjectManagement.ProjectElement.<>c__DisplayClasse.<OnBeginChanges>b__c()
  в TFlex.DOCs.References.ProjectManagement.ProjectElement.ChangeDate(Action action)
  в TFlex.DOCs.References.ProjectManagement.ProjectElement.OnBeginChanges(Boolean isAdded)
  в TFlex.DOCs.References.ProjectManagement.Project.OnBeginChanges(Boolean isAdded)
  в TFlex.DOCs.Model.References.ReferenceObject.RaiseReferenceObjectCreating()
  в TFlex.DOCs.Model.References.Reference.GenerateNewReferenceObject(ReferenceObject parentObject, ClassObject classObject)
  в TFlex.DOCs.UI.Objects.Managers.ReferenceObjectEditManager.CreateReferenceObjectInReference(Reference reference, ClassObject classObject, ReferenceObject prototype, ParentStruct parent, IWin32Window control, IReferenceCompositeVisualRepresentation mainView, CopyReferenceObjectsContext copyContext, Boolean canUseBorrowObject)
  в TFlex.DOCs.UI.Objects.Managers.ReferenceObjectEditManager.CreateEditableReferenceObject(Reference reference, ClassObject classObject, ReferenceObject prototype, ParentStruct parent, IReferenceCompositeVisualRepresentation mainView, IWin32Window control, Action`1 afterInitializeDialog, Boolean showDialog, CopyReferenceObjectsContext copyContext, Boolean canUseBorrowObject)
  в TFlex.DOCs.UI.Objects.Managers.ReferenceObjectEditManager.CreateEditableObject(Reference reference, ClassObject classObject, ReferenceObject prototype, ParentStruct parent, IReferenceCompositeVisualRepresentation mainView, Action`1 afterInitializeDialog, ReferenceObject& newReferenceObject, Boolean showDialog)
  в TFlex.DOCs.UI.Objects.Commands.CreateReferenceObjectCommand.CreateUObject(Reference reference, ClassObject classObject, ReferenceObject prototype, ParentStruct parent, IReferenceCompositeVisualRepresentation mainView, ReferenceObject& newReferenceObject)
  в TFlex.DOCs.UI.Objects.Commands.CreateReferenceObjectCommand.CreateObjectByParent(ParentStruct parent, IReferenceCompositeVisualRepresentation refView, ReferenceObject& newReferenceObject)
  в TFlex.DOCs.UI.Objects.Commands.CreateReferenceObjectCommand.ExecuteImplement(VisualRepresentationCommandSender sender, IObject[] selectedObjects)
  в TFlex.DOCs.UI.Objects.Commands.Command`1.CastExecute(TSender sender, IObject[] selectedObjects)
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
Отлично! Все работает, огромное вам спасибо) + балл, правда, спасибо!
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
Спасибо вам большое, но к сожалению все точно также осталось(( Опять ошибка #004
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
У нас сборочка номер : 14.0.2.63
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
Формат файла не поддерживается. [Код ошибки #004].

при импорте файла отчеты.ddx
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
В общем похоже проще попросить у тех поддержки скинуть мне новый файлик?
Но вообще я бы не прочь понять как это вообще работает, я так понял что это обычный механизм создания xml отчета!?
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
[QUOTE]Валерий Степаненко написал:
Можно откатить файл через окно версии.[/QUOTE]

Нет, в том то и дело, что нельзя, т.к. в справочнике только версия изменения существует, а первоначальной версии нет
Отчеты в DOCs 14, Вопрос, при редактировании шаблона !
 
Доброго всем времени суток, подскажите пожалуйста, я тут хотел было сделать новый отчет по образу и подобию отчета для справочника файлы, да вот только оплошность допустил, взял на редактирование Шаблон и применил измениния, а теперь он не работает, точнее при выборе отчета "Список файлов", теперь открывается отчет, но шаблон не заполняется, подскажите как откатиться назад и вообще как все же создать конкретный необходимый мне шаблон, чтобы там заполнялись все необходимые мне строки!?
Страницы: 1 2 След.