内务 打印财产帐 窗口 - DigitalPlatform/dp2 GitHub Wiki
打印财产帐时,可以在【打印】-【打印配置】-【栏目定义】中增加栏目。
在【栏目定义】中直接点【新增】,从【栏目名】下拉列表中增加的栏目所对应的是册信息中相关的字段。比如:如果在这里选择了“出版时间”,那么打印财产帐时,出版时间这个栏目的值对应的是册记录的“出版时间”字段。
如果用户想要显示一些取自书目记录的栏目,可以使用javascript 脚本来自定义。
自定义脚本使用的位置:【打印】属性页-【打印配置】-【栏目定义】-【新增】,在【一个栏目】对话框中,【栏目名】和【标题名字】可以自定义为需要显示打印出来的栏目名,然后将javascript 脚本写到【脚本】文本框里。
自定义栏目,使用 javascript 脚本
比如,定义unimarc书目记录中的210$d作为打印财产帐的一栏,可以这样定义:
result = biblio.select("field[@name='210']/subfield[@name='d']").FirstContent;
定义unimarc书目记录中200$a“书名”栏,脚本定义如下:
result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent
这一段脚本表示栏目内容,使用书目记录里面的 200$a 子字段内容。
不过,有时候栏目需要适应 UNIMARC 和 USMARC 两种 MARC 格式,那么脚本可以定义成这样:
if (syntax == "unimarc")
result = biblio.select("field[@name='200']/subfield[@name='a']").FirstContent;
else if (syntax == "usmarc")
result = biblio.select("field[@name='245']/subfield[@name='a']").FirstContent;
从上面代码示例看到,javascript 代码中可以使用两个对象,一个名为 syntax,是个字符串,表示 MARC 格式类型,值为 "unimarc" 或 "usmarc";另一个名为 biblio,这是一个 MarcRecord 类型的对象(参见 MarcQuery 函数库介绍),用它可以获得书目记录的结构信息。
如果取两个字段的值,可以定义如下:
var str300a=biblio.select("field[@name='300']/subfield[@name='a']").FirstContent;
var str303a=biblio.select("field[@name='303']/subfield[@name='a']").FirstContent;
var ret="";
if (str300a != "" && str300a != null)
ret += str300a;
if (str303a != "" && str303a != null)
ret += str303a;
result = ret;
Unimarc书目记录MARC格式常用的字段含义请参考文档Unimarc书目记录ISBD