Re: Как показать дерево для выбора классификатора

Еще раз здравствуйте.
Я сейчас пишу что то наподобие визарда для создания ПСп. У меня такой вопрос: для создания ПСп нужно заполнить поле NODE_ID (Ссылка на классификатор). Как мне показать дерево классификаторов для того что бы пользователь смог выбрать конкретный классификатор?

Re: Как показать дерево для выбора классификатора

AlexB писал(а):
Как мне показать дерево классификаторов для того что бы пользователь смог выбрать конкретный классификатор?


Если сначала выбирается классификатор, а потом создается ПСп, то можно создать специальную ПСп для такого случая (пустую), только чтобы работать с ее ID и COMMONTREE_ID и действлвать примерно так:

Sub FormMacro_SelClassif(TCSActiveModule)
  If TCSActiveModule.Locate("N_ORD_ID", "2415", 0) Then
    TCSActiveModule.CurrentRowSelected = True  
    Call TCSActiveModule.ActionList.ActionByName("ChangeClassifAction").Execute
  End If
  If TCSActiveModule.Locate("N_ORD_ID", "2415", 0) Then
    TCSActiveModule.DbTree.DbNodeByNodeId( TCSActiveModule.Properties("COMMONTREE_ID").AsInteger ).Selected = True
    Call MsgBox(TCSActiveModule.DbTree.Selected.Text)
    '..
    'Создаем ПСп и присваиваем COMMONTREE_ID = TCSActiveModule.Properties("COMMONTREE_ID").AsInteger
  End If
End Sub

:D

Если же ПСп уже есть то проще:

  If TCSActiveModule.Locate("N_ORD_ID", "2415", 0) Then
    TCSActiveModule.CurrentRowSelected = True  
    Call TCSActiveModule.ActionList.ActionByName("ChangeClassifAction").Execute
  End If

Re: Как показать дерево для выбора классификатора

Спасибо, Sh.
В продолжении темы, далее пытаюсь добавить пользователя и выставить ему прова, делаю так:


Set OrderRight = TCSActiveModule.ChildModules.ModuleByName("OrderRights").AsIDispatch
If  Not OrderRight Is Nothing Then  
    Call OrderRight.CreateNew
      OrderRight.Properties("USER_ID").Value = 1074
      OrderRight.Properties("N_ORDU_TR").Value = True
      OrderRight.Properties("N_ORDU_TP").Value = True
      OrderRight.Properties("N_ORDU_ADM").Value = True
      OrderRight.Properties("N_ORDU_SEE").Value = True
      OrderRight.Properties("N_ORDU_ACC").Value = True
      OrderRight.Properties("N_ORD_BLPS").Value = True
    On Error Resume Next
    Call OrderRight.SaveChanges
    Call OrderRight.CancelChanges
End If

После создания ПСп пользователь не добавился хотя и ошибки ни какой не было. Что не так?

Re: Как показать дерево для выбора классификатора

Разработчики, ахтунг!) Посоветуйте что-нибудь.

Re: Как показать дерево для выбора классификатора

Ну ошибка-то у Вас не выпадает из-за

On Error Resume Next 

в Вашем коде.

Re: Как показать дерево для выбора классификатора

После того как убрал:

On Error Resume Next

ничего не изменилось, ошибки все равно нет. :(

Re: Как показать дерево для выбора классификатора

посмотрите IProp.AccessType (PropertyGet)

please-change-link

Re: Как показать дерево для выбора классификатора

Т.е. доступ есть только на чтение? Получается что добавить пользователя и изменить прова нельзя с помощью API, так?

Re: Как показать дерево для выбора классификатора

Ну, может это самое

On Error Resume Next

где-то раньше в коде есть? Достаточно чтобы эта штука один раз "щелкнула" и тогда ошибки не вопят, до тех пор пока

On Error Goto 0

не встретится. Второй вариант, это может у Вас вот это

If  Not OrderRight Is Nothing Then  

False дает? Потому как лучше всё таки вот так писать

If  Not (OrderRight Is Nothing) Then  

Ну это так для общего развития  :D   

А по делу если, то не пытайтесь через АПИ пользователей добавлять - не получится. Во-первых Вы ломитесь через

ChildModules

, а этот путь позволяет только чтение, во-вторых если хоть раз в apiExplorer заглянете, то увидите там на закладке IPModule-IPModule (для нужного интерфейса) позволяет ли он AllowInsert или нет (пригодится на будущее).  :)

Re: Как показать дерево для выбора классификатора

Да, именно так

Re: Как показать дерево для выбора классификатора

Мдя... Визард становится уже не визардом :( Спасибо за ответы.

Re: Как показать дерево для выбора классификатора

Одно из самых гиморных дел в TechnologiCS - это добавление прав на ПСп, особливо когда этих ПСп много, а права всем разные нужны (в плане серийных номеров). 
А через API это сделать нельзя.  :( 
Ctrl+C, Ctrl+V - никак проблему не решает.

Re: Как показать дерево для выбора классификатора

А в перечень ПСп по ходу тоже нельзя добавить позицию?

Re: Как показать дерево для выбора классификатора

AlexB писал(а):
А в перечень ПСп по ходу тоже нельзя добавить позицию?

можно

Re: Как показать дерево для выбора классификатора

Но там же у объекта права только на чтение. Если можно то как?