Тема: Проблемы с поиском в TCsdnAxForm

TechnologiCS 5.7.0(10954)

В приложении есть несколько форм класса TCsdnAxForm, на которые выводятся модули TechnologiCS (архив и номенклатурный справочник).
При работе приложения имеются следующие проблемы:

  1. Локальный поиск не работает, ни в архиве, ни в номенклатурном справочнике

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

Подскажите, пожалуйста, что нужно сделать, чтобы поиск работал так, как надо.

Re: Проблемы с поиском в TCsdnAxForm

Добрый день!
Наша проблема сродни Вашей, извините, что пристраиваюсь (пишу впервые, правил не знаю).
Из приложения VB вызываю справочник, напр.,
PlantDep.ShowModal("...")
Стандартный поиск TCS в этом окне не работает, как положено. А именно, появляется окошко поиска, но сразу пропадает текстовый курсор, невозможно ничего ввести, и теряется управление окном поиска.
Из положения выходим быстрым поиском (при соответствующей настройке TCS), но было бы удобно пользоваться и стандартным поиском. Может, в VB что-то прописать надо, или есть другой выход?
TCS 5.0.2

Re: Проблемы с поиском в TCsdnAxForm

Честно говоря пока не получается повторить подобные ситуации. Можно поподробнее, а в идеале бы и пример скриптовый (хотя пример актулен для 5.7 только видимо).

Re: Проблемы с поиском в TCsdnAxForm

TCS 5.0.2
На всякий случай публикую коды

Private Sub Command2_Click()        'Êíîïêà ÖÅÕ
Set PlantDep = TCSapp.PlantDepartments
If Not PlantDep Is Nothing Then
   If PlantDep.ShowModal("Âûáåðèòå öåõ") = 1 Then      'ÎÊ, öåõ âûáðàí
      Text5.Text = PlantDep.Properties("CEHA_NUMBER").DisplayText & " " & PlantDep.Properties("CEHA_SECTOR").DisplayText & " " & PlantDep.Properties("NAME").DisplayText
      id_ce = PlantDep.Properties("ID").DisplayText
   End If
End If
Set PlantDep = Nothing
End Sub

или

Private Sub Command1_Click()
Set ProfCode = TCSapp.ProfessionCodes
ProfCode.Properties("NAME").SortType = stAscending   'Ñîðòèðîâêà ïî Íàèìåíîâàíèþ
If ProfCode.RunModuleForSelect("Âûáåðèòå êîä ïðîôåññèè", False) Then
        id = ProfCode.Properties("ID").DisplayText
        text_(0).Text = ProfCode.Properties("NOTE").DisplayText & " " & ProfCode.Properties("NAME").DisplayText
End If
'Set ProfCode = Nothing
End Sub
 

В обоих случаях поиск не работает.
Т.е. при его вызове появляется окно Поиска. Но ничего ввести в него и нечего с ним самим сделать (переместить, закрыть) не удаётся. Как будто окно поиска просто нарисовалось на экране и более ничего. Далее щёлкнув в области справочника, продолжаем с ним работать (со справочником).

Re: Проблемы с поиском в TCsdnAxForm

Ваш пример у меня ведет  себя абсолютно корректно (на наших формах ввода, да и другие примеры аналогичные работают на разных языках ).

Re: Проблемы с поиском в TCsdnAxForm

В скрипте

               If CSDN_ConnectDLL.ConnectDll("ProjectForTest.MainClass", objDll, 1) Then
                res = objDll.Korr_frmDialog(TCSapp, TCSActiveModule)     ' îáð
               End If 

В VB код класса

Public Function Korr_frmDialog(vTCSapp As Variant, vTCSActiveModule As Variant) As Variant
    Korr_frmDialog = Korr_Dialog_Rec.Start_Rec(vTCSapp, vTCSActiveModule)    'ÎÁÐ Êîð-êà ÒÏ ìåõîáð.
End Function

В VB код формы

Dim TCSapp As CSDN.Tcs_Application
Dim TCSActiveModule As CSDN.GModule
...
Public Function Start_Rec(vTCSapp As Variant, vTCSActiveModule As Variant) As Variant
    Set TCSapp = vTCSapp
    Set TCSActiveModule = vTCSActiveModule
...
    Me.Show vbModal
...
End Function

Private Sub Command1_Click()
Set ProfCode = TCSapp.ProfessionCodes
ProfCode.Properties("NAME").SortType = stAscending   'Ñîðòèðîâêà ïî Íàèìåíîâàíèþ
If ProfCode.RunModuleForSelect("Âûáåðèòå êîä ïðîôåññèè", False) Then
        id = ProfCode.Properties("ID").DisplayText
        text_(0).Text = ProfCode.Properties("NOTE").DisplayText & " " & ProfCode.Properties("NAME").DisplayText
End If
'Set ProfCode = Nothing
End Sub

Здесь в ProfCode.RunModuleForSelect поиск не работает, как надо. Хотя остальные кнопки (фильтр, настройка сетки, добавить, ред., уд. и т.д) панели окна функционируют нормально.
Консультировались с коллегами на соседнем предприятиии, у них та же ситуация (как у нас), версия та же.

Re: Проблемы с поиском в TCsdnAxForm

Версия VB 6.0

Re: Проблемы с поиском в TCsdnAxForm

Ну с сделал пример попроще (хотя подобных примеров масса)

VB -code

Dim TCSapp As CSDN.Tcs_Application
Dim TCSActiveModule As CSDN.GModule


Public Function Start_Rec(vTCSapp As Variant, vTCSActiveModule As Variant) As Variant
    Set TCSapp = vTCSapp
    Set TCSActiveModule = vTCSActiveModule
    
    Set ProfCode = TCSapp.ProfessionCodes
    ProfCode.Properties("NAME").SortType = stAscending
    If ProfCode.RunModuleForSelect("COOOL", False) Then
        id = ProfCode.Properties("ID").DisplayText
    End If
End Function

TechnologiCS script

Sub Test12345                    
 Set  objDll = CreateObject( "TestProject.MainClass" )
 res = objDll.Start_Rec(TCSapp, TCSApp.NmkClasses)
 Set  objDll = Nothing 
End Sub

Все работает прекрасно.


Ктстати по первому посту все оказалось намного проще - причина в том что показываются сразу два модуля TechnologiCS  и поиск по активной клавише срабатывает не на том модуле что думает пользователь. Если выбирать команду через меню - все ок.

Re: Проблемы с поиском в TCsdnAxForm

Добрый день! Возвращаюсь к проблеме поиска TCS из форм VB.
Есть ли у Вас замечания по нашим кодам в сообщении от 31.03.2010?

Re: Проблемы с поиском в TCsdnAxForm

Добрый. Сложно сказать.  Только то что в посте выше. Был сервис пак на 5.7 http://www.technologics.ru/service/file … 65072.html где добавили возможность поиска и сортировки в IUserGModule, он не связан с вашей ситуацией, но он тоже работает без проблем.

В процессе разборок были найдены небольшие отличия с фокусом в поведении 5.7 и 5.0.2, но это как раз проявлялось на 5.7 ( у Дмитрия). Честно говоря не помню как  он разрешил проблемку в итоге.

Re: Проблемы с поиском в TCsdnAxForm

Пробую создать Ваш пример (от 1.04.2010).
Вы создаёте проект ActiveX Dll? и VB-код пишете в MainClass(код)?
Тогда при создании TestProject.dll появляется ошибка компиляции: "Определяемый пользователем тип не определён", указывая на строку

Dim TCSapp As CSDN.Tcs_Application

Что посоветуете?

Re: Проблемы с поиском в TCsdnAxForm

Нужно подключить библиотеку типов ( References- > путь до TCSApi.tlb ) либо использовать позднее связывание не декларируя типы (то есть работать с Object ) ( то есть просто Dim TCSapp As Object )



Да создаю  ActiveX Dll.  А код для этого примера особо без разницы где.

Re: Проблемы с поиском в TCsdnAxForm

Да, Ваш пример у меня тоже работает.

Проблему снимаю, разобралась.
Достаточно было добавить 2 команды в процедуру

Private Sub Command1_Click()
[b][u]Me.Hide[/u][/b]
Set ProfCode = TCSapp.ProfessionCodes
ProfCode.Properties("NAME").SortType = stAscending   'Ñîðòèðîâêà ïî Íàèìåíîâàíèþ
If ProfCode.RunModuleForSelect("Âûáåðèòå êîä ïðîôåññèè", False) Then
        id = ProfCode.Properties("ID").DisplayText
        text_(0).Text = ProfCode.Properties("NOTE").DisplayText & " " & ProfCode.Properties("NAME").DisplayText
End If
'Set ProfCode = Nothing
[b][u] Me.Show vbModal[/u][/b]
End Sub

и поиск заработал.
Excuse me!