
# 【场景】
条码打印只能按照原表单条码取值,实现场景打印的条码文本显示还是原始值,条码如果当条码文本超长时取前10位
目前条码打印还不支持动态字段(==2023年4月份补丁开始条码打印支持动态字段==),只能二开实现
# 【新版本实现案例】
<1>需要在套打模板的套打配置中启用参数==Data_IsFillDynamicFieldAfterPlugIn = True;==
启用后条码打印即可使用动态字段。

<2>配置动态字段

<3>绑定动态字段,参考[https://vip.kingdee.com/article/137611800287477504?productLineId=1&isKnowledge=2](https://vip.kingdee.com/article/137611800287477504?productLineId=1&isKnowledge=2)

<4>预览效果

# 【老版本二开案例】
通过增加一个文本字段用作打印实现[条码文本]和[条码图片]显示不同值的处理
<1>条码打印表单,条码明细单据体,增加一个文本字段,设置不可见(用作打印的条码截断)

<2>套打模板,文本控件绑定的是条形码,条码控件绑定文本

<3>配置二开插件

```python
from System import *
from Kingdee.BOS import *
from Kingdee.BOS.DataEntity import *
def OnPrepareNotePrintData(e):
if not e.NotePrintTplId.Equals("8f2a9aef-40c5-4d28-8328-88c66dff3bd6"):
return;
if not e.DataSourceId.Equals("FEntityToBar",StringComparison.OrdinalIgnoreCase):
return;
if e.DataObjects == None or e.DataObjects.Length <= 0:
return;
srcBarCodeKey = "FBarCode";
tgtBarCodeKey = "F_BHR_Text1";
if not e.DataObjects[0].DynamicObjectType.Properties.ContainsKey(srcBarCodeKey):
return;
if not e.DataObjects[0].DynamicObjectType.Properties.ContainsKey(tgtBarCodeKey):
return;
for index in range(len(e.DataObjects)):
barCodeVal = e.DataObjects[index][srcBarCodeKey];
if(barCodeVal.Length > 10):
barCodeVal = barCodeVal.Substring(0,10);
e.DataObjects[index][tgtBarCodeKey] = barCodeVal;
```
# 【效果】
条码文本显示原始内容,条码取截断部分打印
