Re: Изменение параметров номенклатурной партии

Хочу следующим скриптом изменить значение параметра номенклатурной партии


Sub FormMacro_Test1(TCSActiveModule) 

    Dim NMks
    Dim NMkId
    Dim NomenclatureBatchs
    Dim I

    If  TCSApp.NmkClasses.RunModuleForSelect("Выберите класс", False) Then
     
        Set NMks = TCSApp.Nomenclatures(TCSApp.NmkClasses.Properties("ID").AsInteger)
         
        If NMks.RunModuleForSelect("Выберите номенклатуру", False) Then

            NMkId = NMks.Properties("ID").AsInteger

            Set NomenclatureBatchs = TCSApp.Inventory.NomenclatureBatchs( NMkId ) 
             Set param_Batchs = NomenclatureBatchs.Properties("Parameters").AsIDispatch 


              I = param_Batchs.ShowModal("Параметры партии номенклатуры")
            If param_Batchs.EditAction.Enabled Then
            Call TCSApp.ShowMessageBox("1", "Можно редактировать" )
            
Call param_Batchs.Edit   
                       param_Batchs.Properties("PAR_VALUE").Value="12" 
            Call param_Batchs.SaveChanges                ' Сохраним изменения 
            Call param_Batchs.CancelChanges              ' В случае ошибки отменим их
         
Else
            Call TCSApp.ShowMessageBox("2", "Нельзя редактировать" )             
End If
             Set param_Batchs = Nothing

            Set NomenclatureBatchs = Nothing
             
        End If
    End If
End Sub

Выбираю класс, номенклатуру, партию. После сообщения "Можно редактировать"  при выполнении оператора 
    Call param_Batchs.Edit   
Получаю сообщение:
Модуль данных не допускает редактирования
CSDN.ParameterValues

Где у меня ошибка?

Re: Изменение параметров номенклатурной партии

Используйте интерфейс для значений параметров IParameterValues


Sub FormMacro_Test1()

    Dim NMks
    Dim NMkId
    Dim NomenclatureBatchs
    Dim I

    If TCSApp.NmkClasses.RunModuleForSelect("Выберите класс", False) Then

        Set NMks = TCSApp.Nomenclatures(TCSApp.NmkClasses.Properties("ID").AsInteger)

        If NMks.RunModuleForSelect("Выберите номенклатуру", False) Then

            NMkId = NMks.Properties("ID").AsInteger

            Set NomenclatureBatchs = TCSApp.Inventory.NomenclatureBatchs( NMkId )
            Dim param_Batchs
            Set param_Batchs = NomenclatureBatchs.Properties("Parameters").AsIDispatch

            I = param_Batchs.ShowModal("Параметры партии номенклатуры")
'-----------------------------------------------------------------------            
'новые строки
            Dim EditResult
            Dim PAR_Code        : PAR_Code = "TCS_MZ_RZ"
            Dim ParValue        : ParValue = "12"
            Dim NMK_ID          : NMK_ID = -1
            Dim ReplaceIfExists : ReplaceIfExists = True
            EditResult = param_Batchs.SetParameterValueByParCode( PAR_Code, ParValue, NMK_ID, ReplaceIfExists ) 
'-----------------------------------------------------------------------            
' удаленные строки                       
'            If param_Batchs.EditAction.Enabled Then
'                Call TCSApp.ShowMessageBox("1", "Можно редактировать" )
'
'                Call param_Batchs.Edit
'                param_Batchs.Properties("PAR_VALUE").Value="12"
'                Call param_Batchs.SaveChanges ' Сохраним изменения
'                Call param_Batchs.CancelChanges ' В случае ошибки отменим их
'
'            Else
'                Call TCSApp.ShowMessageBox("2", "Нельзя редактировать" )
'            End If
'-----------------------------------------------------------------------            
            Set param_Batchs = Nothing

            Set NomenclatureBatchs = Nothing

        End If
    End If
End Sub