Страница 1 из 3

Опять проблема с ExtAttr

Добавлено: 27 окт 2008, 11:26
edd
Доброе время суток.
Не пойму, в чем может быть проблема - компилится небольшой проект, инклюдится ExtAttr.Vih, взял его прямо из C_ExtClass.rar. Никаких сообщений, ошибок в процессе компиляции не возникает, прописываю путь до реса в репозитарии, перезапускаю галактику - в списке печатных форм моя форма не появилась. В списке загруженных ресурсных файлов этот рес присутствует.
Однажды я попадал на такую проблему, не появлялась печатная форма, решалась эта проблема просто - ресурсник переносился в другую папку, уровнем ниже той, в которой лежат остальные ресы. Сейчас же такой финт не проходит. Может быть дело в том, как я объявляю переменную?
Вот проект:

Код: Выделить всё

#setCurEnv "galnet";
#define ComponentVersion 
#include ExtAttr.Vih 
#make "EDD_3_SERTIFONTARA.rtf"
Вот кусок кода в ртфнике:

Код: Выделить всё

.LinkForm ’edd_3_SertifOnTara_SHTRIH2_testing’ prototype is tovn
.NameInList ’3. Сертификат на тару, тест’
.group ’Накладные на продажу’
.group ’Накладные на продажу (fast)’
.Group 'Рекламационные накладные'
.Group 'Акты на строительство'
#include summa.frn 
#include ttn_fun.vpp
.Set Filler = ’-’ 
.var
  Nom          : Word;
  kolEnter    :string;
  GetRow    :boolean;
  GetTransp:boolean;
  NRec_MC :comp;
  getExtrAttr : iExtAttr;
.endvar
#include ttnf_var.frn 
#include mfo.frn
#include format.frn
.Create view...
....
.fields
....
  getExtrAttr.sGetAttr(coKatMC, vSertificat.SpSopr.cmcUsl,’АВТОВАЗ_ИндексДетали’)
....
.endfields
....
Но пробовал вместо
getExtrAttr : iExtAttr;
прописать перед FIELDS
.begin
var getExtrAttr : iExtAttr new;
end.
компилятор выдает ошибку
Нет такой функции, поля или метода GETEXTRATTR.SGETATTR
Подскажите, где я допускаю ошибку?

Добавлено: 27 окт 2008, 12:45
Masygreen
Например!

В vip.cfg в этих каталогах соскладировать все инки

Код: Выделить всё

[Compilers]
IncludesPath = Inc\
IncludesPath = Inc\GalFrm
в prj

Код: Выделить всё

// Макроопределения
#include PreDefs.inc
#include GloDefs.inc

//Const
#include galnet.ccm    //константы событий
#include galnet.csc    //константы статус-строк
#include fldcolor.inc  //константы цветов
#include gloconst.inc  //Глобальные константы
#include mark.inc      //константы пометки
end;
в фейсе своем

Код: Выделить всё

var   piExAttr:iExtAttr;
piExAttr.ValueExists(coSpDocs,SpDocs.nRec,'Полное наименование работ')

Добавлено: 27 окт 2008, 13:07
edward_K
если вы сомневаетесь в перемоной так закоментарт ее.
но как правило дело в ошибках при компиляции, nameinlist,linkform(пересеклись с существующими), .group ( не попали в фильтр) или не подключился рес - другого не дано.

Добавлено: 27 окт 2008, 13:38
edd
2Masygreen
В vip.cfg в этих каталогах соскладировать все инки
Код:
[Compilers]
IncludesPath = Inc\
IncludesPath = Inc\GalFrm
А зачем писать дополнительно IncludesPath, если я в prj написал #include ExtAttr.Vih, а в vip.cfg прописал

Код: Выделить всё

/r:.\.vih
/I:путь_до_файла_ExtAttr
?

2edward_K
если вы сомневаетесь в перемоной так закоментарт ее.
Так и делал - компиляция проходила на ура. Но мне нужны внешние атрибуты.
nameinlist,linkform с существующими не пересекаются, заранее исправлял на новые. Group такие же, как и у стандартных форм в этой группе. Рес подключился.

Может кто-нибудь приведет пример с использованием ExtAttr?

Добавлено: 27 окт 2008, 16:47
Masygreen
Пример который написал - работчий ... тоже бился с тем что не видел тип переменой .. заработало когда подключил все инки (основные галктические)

Добавлено: 27 окт 2008, 16:49
Masygreen
включение просто #include ExtAttr.vih не помогло :(

Добавлено: 27 окт 2008, 17:20
edward_K
по порядку
1.вы когда без сего компили форма появилась?
2.изначально у вас правильно написано - не надо это менять. то что вы в програмном блоке объявили видно только внутри этого програмного блока.
3. скомпилите одну эту форму. У вас где то будет temp.frm - посмотрите нет ли там проблем с наименованием групп и так далее?
обязательно служебные слова должны начинаться с 1 символа. Дальше мучайте эту форму до результата - потом уже исправите rtf. Возможно где то форматы не так распознались компилятором и форма поехала.

Добавлено: 27 окт 2008, 17:26
Polimer
Не понятно какая связь между extattr.vih и видимостью отчета.
Может быть у вас ресурс точно с таким же названием грузится с другого места?

Добавлено: 28 окт 2008, 08:52
edd
Polimer писал(а):Не понятно какая связь между extattr.vih и видимостью отчета.
Может быть у вас ресурс точно с таким же названием грузится с другого места?
К сожалению нет...я внимательно пересмотрел все скомпиленные и подключенные нами в репозитарии ресы, даже отключил их полностью и подцепил только мой-не помогло ничего. Как не было печатной формы, так её и нет. Только рес радостно светится в списке подключенных...

Добавлено: 28 окт 2008, 08:57
edd
edward_K
по порядку
1. угу
2. хорошо, верну заново.
3. Темп.фрм нашел, сча просмотрю. А что значит
обязательно служебные слова должны начинаться с 1 символа
? Какие служебные? И почему с 1?
Возможно где то форматы не так распознались компилятором и форма поехала.
Да...причем видимо далеко поехала...из галактики не видать.

Добавлено: 28 окт 2008, 16:09
edd
В общем итоги мучений:
1. без инклюд extattr-а rtf-файл компилится, рес подключается отчет виден.
2. с инклюдом extattr-а прям в rtf-файле, шибко ругается "ожидалось имя или описание типа iextattr" - не видит подключенный vih файл по-видимому, хотя другие (к примеру #include galnet.ccm, #include summa.frn) видит прекрасно.
3. с инклюдом в проекте после компиляции рес не формируется вообще никак, но ошибок не выдает.
4. если просто прописать в проекте #make "EDD_3_SERTIFONTARA.rtf" и компилить через проект, рес не формируется.
Всё это странно, если бы не одна особенность: если прописать в проекте "#include ExtAttr.vih" и тоже самое сделать в rtf-файле, то ресурс формируется, подключается, но не отображается. Так конечно косячно прописывать в двух местах, понимаю, но может кого подтолкнут на мысль мои перечисления...
Не понятно какая связь между extattr.vih и видимостью отчета.
И мне непонятно, но при подключении реса галку что то не устраивает (количество инклюдов одного и того же файла?) и она не выводит результат.
Версия extattr-a? Не инклюдить? А как тогда?
Если поможет, могу закинуть сюда полный код файла, проекта и vip.cfg.

Добавлено: 28 окт 2008, 16:37
Polimer
edd писал(а):В общем итоги мучений:
3. с инклюдом в проекте после компиляции рес не формируется вообще никак, но ошибок не выдает.
4. если просто прописать в проекте #make "EDD_3_SERTIFONTARA.rtf" и компилить через проект, рес не формируется.
А в VIP_RES.LOG ничего нет ?

Добавлено: 28 окт 2008, 17:10
Masygreen
Давай почту пришлю проект с инклудами на котором собирается....

Добавлено: 28 окт 2008, 19:56
edward_K
возможно вы повторяете ошибку многих на этом форуме
сделайте ошибку в extattr
после строки #ifdef ComponentVersion
если ошибка не появится, то "#define ComponentVersion" в проекте где то в начале.
vih подключаются только в проекте!
не понятно где вы там его подключили в rtf скорей всего после .linkform
для этого вообще то есть
.declare
#include ....
.end ( не помню уже что в конце)
а так видимо компилятор просто падал по runtime
про то что у вас ошибки при компиляции надо сразу писать, а не сбивать с толку.
да. А ресы у вас все подключены? Как намаетесь можно использовать
initservtxo(0) (без этого иногда не пашет).
sTXOGetExtAtt - мастером пройдитесь в настройке ТХО (общеиспользуемые функции)

Добавлено: 30 окт 2008, 09:10
edd
про то что у вас ошибки при компиляции надо сразу писать, а не сбивать с толку.
Я не понял, а почему такие необоснованные обвинения? Те ошибки, которые возникали в начальных компиляциях, я описывал выше. Других не возникало! После ковыряний появилась другая ошибка, которую я опять описал здесь. Давайте не будем торопиться с выводами!