什么是简单bom,派生bom,多重bom?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是简单bom,派生bom,多重bom?相关的知识,希望对你有一定的参考价值。

请教大家个问题,在bom的技术类型中有三个,即简单bom,派生bom和多重bom,那么他们是什么意思呢?有什么区别?

简单BOM是指一个物料只有一个BOM.派生BOM,创建时是要从一个基本BOM拷贝过来的,创建好以后,保存在与基本BOM同一个组中,这样可以方便基本BOM与派生BOM的比较与查询.派生BOM也基本BOM的物料编号是不同的.多重BOM是指同一个物料,有多个不同的BOM版本.一般是在不同的数量范围或有效期有不同的BOM内容,或者使用到批次管理的物料,需要用到多重BOM.多重BOM的几个版本也保存在同一个组当中,可以通过组查询与比较.这与派生BOM相似.区别是派生BOM组中的物料编号不同,而多重BOM组中的编号是同一个. 参考技术A ERP中BOM简单分析 以下只是简单对ERP中BOM做出定义,真正ERP的中MBOM配置和管理比较复杂,而且涉及到EBOM(来自PDM)和PBOM(来自CAPP),具体如何操作要视企业实际需求和业务实施情况而定.1. 狭义的BOM狭义上的BOM(Bill of Materials)通常称为“物料清单”,就是产品结构(Product Structure)。仅仅表述的是对物料物理结构按照一定的划分规则进行简单的分解,描述了物料的物理组成。一般按照功能进行层次的划分和描述。狭义BOM的不足之处由于没有加上工艺成分,根据功能划分BOM层次结构,非常容易出现歧义。各人根据自己的理解或者现实生产情况的不同对于同一产品可能做出不同的BOM定义。2.广义的BOM广义上的BOM是产品结构和工艺流程的结合体,二者不可分割。离开工艺流程谈产品结构,没有现实意义。要客观科学的通过BOM来描述某一制造业产品,必须从制造工艺入手,才能准确描述和体现产品的结构。狭义BOM与广义BOM结合的方法:首先确定产品的工艺流程,然后描述每个工序(工艺流程的组成部分)上所使用的物料;由于生产组织方式的不同,各子物料有相应的生产子工艺流程,同样每个工序上存在物料的使用,这样就根据生产组织方式决定了BOM的层次。广义BOM的在ERP中的应用缺陷没有体现“资源”的优势。工序中人力资源和设备资源甚至资金(成本)资源都没有得到体现。在ERP应用系统中,BOM的概念已经开始扩展,真正体现资源”的意义。3.扩展的BOM扩展的BOM在传统意义上的BOM上更加深入地体现“资源”的意义,已经变成Bill Manufacturing,不仅仅包含工艺流程和产品结构,更多的是加入了对设备、人工和资金信息的集成和体现。扩展的BOM实现技术关键就是如何将设备、人工和资金等信息体现在BOM当中,ERP概念的引入和计算机数据库技术的不断进步为BOM概念的扩展提供了可能。扩展工艺流程和产品结构的信息,我们便非常轻松地将“资源”体现在BOM的实现上。

什么是文件的BOM头,及BOM头有哪些坑?

来自:https://www.cnblogs.com/qinmengjiao123-123/p/8325646.html

Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。 
--------------------------------------------------------------------------------------------------------------
1.什么是BOM?
BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("uFEFF"),位于文本文件头部。

在不同的Unicode编码中,对应的bom的二进制字节如下:

Bytes Encoding
FE FF UTF16BE
FF FE UTF16LE
EF BB BF UTF8

所以我们可以根据文件头部的几个字节和上面的表格对应来判断该文件是哪种编码形式。

2. 如何查看你文件的BOM字符?
BOM头在记事本中是看不到的

以UTF8为例,新建一个1.txt文件,然后打开文件 输入 hello world 然后另存为 此时更改文件的编码格式 由默认的ANSI 即GB2312(国标2312)编码改成UTF8

然后通过下面的node代码,来打印该文本文件的buffer 就可以看到我们所说的BOM头字符


let fs = require(‘fs‘);

fs.readFile(‘./1.txt‘,function(err,data){
    console.log(data)
})

// <Buffer ef bb bf 68 65 6c 6c 6f 20 77 6f 72 6c 64>
// 前三个字节就是对应的我们UTF8编码的文本的BOM头字符

3.存在的问题?
虽然BOM字符起到了标记文件编码的作用但是他并不属于文件的内容部分,所以会产生一些问题:

1.在某些使用场景下就会有问题。例如我们把几个JS文件合并成一个文件后,如果文件中间含有BOM字符,就会导致浏览器JS语法错误。

2.PHP就不能识别bom头,PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

4.如何去掉UTF8编码的记事本文件的BOM头
方法一:在文件另存为的时候选择无BOM头的UTF8编码

方法二:使用node中的文件模块获取文件的buffer数据并去掉前三个字节,代码如下:

function deleteUtf8BomHead(path) {
    let buf = fs.readFileSync(path);
    if (buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf) {
        buf = buf.slice(3)
    }
    return buf
}

console.log(deleteUtf8BomHead(‘./1.txt‘));// <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
  
// 将GBK编码的buffer转化成utf8的字符串
// 在这里我们要引入一个库 iconv-lite
let iconv = require(‘iconv-lite‘);
fs.readFile(‘./2.txt‘,function (err, data) {
console.log(data,‘qq‘);
let str = iconv.decode(data,‘gbk‘);
console.log(str);
})

 

以上是关于什么是简单bom,派生bom,多重bom?的主要内容,如果未能解决你的问题,请参考以下文章

BOM

请教:SAP中的BOM是啥

什么是文件的BOM头,及BOM头有哪些坑?

BOM的简单介绍

什么是文件的BOM头,及BOM头有哪些坑?

php无bom和有bom的文件编码有啥区别