Тема: SetParameterValueByParCode C#
Добрый день!
Для одних номенклатур параметр задаётся, для других - нет.
Если изменить вручную обозначение номенклатуры NMK1 на любой другой, то параметр задаётся.
internal static class Program { private static TCS _fTcs = new TCS(); private static Tcs_Application _tcsApp; public static void Main(string[] args) { _tcsApp = _fTcs.Login(); SetParValue("NMK1"); Console.WriteLine("==========================="); SetParValue("NMK2"); _tcsApp = null; _fTcs = null; GC.Collect(); GC.WaitForPendingFinalizers(); } private static void SetParValue(string note) { var nmk = _tcsApp.Nomenclatures[100]; var r = nmk.Locate["NOTE", note, 0]; if (!r) { return; } var pars = (IParameterValues) nmk.Properties["Parameters"].AsIDispatch; var nmkId = nmk.Properties["ID"].AsInteger; var nmkClassifTypeRef = nmk.Properties["NMK_CLASSIF_TYPE_REF"].AsInteger; Console.WriteLine("NOTE = " + nmk.Properties["NOTE"].AsString); Console.WriteLine("NMK_CLASSIF_TYPE_REF = " + nmkClassifTypeRef); var r2 = pars.SetParameterValueByParCode["SomeParCode", nmk.Properties["NOTE"].AsString, nmkId, true]; Console.WriteLine("SetParameterValueByParCode = " + r2); } }
Вывод в консоль:
NOTE = NMK1 NMK_CLASSIF_TYPE_REF = 100 SetParameterValueByParCode = False =========================== NOTE = NMK2 NMK_CLASSIF_TYPE_REF = 100 SetParameterValueByParCode = True