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

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

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

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

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

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

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

Создание спецификации на чертеже

Автор psiv, 30.05.20, 09:50:02

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

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

psiv

Пытаюсь работающий код создания спецификации в открытом чертеже 2Д перевести  с Питона на Делфи - возникает такая ошибка. Помогите, пожалуйста, исправить.

var
  iKompas: KompasObject;
  iDoc: ksDocument2D;
  iSpc: ksSpecification; 
  obj: Reference;

-----------

  iDoc := ksDocument2D(iKompas.Document2D);
  iDoc := ksDocument2D(iKompas.ActiveDocument2D);
  iSpc := iDoc.GetSpecification(); <- Error: Incompatible types: 'ksSpecification' and 'IDispatch'
  iSpc.ksSpcObjectCreate('', 0,  razdel, podrazdel, 0, 0);
  obj := iSpc.ksSpcObjectEnd();


psiv


psiv

Подскажите, пожалуйста, еще, что не так с TYPE (а может и не с ним):
    iDoc := ksDocument2D(iKompas.Document2D);
    iDoc := ksDocument2D(iKompas.ActiveDocument2D);
    iSpc := ksSpecification(iDoc.GetSpecification);
    iSpc.ksSpcObjectCreate('', 0,  razdel, podrazdel, 0, 0);
    obj := iSpc.ksSpcObjectEnd();

    iSpcObjParam := ksSpcObjParam(iKompas.GetParamStruct(ko_SpcObjParam));
    iSpc.ksSpcObjectEdit(obj);
    iDoc.ksGetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM);

    iSpcObjParam.blockNumber := 0;
    iSpcObjParam.draw := 1;
    iSpcObjParam.firstOnSheet := 0;
    iSpcObjParam.ispoln := 0;
    iSpcObjParam.posInc := 1;
    iSpcObjParam.posInc := 0;

    iDoc.ksSetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM);
    iTextLineArray := ksSpcObjParam(iKompas.GetDynamicArray(LDefin2D.TEXT_LINE_ARR));

    iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
    iTextLineParam.Init();
    iTextLineParam.style := 0;
    iTextLineArray := ksSpcObjParam(iKompas.GetDynamicArray(LDefin2D.TEXT_LINE_ARR));
    iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
    iTextItemParam.Init();
    iTextItemParam.iSNumb := 0;
    iTextItemParam.s := '123';                                                                                 
    iTextItemParam.type := 0; <- Error: Identifier expected but 'TYPE' found
    iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
    iTextItemFont.Init();
    iTextItemFont.bitVector := 4096;
    iTextItemFont.color := 0;
    iTextItemFont.fontName := 'GOST type A';
    iTextItemFont.height := 3.5;
    iTextItemFont.ksu := 1;
    iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
    iTextLineParam.SetTextItemArr(iTextItemArray);

    iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
    iSpc.ksSetSpcObjectColumnTextEx(3, 1, 0, iTextLineArray);
    iTextLineArray := iKompas.GetDynamicArray(LDefin2D.TEXT_LINE_ARR);

    obj := iSpc.ksSpcObjectEnd();

psiv

" Учтите, что в заголовочных файлах старых версий КОМПАС данное свойство называется type_ (со знаком подчеркивания)" (С) С.Норсеев
Не знаю почему, но сработало.

Должно так быть iTextItemParam.type_ := 0;.
Просто код на питоне отличается от Delphi.
Всегда так было ksTextItemParam.type_, v19 вроде, состарится ещё не успела.

psiv

#6
Но теперь ошибка "Access Violation at address... read of address 00000000" на строке:
    iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
Отладчик показывает в файле ComObj: Status := Dispatch.Invoke(DispID, GUID_NULL, 0, InvKind, DispParams, Result, @ExcepInfo, nil);


psiv

Цитата: Sabahs от 30.05.20, 15:07:58Смотрите пример в SDK - Step2a.
Большое спасибо, но, к сожалению, я не нашел в этом примере ни конструкцию, похожую на мою, ни принципиального отличия при применении ksAddArrayItem(-1, iTextItemParam)... Пробовал менять ksAddArrayItem(-1, iTextItemParam) на ksAddArrayItem(1, iTextItemParam) - та же ошибка на этапе выполнения. Или Вы хотите сказать, что код на Делфи будет очень отличаться от макроса Питона и нужно все переделывать по образу, приведенному в Step2a?

Я тоже не нашёл, где Вы динамический массив получили iTextItemArray.
В примере показана работа с динамическими массивами.

psiv

Теперь: Incompatible types: 'ksDynamicArray' and 'ksSpcObjParam'... :embarrassed:

unit uSpec;
interface
uses
  ComObj, LDefin2D, ksTLB,
  ksConstTLB, ksAuto,
  IniFiles;
procedure Spec();
implementation
uses
  uMain;
procedure Spec;
var
  razdel: Integer;
  podrazdel: Integer;
  naimen: string;
  tip: string;
  kod: string;
  zavod: string;
  edizm: string;
  kol: string;
  masaed: string;
  prim: string;
  cena: string;
  stroka: Integer;
  str: string;
  obj: Reference;
  iTextItemArray: ksDynamicArray;
  iTextLineArray: ksDynamicArray;

begin
  if iKompas = nil then
  begin
    iKompas := KompasObject(GetActiveOleObject('Kompas.Application.5'));
    // подключение к уже запущенному экземпляру Компаса
    if iKompas <> nil then
      // iKompas.Visible := True;
  end;
  iDoc := ksDocument2D(iKompas.Document2D);
  iDoc := ksDocument2D(iKompas.ActiveDocument2D);
  i := 1;
  while i < (rowlast - rowfirst) do
  begin
    i := i + 1;
    razdel := XlsMass[i, 1];
    podrazdel := XlsMass[i, 2];
    naimen := XlsMass[i, 3];
    tip := XlsMass[i, 4];
    kod := XlsMass[i, 5];
    zavod := XlsMass[i, 6];
    edizm := XlsMass[i, 7];
    kol := XlsMass[i, 8];
    masaed := XlsMass[i, 9];
    prim := XlsMass[i, 10];
    cena := XlsMass[i, 11];

    iSpc := ksSpecification(iDoc.GetSpecification);
    iSpc.ksSpcObjectCreate('', 0, razdel, podrazdel, 0, 0);
    obj := iSpc.ksSpcObjectEnd();
    iSpcObjParam := ksSpcObjParam(iKompas.GetParamStruct(ko_SpcObjParam));
    iSpc.ksSpcObjectEdit(obj);
    iDoc.ksGetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM);
    iSpcObjParam.blockNumber := 0;
    iSpcObjParam.draw := 1;
    iSpcObjParam.firstOnSheet := 0;
    iSpcObjParam.ispoln := 0;
    iSpcObjParam.posInc := 1;
    iSpcObjParam.posInc := 0;
    iDoc.ksSetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM);
    iTextLineArray := ksSpcObjParam
      (iKompas.GetDynamicArray(LDefin2D.TEXT_LINE_ARR));
    iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
    iTextLineParam.Init();
    iTextLineParam.style := 0;
    iTextItemArray := ksSpcObjParam
      (iKompas.GetDynamicArray(LDefin2D.TEXT_LINE_ARR));
    iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
    iTextItemParam.Init();
    iTextItemParam.iSNumb := 0; // код спецсимвола
    iTextItemParam.s := '123'; // текстовая строка
    iTextItemParam.type_ := 0; // назначение интерфейсa
    iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
    iTextItemFont.Init();
    iTextItemFont.bitVector := 4096;
    // битовый вектор (наклон, толщина, подчеркивание, тип составной части)
    iTextItemFont.color := 0; // цвет текста
    iTextItemFont.fontName := 'GOST type A';
    iTextItemFont.height := 3.5; // высота текста
    iTextItemFont.ksu := 1; // сужение текста
    iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
    iTextLineParam.SetTextItemArr(iTextItemArray);
    iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
    iSpc.ksSetSpcObjectColumnTextEx(3, 1, 0, iTextLineArray); // позиция
    iTextLineArray := iKompas.GetDynamicArray(LDefin2D.TEXT_LINE_ARR);
    obj := iSpc.ksSpcObjectEnd();
  end;
end;
end.

Так посмотрите SDK.
// создадим массив строк текста
iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
// создадим массив компонент строки текста
iTextItemArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_ITEM_ARR));

psiv

Фух, выкарабкался...  :sun: 
Огромное Вам спасибо! :beer:

psiv

#13
После программного формирования спецификации на листе чертежа имею для каждой строки спецификации в Панели Параметров заголовок "По умолчанию". Что он означает? При этом Компас не суммирует количество одинаковых позиций и не расставляет номера позиций. После клика на этом заголовке он исчезает (по отдельности для каждой позиции) и спецификация работает нормально. Как изменить мой код, чтобы он правильно формировал спецификацию?
procedure CreatStrSpec;    // формирование строки спецификации в Компасе
begin
  iSpc := ksSpecification(iDoc.GetSpecification);
  iSpc.ksSpcObjectCreate('', 0, razdel, podrazdel, 0, 0);
  obj := iSpc.ksSpcObjectEnd();

  iSpcObjParam := ksSpcObjParam(iKompas.GetParamStruct(ko_SpcObjParam));
  iSpc.ksSpcObjectEdit(obj);
  iDoc.ksGetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM);

  iSpcObjParam.blockNumber := 0;
  iSpcObjParam.draw := 1;
  iSpcObjParam.firstOnSheet := 0;
  iSpcObjParam.ispoln := 0;
  iSpcObjParam.posInc := 1;
  iSpcObjParam.posInc := 0;

  iDoc.ksSetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM);
  // создадим массив компонент строки текста
  iTextItemArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_ITEM_ARR));
  // создадим массив строк текста
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0; // код спецсимвола
  iTextItemParam.s := ''; // текстовая строка
  iTextItemParam.type_ := 0; // назначение интерфейсa
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  // битовый вектор (наклон, толщина, подчеркивание, тип составной части)
  iTextItemFont.color := 0; // цвет текста
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5; // высота текста
  iTextItemFont.ksu := 1; // сужение текста
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(3, 1, 0, iTextLineArray); // позиция
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := tip;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(4, 1, 0, iTextLineArray); // наименование
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := naimen;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1; //
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(5, 1, 0, iTextLineArray); // тип
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := kod;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(11, 1, 0, iTextLineArray); // код оборудования
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := zavod;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(12, 1, 0, iTextLineArray); // завод-изготовитель
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := edizm;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(10, 1, 0, iTextLineArray); // единица измерения
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := kol;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(6, 1, 0, iTextLineArray); // количество
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := masaed;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(8, 1, 0, iTextLineArray); // масса единицы
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := prim;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(7, 1, 0, iTextLineArray); // примечание
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := 'грн.';
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(10, 2, 0, iTextLineArray); // валюта
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  iTextLineArray:=ksDynamicArray(iKompas.GetDynamicArray(TEXT_LINE_ARR));
  iTextLineParam := ksTextLineParam(iKompas.GetParamStruct(ko_TextLineParam));
  iTextLineParam.Init();
  iTextLineParam.style := 0;
  iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
  iTextItemParam.Init();
  iTextItemParam.iSNumb := 0;
  iTextItemParam.s := cena;
  iTextItemParam.type_ := 0;
  iTextItemFont := ksTextItemFont(iTextItemParam.GetItemFont());
  iTextItemFont.Init();
  iTextItemFont.bitVector := 4096;
  iTextItemFont.color := 0;
  iTextItemFont.fontName := 'GOST type A';
  iTextItemFont.height := 3.5;
  iTextItemFont.ksu := 1;
  iTextItemArray.ksAddArrayItem(-1, iTextItemParam);
  iTextLineParam.SetTextItemArr(iTextItemArray);
  iTextLineArray.ksAddArrayItem(-1, iTextLineParam);
  iSpc.ksSetSpcObjectColumnTextEx(10, 3, 0, iTextLineArray); //  цена
  iTextItemArray.ksClearArray;
//------------------------------------------------------------------------------
  obj := iSpc.ksSpcObjectEnd();
Спец.jpg
Справку Компаса читал - не понял назначения этого заголовка или ссылки... Кто-нибудь может мне объяснить попроще?