Заказ звонка

Закрыть

*
*
*

Модуль данных не допускает редактирования

Страницы: 1
RSS
Модуль данных не допускает редактирования
Мне нужно с помощью API установить значение параметра "Длина заготовки" класса "Материалы" в техпроцессе. Код параметра: TCS_MZ_DLZ
Действия должны быть аналогичны выполнению следующих инструкций SQL:

Код
upd ate dbo.TECHPAR set TECHPAR_VALUE = cast(@TECHPAR_VALUE as varchar) 
where TECH_ID = @TECH_ID and VER_ID = @VER_ID and PAR_ID = @PAR_ID 

upd ate dbo.TPROC_TP set TPROC_LENGTH = @TECHPAR_VALUE 
where TECH_ID = @TECH_ID and VER_ID = @VER_ID


Пытаюсь выполнить следующий код:

Код
  
    Set Tech_API = CreateObject("CSDN.TCS")  
    Set Tech_Application = Tech_API.Login
    'Получаем ссылку на техпроцесс
    Set Tech_Nmk_Positions = Tech_Application.NmkTechnology(36951, 1739)
    'Позиционируемся на материал
    If Tech_Nmk_Positions.Locate("ATTACH", "25", 0) Then
        'Получаем ссылку на параметры материала
        Se t Nmk_Parameters = Tech_Nmk_Positions.ChildModules.ModuleByName("TechnoParameters").AsIDispatch
        'Позиционируемся на длину заготовки TCS_MZ_DLZ
        If Nmk_Parameters.Locate("PAR_CODE", "TCS_MZ_DLZ", 0) Then
            'Переключаемся в режим редактирования
            Nmk_Parameters.Edit
            For i = 0 To Nmk_Parameters.PropertiesCount - 1
                Se t Single_Parameter = Nmk_Parameters.Properties(i)
                If Single_Parameter.Name = "TECHPAR_VALUE" Or Single_Parameter.Name = "PAR_VALUE_FOR_REPORT" Then
                    Single_Parameter.Value = "100"
                    'Сохраняем изменения
                    Nmk_Parameters.SaveChanges
                    Exit For
                End If
            Next i
            'Выходим из режима редактирования
            Nmk_Parameters.CancelChanges
        End If
    End If


Однако, при попытке выполнить Nmk_Parameters.Edit, получаю ошибку "Модуль данных не допускает редактирования". Разумеется, свойство Nmk_Parameters.AllowEdit = False
Если не вызываю метод Nmk_Parameters.Edit, получаю другую ошибку при попытке установить значение свойства Single_Parameter.Value = 100: "Данная операция не доступна в режиме просмотра"

Вопрос: Что нужно сделать с модулем, чтобы AllowEdit установить в True?
ЗЫ. Через графический интерфейс свойство устанавливается.
Для редактирования параметра используйте интерфейс INmkParameters
Цитата
Сергей Девятериков пишет:
Для редактирования параметра используйте интерфейс INmkParameters

Не подскажете, как получить ссылку на объект - параметр номенклатуры в техпроцессе, реализующий этот интерфейс? У меня не получается, кругом Module.IsParameterValues = False
Просто Вам надо работать не через .ChildModules, как Вы делеаете в строке
Код
Se t Nmk_Parameters = Tech_Nmk_Positions.ChildModules.ModuleByName("TechnoParameters").AsIDispatch 

а через Properties
Код
Se t Nmk_Parameters = Tech_Nmk_Positions.Properties("Parameters").AsIDispatch 

Ну а для того чтобы присвоить значение какому-то из параметров можно использовать SetCurrentParameterValue или SetParameterValueByParCode или SetParameterValueByParId
Спасибо, замечательно работает!
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)