Тема: Поместить ссылку на рабочий стол пользователя

Доброго времени суток!
Пишется макрос для отбора записей из Номенклатуры и последующим помещением их на рабочий стол пользователя в заранее описанную папку. Возникли два вопроса.
Для автоматического создания классификатора на рабочем столе пользователя используется код

Set rs=TCSApp.UserNomenclatureDesktop 
    Set Nodes = rs.DbTree.RootNodes     
    If Not Nodes Is Nothing Then   
        Nodes.Item(0).Selected=True       
        Call rs.DbTree.CreateNew   
        rs.DbTree.Properties("NODETEXT").Value = "abc"         
        Call rs.DbTree.SaveChanges   
        Call rs.DbTree.CancelChanges   
        Call rs.DbTree.RefreshTree
     End If

В TechnologiCS 6 версии все работает, а для версии 5.0.2 выходит сообщение об ошибке "Не могу изменитьзапись".

И второй вопрос. Для непосредственного помещения ссылок на рабочий стол используется метод

If TCSApp.PutOnUserDesktop(UserList, NMkIdList, "Новые ПКИ", "Поместить на рабочий стол") Then             
                TCSApp.UserNomenclatureDesktop.Refresh   
End If

Возможно ли как-нибудь избежать появления вспомогательного окна и помещать ссылки сразу же в указанную папку?

Re: Поместить ссылку на рабочий стол пользователя

В TechnologiCS 6 версии все работает, а для версии 5.0.2 выходит сообщение об ошибке "Не могу изменитьзапись".

ну возможно ошибочка какая то в 5.0.2, на 5.7 уж лучше смотреть в этом случае.

Возможно ли как-нибудь избежать появления вспомогательного окна и помещать ссылки сразу же в указанную папку?

Похоже никак :(. Возьмем на доработку конечно же.

Re: Поместить ссылку на рабочий стол пользователя

Добрый день!
За почти 8 лет изменилась ли функция PutOnUserDesktop на возможность отправки номенклатуры без вспомогательного окна и сразу в указанную папку?
В PutOnUserDesktop TCS 7.9 вижу никаких изменений нет.

Re: Поместить ссылку на рабочий стол пользователя

Здравствуйте! Изменить функцию нельзя, мы ее и сами используем в том числе, а классификтор там не предусмотрен.

Но другого способа поместить ссылку на рабочий стол через АПИ я не вижу.
Должны быть доступны свойства на рабочем столе, но их нет.
Так что да, тут без изменений к сожалению.

А вы для чего используете рабочий стол?

Re: Поместить ссылку на рабочий стол пользователя

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

Re: Поместить ссылку на рабочий стол пользователя

Сделал макрос, который при отправляет на рабочий стол текущую номенклатуру и дополнительно заполняет заголовочные реквизиты значениями по умолчанию.
У меня на компьютере все работает замечательно, но у коллег при запуске макроса вылетает сама программа TechnologiCS. В чем проблема может быть?

Sub Send_na_norm(TCSActiveModule)
Dim TcsObj 'As CSDN.TCS
Dim App 'As CSDN.Tcs_Application
Dim Users 'As CSDN.Users
Dim NMks 'As CSDN.Nomenclatures
Dim UserList() 'As Long
Dim NMkIdList() 'As Long
Dim cn 'As Integer
'Dim TP' As CSDN.NmkTechnology
Dim i 'As Long
Set TcsObj = CreateObject("CSDN.TCS")
Set App = TcsObj.LoginCurrent
Dim UserListnorm 'as integer
Dim pars

 Dim NmkFullInfom, NMK_NOTE

 Dim Nmk 'As ISingleNomenclature
Set NmkFullInfo = TCSActiveModule.ChildModules.ModuleByName("NmkFullInfo").AsIDispatch
Set Nmk = theApp.SingleNmkFromNMkNote(NmkFullInfo.Properties("NMK_NOTE").value)
Call theApp.DeleteModuleByUserModuleName( Nmk.UserModuleName )

Dim vheader 'as IVersionHeaderItems
Dim Module 'as ICSDNAction

Set vheader = TCSActiveModule.ChildModules.ModuleByName("VersionHeader").AsIDispatch
Set Module = vheader.ActionList.ActionByName("FullFefaultAction")

     If vheader.Locate("PHEADTYPE_NAME", "Разработал", 0)  Then
     if len(vheader.Properties("PHEAD_VALUE").DisplayText) = 0 or vheader.Properties("PHEAD_VALUE").DisplayText = null then
       Module.Execute
    end if
    end if
       idnmk = Nmk.Properties("ID").displaytext
         if App.PutOnUserDesktop(Null, idnmk, "На нормирование", "Отправить на нормирование") then
            msgbox "ТП успешно отправлен на нормирование"
          end if


End Sub

Re: Поместить ссылку на рабочий стол пользователя

Set TcsObj = CreateObject("CSDN.TCS")
Set App = TcsObj.LoginCurrent

Это лишнее для макроса.

idNmk = Array( Nmk.Properties("ID").AsSafeInteger )

В хелпе написано Array нужен.

vheader.Properties("PHEAD_VALUE").DisplayText = null then

строка Null не может быть по хорошему. Ну и есть https://help.technologics.ru/7.9/TCSAPI … ull_13.htm