• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Создание новых объектов с помощью InsertItem или NewObject

Автор TERMIT___, 19.06.13, 18:42:19

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

TERMIT___

Начинаю только изучать Лоцман:API, так что прошу сильно не ругать))
Вообщем задача состоит в автоматизированном размещении некой структуры изделия в дереве Лоцмана. Пытаюсь создать родительский объект (Сборочная единица), и внутри него несколько объектов типа Документы, Детали и т.д.
Объект создается, но почему-то начинает отображаться только после нажатия клавиши F5 или выполнения команды Обновить в окне с деревом проекта. Вначале делаю CheckOut, потом создаю объект, после CheckIn.
Не подскажите, как автоматизирвать еще команду обновления этого окна с деревом проектов?

Maxxx

Используйте PostMessage. Например -
PostMessage(ClientHandle,WM_REFRESHPROJECTLIST,inNewId,0);

Было уже на форуме обсуждение - http://forum.ascon.ru/index.php/topic,11316.msg64195.html#msg64195 и http://forum.ascon.ru/index.php/topic,13166.msg70410.html#msg70410



+ Благодарностей: 1

TERMIT___

С этим все получилось. Спасибо.
Но проблема теперь в другом. Вообщем, например, в папке проектов Изделия основного производства необходимо создать объект типа Сборочная единица, а внутри его несколько объектов типа Деталь и Документы. Первый объект создается без проблем, а вот второй выдает такую ошибку - "При выполнении метода InsertObject произошла ошибка. Объект Тест_сборки не существует или создан в другом рабочем проекте и не может быть использован до сохранения в БД"
Код на память выглядит примерно так:


stCO:=RunMethod('CheckOut', ['Папка', Изделия основного производства', '', 1]);
stDB:=RunMethod('CurrentBase', []);
RunMethod('ConnectToCheckOut', [stCO, stDB]);
try
inNewLinkId:=RunMethod('InsertObject', ['Папка', Изделия основного производства', '', 'Сборочная единица', 'Тест_сборки', #32, 'Состоит из ...', 'Проектирование', false]);
if inNewLinkId<>0 then begin
with TClientDataSet.Create(nil) do
try
Data:=RunMethod('GetInfoAboutLink', [inNewLinkId, 2]) ;
newID:=FieldByName('_IN_CHILD').AsInteger;
finally end;
end;

RunMethod('UpAttrValueById', [newID, 'Наименование', 'Сборка', 0, false]);
//RunMethod('SaveChanges', [stCO, stDB]);
RunMethod('CheckIn', [stCO, stDB]);

stCO:=RunMethod('CheckOut', ['Сборочная единица', 'Тест_сборки', '', 1]);
RunMethod('ConnectToCheckOut', [stCO, stDB]);
RunMethod('InsertObject', ['Сборочная единица', 'Тест_сборки', '', 'Деталь', 'Тест_детали', #32, 'Состоит из ...', 'Проектирование', false]);
finally
RunMethod('DisconnectCheckOut', [stCO, stDB]);
RunMethod('CheckIn', [stCO, stDB]);
end;