Тема: Просмотр технологии

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

Re: Просмотр технологии

Здравствуйте!
TechnologiCS, по умолчанию, не ведет данные о стоимости. Если вы их сами где то заводите (например в параметрах) или берете из внешней БД, то исходя из этого и будет пример. Вот пример пробега по операциям технологического процесса

Sub FormMacro_ShowTP(TCSActiveModule)
  If TCSApp.NMkClasses.ShowModal( "Выберите класс" )>0 Then 
    If TCSApp.Nomenclatures( TCSApp.NMkClasses.p_ID.AsInteger ).ShowModal( "Выберите номенклатуру" ) Then 
      Set Tp = TCSApp.Nomenclatures( TCSApp.NMkClasses.p_ID.AsInteger ).p_NmkTechnology.AsIDispatch
      If Not Tp Is Nothing Then
        'Dim Tp As INmkTechnology
        Tp.Filter.Active = True
        Tp.ClassType = 1 ' NmkClassType.ctOperation - Отобразим только операции
        res = Tp.ShowModal( "Это операции технологического процесса" )
        Set OperationIds = TCSApp.CreateStrings
        'Dim OperationIds As ICSDNStrings
        Call Tp.First
        While Not Tp.Eof 
          res = OperationIds.Add( Tp.p_ID.AsString ) 
          Tp.Next
        Wend
        For I=0 To OperationIds.Count-1
          Tp.ClassType = 8 ' NmkClassType.ctOborud - Отобразим только оборудование
          Call Tp.ShowOperation(  CLng( OperationIds.Strings(i) ) )
          res = Tp.ShowModal( "Это оборудование операции " + CStr(i+1) + "  технологического процесса" )          
          Tp.ClassType = 4 ' NmkClassType.ctCompMaterial - Отобразим только материал
          res = Tp.ShowModal( "Это материал операции " + CStr(i+1) + "  технологического процесса" )                    
        Next
      Else
        Call TCSApp.ShowErrorMessage( "Не имеет техпроцесса!" )
      End If
    End If
  End If

End Sub

хотя можно просто бежать по всему набору данных и анализировать ClassType.

Спасибо сказали: mater20041

Re: Просмотр технологии

Спасибо.

Re: Просмотр технологии

Пробег по набору данных делается стандартно ( смотрите методы интерфейса IDModule )

Call Module.First
While Not Module.Eof
  Module.Next
Wend

Для ускорения работы (когда данных много) можно использовать методы   BeginUpdateEndUpdate

Для работы с параметрами можно использовать интерфейс  IAttachedParams (он ограничен в количестве одновременно обрабатываемых параметров, не все объекты его поддерживают,  и его лучше задать в начале работы). Либо использовать стандартную работу через свойства объекта. Список текущих свойств объекта можно получить используя TCS API Explorer. В случае техпроцесса это будет свойство Parameters.

Доступ к техпроцессу можно всегда получить имея  идентификатор версии или номенклатуры через методы ITCS_Application - в выше приведенном примере именно так работа и ведется. Можно используя свойства текущего активного модуля ( из номенклатурного справочника,  рабочего стола пользователя, итоговой спецификации это будет свойство NmkTechnology - в данном случае получаем активную версию техпроцесса.

При активной работе с объектами полученными от TCSApp, не забывайте их удалять самостоятельно, так как иначе они накапливаются в памяти

 Set Tp = TCSApp.Nomenclatures( 1 ).p_NmkTechnology.AsIDispatch
 Tp.UserModuleName = Tp.UniqueUserModuleName
 ....
 Call TCSApp.DeleteModuleByUserModuleName( Tp.UserModuleName )