Re: Проблема с макросом(запуск макроса из другого макроса)

Доброго всем времени суток! Вот такой вопрос возник. Заходим в план производства выбираем макрос оформление сдачи посредством штрих кода, вводим штрих код, на формочке нажимаем кнопку корректировки фактической сдачи, оттуда выбираем макрос для ввода параметров фактической сдачи(мной написанный). Он нормально отрабатывает, параметры добавляет, но после его закрытия появляется пустая форма фактической сдачи и две кнопки ОК и закрыть, жму ок и получаю сообщение из первого макроса "оформление сдачи посредством штрих кода" :
"Layer is not longer valid".


Если проигнорировать то все вроде ОК, но хотелось бы узнать что это такое. Привожу код своего макроса (отдельно он отрабатывает нормально)

"Sub FormMacro_insertParam1(TCSActiveModule) 
Dim FI_NNar
Dim FI_Data
Dim FI_Razr
Dim FI_EdNorm
Dim FI_POpBr
Dim FI_NBrig
Dim FI_KUR   
LogObject.ScriptTimeOut = 0

FI_NNar=""

FI_Data=date   

FI_EdNorm=1   

Set wmfact=TCSActiveModule.Properties("WorkMans").AsIDispatch

' wmfact.ShowModal("")


If wmfact.Properties("WORK_CATEGORY_NOTE").IsNull   Then
FI_Razr=0
Else
FI_Razr=wmfact.Properties("WORK_CATEGORY_NOTE").AsInteger
End If

FI_NBrig=0 

FI_POpBr=0

FI_KUR=0   

Set par=TCSActiveModule.Properties("Parameters").AsIDispatch

FI_NNar=TCSApp.InputBox("Ввод параметра...","1. Введите номер наряда:",FI_NNar)
i=par.SetParameterValueByParCode( "TCS_N_NAR", FI_NNar, 0, True )


FI_Data=TCSApp.InputBox("Ввод параметра...","2. Введите дату фактического изг-ния:",FI_Data)
i=par.SetParameterValueByParCode( "FI_DATA", FI_Data, 0, True )

FI_Razr=TCSApp.InputBox("Ввод параметра...","3. Введите разряд работы:",FI_Razr) 
i=par.SetParameterValueByParCode( "FI_RAZR", FI_Razr, 0, True )

FI_EdNorm=TCSApp.InputBox("Ввод параметра...","4. Введите код единицы нормир-я:",FI_EdNorm)
i=par.SetParameterValueByParCode( "TCS_WM_EN", FI_EdNorm, 0, True )

FI_NBrig=TCSApp.InputBox("Ввод параметра...","5. Введите номер бригады:",FI_NBrig)
i=par.SetParameterValueByParCode( "FI_NBRIG", FI_NBrig, 0, True )

If TCSActiveModule.Properties("IsSpoilage").AsBoolean=True  Then
FI_POpBr=TCSApp.InputBox("Ввод параметра...","6. Процент оплаты брака(0-100):",FI_POpBr)
i=par.SetParameterValueByParCode( "FI_POPBR", FI_POpBr, 0, True )

End If

FI_KUR=TCSApp.InputBox("Ввод параметра...","7. Код увеличения расценки:",FI_KUR)
i=par.SetParameterValueByParCode( "FI_KUR", FI_KUR, 0, True )
     
TCSActiveModule.Refresh


'TCSActiveModule.ChildModules.ModuleByName("OrderFactParameters").Refresh

Call TCSApp.ShowMessageBox("Сообщение...", "Ввод параметров окончен.")

End Sub"

Re: Проблема с макросом(запуск макроса из другого макроса)

Получается, что во время выполнения программы Вы меняете исходный объект TCSActiveModule. Естественно сыпятся ошибки. Не делайте так.

Re: Проблема с макросом(запуск макроса из другого макроса)

Спасибо за ответ. Но хотелось бы уточнить (не совсем понял), впринципе нельзя так в процессе работы макроса "оформление сдачи посредством штрих кода" другим макросом ввести\откорректировать параметры фактической сдачи. Или мне как то нужно откорректировать свой код? (хотя как обойтись без TCSActiveModule пока не могу понять).

Re: Проблема с макросом(запуск макроса из другого макроса)

Дело не в конкретном макросе. Нельзя открыв одной программой окно TechnologiCS, запускать из него другую программу.
Если необходим запуск двух скриптов, напишите третий скрипт, который будет запускать первые два, подставляя им нужный объект.