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

Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 11:39
rudm
Имею такую ситуацию:
Нужно доработать *.rtf форму, которая пришла из Москвы (то есть вытащить из *.res в rtf , изменить rtf и скомпилировать заново, но форма при компиляции говорит об отсутствие нужной функции или метода. То есть надо делать какой то include или подключать в проекте *.vih файл, как я понимаю. А вот как понять какой? У меня кроме ресурсного файла ничего нет.
По ошибке

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

...\GAL810\EXE\IMGK_FORMS\RTF_BUH\SFBLANK_RTF_02_MY_SCHFREES.RTF(75) Ошибка: Нет
 такой функции, поля или метода : #F_ (стр.75, поз.8 в E:\GAL\GAL_200111\GAL810\
EXE\IMGK_FORMS\RTF_BUH\SFBLANK_RTF_02_MY_SCHFREES.RTF)
    #f_(MyOrgName),
       ^
Поиском я нашел, что мне надо подключать MCOriginCounry.vih
с помощью такого кода

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

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#end
Но как быть в дальнейшем, если поиск не поможет? Есть ли какой то инструмент которым можно посмотреть какие ресурсы надо подключать при компиляции? И вообще, в правильном ли направлении я двигаюсь относительно этой формы?

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 12:11
RAJAH
Не только vih. Ещё могут понадобиться *.inc, *.frn, *.vpp... Для успешной компиляции необходимо указать, в каком каталоге эти файлы лежат с помощью ключа /i. А каталог найти, наверное, поиском. Они обычно прячутся в подпапках каталога <<Путь к Галактике>>\FRM.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 12:42
rudm
Спасибо за ответ
я создал проект с таким кодом

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

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#end
#include MCOriginCountry.vih
#make "SCHFREES.PRO"
#make "SFBLANK_RTF_02_MY_SCHFREES.rtf"
И положил в него MSOriginCountry.vih
Старая ошибка больше не появляется, но пишется новая

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

SFBLANK_RTF_02_MY_SCHFREES.RTF(177) Ошибка: Нет такой функции, поля или метода :
 #SPNAME (стр.177, поз.1 в SFBLANK_RTF_02_MY_SCHFREES.RTF)
if (trim(if (SpPrMC = 3, '', SpUchEd)) = '', '-', if (SpPrMC = 3, '', SpUchEd))
То есть, как я понимаю, тоже не хватает какого то ресурса. (Нашел ресурсы относящиеся к SCHFREES в архивах папки SRC, в L_SF Получается мне надо все что там есть, не особо раздумывая скопировать в проект?
Поясните еще пожалуйста, зачем мы перед созданием самой формы, создаем еще ее прототип?

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 12:56
edward_K
#SPNAME - это макроподстановка(#define или #declare), которая в принципе могет описана где угодно, в данном случае в тексте стандартной формы rtf на счет фактуру - искать в frm\l_sf.rar. Ну или заменяйте на свои или явно пишите поля из прототипа.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 13:15
RAJAH
Не ресурса не хватает, а файла для компиляции формы в ресурс (в данном случае не хватает файла с описанием функции #SPNAME).
Мы прототип не должны создавать, а указать компилятору, что форма создаётся по прототипу. Не надо #make "SCHFREES.PRO" делать, надо создать свой файл с формой отчёта, в которой должно быть .LinkForm '<<имя формы>>' Prototype is 'SCHFREES' и компилировать его.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 13:37
rudm
Спасибо, приму к сведению.
Сделал вот такой проект

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

#include PreDefs.inc 
#include GloDefs.inc 
#include galnet.ccm 
#include galnet.csc 
#include fldcolor.inc 
#include GLOCONST.INC
#include mark.inc 
#include MCOriginCountry.vih end;

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#end

#make "SFBLANK_RTF_02_MY_SCHFREES.rtf"
Но не могу найти файл AtConst.inc - уже поиском по архивам перерыл всю папку src
Как мне точно найти файл содержащий нудную функцию?
В форме, в строке на которую указывает сообщение об ошибке, вижу функцию

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

#f_(if (SpPrMC = 3, ’’, SpUchEd))

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 13:44
RAJAH
У меня тоже такого нет. Может, он не нужен?

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 13:51
rudm
Наверное не нужен. Я совсем новичок в компиляции форм под Галактику.
На него ссылается в свою очередь mark.inc
Закоментирую наверное и попробую собрать.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 13:55
rudm
Теперь компилятор ругается на саму подключаемую библиотеку, как я понимаю.

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

MCORIGINCOUNTRY.VIH(16) Ошибка: Ожидался идентификатор (стр.16, поз.1 в MCORIGIN
COUNTRY.VIH)
#component "L_SF"
^
Может быть старая версия? Размер 1 340 Дата 21.09.2006

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 14:08
Polimer
Попробуйте такой проект. Мы на нем компилим СФ, ТОРГ-12, ТОРГ1-Т.

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

#include Predefs.inc
#include MCOrigincountry.vih
#include ExtAttr.vih
#include ExtClass.vih
#include Commission.vih
const
#include Commonc.inc
#include gloconst.inc
end;
#include Defs.inc
#include dictypes.def
#include glodefs.inc
.......................

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 25 янв 2011, 18:54
Gameus_
Поковырял свои формы - в начале каждой rtf'ки перед .linkform... написано следующее:

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

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#end
#define precis ‘\2p[|-]3666666666666666.88’
#declare SpName
if (SpExistNDS or SpPerc <> 0, SpName, SpName)
#end
#declare sum_(sum_)
if (abs(#sum_) > 0.001, DoubleToStr(#sum_, #precis),if(wGetTune(‘Country’)=0,'-',’’))
#end
#declare s_(Stav_)
if(wGetTune('Country')=0,
   if(((SubTip=16) or (SubTip=23)), string(#Stav_,2,0)+'/'+string(100+#Stav_,3,0),
                                    string(#Stav_,3,0)+' %'),
   string(#Stav_,3,0)+' %')
#end

Никаких vih не используется. просто в ртфник добавьте код в начало. Из инклюдов рядом лежит только format2.frn (взят из FRM).
Причем заметил интересную штуку - если из галактики посмотреть исходник - то текста, который я привел выше в исходнике нет.... может в этом и проблема.

итого:
файл проекта:

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

#make "sch_fact_otgr_08_01.rtf"
начало sch_fact_otgr_08_01.rtf:

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

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#end
#define precis ‘\2p[|-]3666666666666666.88’
#declare SpName
if (SpExistNDS or SpPerc <> 0, SpName, SpName)
#end
#declare sum_(sum_)
if (abs(#sum_) > 0.001, DoubleToStr(#sum_, #precis),if(wGetTune(‘Country’)=0,'-',’’))
#end
#declare s_(Stav_)
if(wGetTune('Country')=0,
   if(((SubTip=16) or (SubTip=23)), string(#Stav_,2,0)+'/'+string(100+#Stav_,3,0),
                                    string(#Stav_,3,0)+' %'),
   string(#Stav_,3,0)+' %')
#end

.LinkForm 'SfBlank4_Rtf_02' prototype is 'Schfrees'
.group ‘Бланки счетов-фактур’


Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 26 янв 2011, 06:13
rudm
Спасибо за ответы.

Вот что выдает по первому варианту, предложенному Polimer

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

E:\GAL\GAL_200111\GAL810\exe\IMGK_FORMS\RTF_buh\makertf.prj(16) Ошибка: Недопуст
имая директива макропроцессора в многострочном макроопределении (стр.16, поз.1 в
 E:\GAL\GAL_200111\GAL810\exe\IMGK_FORMS\RTF_buh\makertf.prj)
#ifndef __MCORIGINCOUNTRY_VIH
^
Привожу файл проекта на всякий случай еще

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

#include Predefs.inc
#include MCOrigincountry.vih
#include ExtAttr.vih
#include ExtClass.vih
#include Commission.vih
const
#include Commonc.inc
#include gloconst.inc
end;
#include Defs.inc
#include dictypes.def
#include glodefs.inc

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#ifndef __MCORIGINCOUNTRY_VIH
#define __MCORIGINCOUNTRY_VIH

ObjInterface IMCOriginCountry;
function getCountryName(cMC: comp; cParty: comp): string;
function getGTDNumber(cParty: comp): string; end;
VipInterface MCOriginCountry implements IMCOriginCountry;
#end

#make "SFBLANK_RTF_02_MY_SCHFREES.rtf"
сейчас буду пробовать второй вариант, предложенный Gameus_, но ведь изначально форма была скомпилирована самой Галактикой, то есть головной организацией в Москве - вряд ли там будут ошибки в коде самой формы. В любом случае, сейчас буду пробовать. О результатах отпишусь.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 26 янв 2011, 06:55
rudm
Второй вариант выдает точно такую же ошибку.
Вероятно, нет разницы как подключать ресурсы, через файл проекта или непосредственно в форме.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 26 янв 2011, 07:54
rudm
Может быть у меня действительно старая библиотека MCOriginCountry.vih? Она аж от 2006 года. Наверное уже вышла обновленная?
Теперь вот что пишет

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

MCORIGINCOUNTRY.VIH(16) Ошибка: Ожидался идентификатор (стр.16, поз.1 в MCORIGIN
COUNTRY.VIH)
#component "L_SF"
^
c вот таким проектом

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

#include PreDefs.inc 
#include GloDefs.inc 
#include galnet.ccm 
#include galnet.csc 
#include fldcolor.inc 
#include GLOCONST.INC
#include MCOriginCountry.vih end;

#declare f_(str_)
if (trim(#str_) = '', '-', #str_)
#define precis ‘\2p[|-]3666666666666666.88’
#declare SpName
if (SpExistNDS or SpPerc <> 0, SpName, SpName)
#declare sum_(sum_)
if (abs(#sum_) > 0.001, DoubleToStr(#sum_, #precis),if(wGetTune(‘Country’)=0,'-',’’))
#declare s_(Stav_)
if(wGetTune('Country')=0,
   if(((SubTip=16) or (SubTip=23)), string(#Stav_,2,0)+'/'+string(100+#Stav_,3,0),
                                    string(#Stav_,3,0)+' %'),
   string(#Stav_,3,0)+' %')
#ifndef __MCORIGINCOUNTRY_VIH
#define __MCORIGINCOUNTRY_VIH
#component "L_SF"
#end

#make "SFBLANK_RTF_02_MY_SCHFREES.rtf"
#make "SFBLANK_TULIK_ONEGINA.rtf"
#make "SFBLANK_TULIK_PROKOPENKO.rtf"
#make "SFBLANK_ZACEPINA_ONEGINA.rtf"
#make "SFBLANK_ZACEPINA_PROKOPENKO.rtf"
В общем, я уже не знаю что и думать. Сроки горят как обычно, а куда двигаться дальше, совершенно не понятно мне.

Re: Необходимые для компиляции ресурсы - как узнать?

Добавлено: 26 янв 2011, 08:15
KATZ
VIH-файл не менялся с 2006 года. А #declare надо #end-ом закрыть, в данном случае сообщение об ошибке нужно внимательно прочитать, оно ясно говорит об этом.