Переименование исполнений

Автор knik, 08.02.16, 14:07:13

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

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

knik

Делаю экспорт групповой спецификации по вар. Б из внешней программы и Компас и столкнулся со следующей проблемой.
Спецификация в Компасе сформировалась (см. вложение), все верно, но теперь нужно переименовать исполнения, как в файле. Вручную в Компасе переименовать исполнения в строке «Обозн. исполн.» получается, а программно нет.
Пытаюсь делать так:

procedure RenameIspolnBlock(const Ispolns: TStringList); stdcall;
var Spc: ksSpecification;
    Iter: ksIterator;
    Par: ksSpcObjParam;
    Obj, i: LongInt;
begin
  i := 0;
  Spc := ksSpecification(SpcDoc.GetSpecification);
  Iter := ksIterator(Kompas.GetIterator);
  Iter.ksCreateSpcIterator('', 0, 3);
  if Iter.Reference <> 0 then
  begin
    Obj := Iter.ksMoveIterator('F');
    while SpcDoc.ksExistObj(Obj) <> 0 do
    begin
      Par := ksSpcObjParam(Kompas.GetParamStruct(ko_SpcObjParam));
      SpcDoc.ksGetObjParam(Obj, Par, ALLPARAM);
      if Par.typeObj = SPC_BLOCK_NAME then // объект нашли
      begin
        if Spc.ksSpcObjectEdit(Obj) <> 0 then // а здесь проблема: возвращает 0, объект не доступен для редактирования
        begin
          while (i < 10)and(i < Ispolns.Count) do
          begin
            Spc.ksSpcCount(i + 1, Ispolns.Names[i]);
            Inc(i);
          end;
          Spc.ksSpcObjectEnd;
        end;
      end;
      Obj := Iter.ksMoveIterator('N');
    end;
  end;


Так же пытался через редактирование основной надписи на листе, тоже не редактирует.
Можете кто-нибудь подсказать? Может есть другой способ?