Тема: Добавление новой номенклатуры в справочник

Добрый день! Подскажите пожалуйста как добавить новую номенклатуру в определенную ветку классификатора справочника программно. Ну, например, что-то похожее на CreateDoc только для номенклатуры?(делфи)

Re: Добавление новой номенклатуры в справочник

Здравствуйте! Тут стандартный способ как во всех справочниках - CreateNew заполнение свойств, SaveChangesEx. Пример копирования здесь приведен https://forum.technologics.ru/post12651.html#p12651

Спасибо сказали: q41HCxSH0bAz1Reugyc01

Re: Добавление новой номенклатуры в справочник

Добрый день! Для добавления номенклатуры перешел в некий класс

Nmk1:= App1.Nomenclatures[1038]

. Как можно перейти к определенной ветке этого класса, на любом уровне вложенности?

Re: Добавление новой номенклатуры в справочник

https://forum.technologics.ru/post12578.html#p12578 пример работы с деревом (он во всех режимах такой)

Спасибо сказали: q41HCxSH0bAz1Reugyc01

Re: Добавление новой номенклатуры в справочник

получаю окно с классом номенклатуры

Nmk1:= App1.Nomenclatures[5];
Nmk1.ShowModal[''];

, В ID номенклатуры указываю NMK_CLASSIF_TYPE_ID.  Нет ли какого нибудь объекта в котором можно получить окно не по NMK_CLASSIF_TYPE_ID, а по NMK_CLASSIF_ID?

Re: Добавление новой номенклатуры в справочник

Nmk1:= App1.Nomenclatures[5];

Вы таким образом получаете весь справочник номенклатуры.

Но обычных деревьях ноду можно найти так https://help.technologics.ru/7.1/TCSAPI … eId_13.htm

Re: Добавление новой номенклатуры в справочник

q41HCxSH0bAz1Reugyc0 пишет:

получаю окно с классом номенклатуры

Nmk1:= App1.Nomenclatures[5];
Nmk1.ShowModal[''];

, В ID номенклатуры указываю NMK_CLASSIF_TYPE_ID.  Нет ли какого нибудь объекта в котором можно получить окно не по NMK_CLASSIF_TYPE_ID, а по NMK_CLASSIF_ID?


Вот такую операцию хочу провести

 Nmk1:= App1.Nomenclatures[5];
        Nmk1.CreateNew;
        Nmk1.Properties['NAME'].Value:= 'УУУУУ';
        Nmk1.Properties['NOTE'].Value:='УУУУУ';
        Nmk1.Properties['NMK_CODE'].Value:= 'УУУУУ';
        Nmk1.SaveChanges;
        

,   но никак не могу добавить номенклатуру в конкретную ветку, только в корень класса.

Re: Добавление новой номенклатуры в справочник

Нужно выбрать эту ветку сначала или свойство NODE_ID выставить. Обычно так, хотя надо уточнить, бывают нюансы. в PropExplorer обычно все видно

Re: Добавление новой номенклатуры в справочник

q41HCxSH0bAz1Reugyc0 пишет:
q41HCxSH0bAz1Reugyc0 пишет:

получаю окно с классом номенклатуры

Nmk1:= App1.Nomenclatures[5];
Nmk1.ShowModal[''];

, В ID номенклатуры указываю NMK_CLASSIF_TYPE_ID.  Нет ли какого нибудь объекта в котором можно получить окно не по NMK_CLASSIF_TYPE_ID, а по NMK_CLASSIF_ID?


Вот такую операцию хочу провести

 Nmk1:= App1.Nomenclatures[5];
        Nmk1.CreateNew;
        Nmk1.Properties['NAME'].Value:= 'УУУУУ';
        Nmk1.Properties['NOTE'].Value:='УУУУУ';
        Nmk1.Properties['NMK_CODE'].Value:= 'УУУУУ';
        Nmk1.SaveChanges;
        

,   но никак не могу добавить номенклатуру в конкретную ветку, только в корень класса.

Спасибо! Разобрался

Re: Добавление новой номенклатуры в справочник

Лучше использовать SaveChangesEx. Он кидает исключение с ошибой,  а обычно просто SaveChanges возвращает False.

и перед созданием/изменением (либо не забывать после  неудачной SaveChanhes) вызвать CancelChanges. Если предыдущая операця завершилась с ошибкой модуль ждет отмены, что иногда вызывает неожиданные ошибки.

Спасибо сказали: q41HCxSH0bAz1Reugyc01