在IE浏览器中打印异常情况处理办法(精选文档)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在IE浏览器中打印异常情况处理办法(精选文档)(文档可以直接使用,也可根据实际需要修改使用,可编辑欢迎下载)
在IE浏览器中打印异常情况处理办法
一、
二、
三、
四、
五、
第一步操作——打印预览 ...................................................................... 2 第二步操作——检查打印预览效果 ........................................................ 2 常见问题1:打印预览图像丢失 ............................................................ 3 常见问题2:打印后出现不必要的页眉页脚的显示 ............................... 7 常见问题3:证书尺寸有
误 (8)
一、第一步操作——打印预览
在IE浏览器(互联网环境)中打印电子证书时,请先使用打印预览功能,方法如下:
选择菜单栏——文件——打印预览,如下图。
注:证书打印仅限IE浏览器,打印预览时请选择纸张为横向,如下图。
二、第二步操作——检查打印预览效果
如打印预览画面效果正常,可直接进行打印,下图为正常预览效果:
如打印预览画面不正常,会出现以下3种情况:
1. 打印预览中图像丢失(如:表格、背景图像、电子公章等打印不出来,只呈现文字等。
)
2. 打印后出现不必要的页眉页脚的显示。
(如:出现证书以外的文字等。
)
3. 证书尺寸有误。
(如:证书很小、证书过大、公章在第二页出现等。
)请看下面的常见问题解决方案。
三、常见问题1:打印预览图像丢失
IE8之前IE版本浏览器解决方案
A. 打开IE界面,选择菜单栏——工具里的“Internet选项”。
B. 选择“高级”选项。
C. 找到“打印”选项,把“打印背景和图像”勾选上,将此功能打开输出正常。
IE8及IE9浏览器解决方案
A. 打开IE界面,选择菜单栏——工具里的“Internet选项”。
B. 选择“高级”选项。
C. 找到“打印”选项,把“打印背景和图像”勾选上,将此功能打开输出正常。
四、常见问题2:打印后出现不必要的页眉页脚的显示
IE8之前IE版本浏览器解决方案
A. 打开IE界面,选择菜单栏——“文件”里面的“页面设置”。
将页眉页脚
的内容清空
IE8及IE9浏览器解决方案
A. 打开IE界面,选择菜单栏——“文件”里面的“页面设置”。
五、常见问题3:证书尺寸有误
IE8之前IE版本浏览器解决方案
A. 打开IE界面,选择菜单栏——“文件”里面的“页面设置”。
B. 请务必按照以下图中的页边距所标明的数值进行设置。
页边距按照图
中所标示的数
值进行设置
IE8及IE9浏览器解决方案
A. 打开IE界面,选择菜单栏——“文件”里面的“页面设置”。
B. 请务必按照以下图中的页边距所标明的数值进行设置。
①
③
②
计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。
异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。
而中断则带有向处理器主动申请的意味。
但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。
若无特别说明,对“异常”和“中断”都不作严格的区分。
本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。
1.异常中断响应和返回
系统运行时,异常可能会随时发生。
当一个异常出现以后,ARM微处理器会执行以下几步操作:
1) 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
2) 将CPSR复制到相应的SPSR中。
3) 根据异常类型,强制设置CPSR的运行模式位。
4) 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
这些工作是由ARM 内核完成的,不需要用户程序参与。
异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:
1) 将连接寄存器LR的值减去相应的偏移量后送到PC中。
2) 将SPSR复制回CPSR中。
3) 若在进入异常处理时设置了中断禁止位,要在此清除。
这些工作必须由用户在中断处理函数中实现。
为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。
采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。
当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。
当异常处理完成以后,返回到主程序继续执行。
可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。
2.异常处理程序设计
2.1 异常响应流程
由于向量表的限制,只能有一条指令B完成32MB范围内的跳转,并不能保证所有的异常处理函数都位于32MB范围内。
为了扩展跳转范围,需要二次跳转才能把异常处理函数的地址传送给PC。
异常处理调用关系如图1所示。
三星公司网站提供了test2410_r11软件包,其中2410init.s有如下代码:
HandlerXXX
sub sp,sp,#4 ;减少sp,保存跳转地址
stmfd sp!,{r0} ;将工作寄存器压入堆栈
ldr r0,=HandleXXX ;将HandleXXX地址放入r0
ldr r0,[r0] ;将中断程序入口地址放入r0
str r0,[sp,#4] ;将中断程序入口地址压入堆栈
ldmfd sp!,{r0,pc} ;将工作寄存器和中断程序入口地址弹出到r0和PC
图1异常处理调用
并且在RAM中定义了存有中断程序入口地址表_ISR_STARTADDRESS: AREA RamData, DATA, READWRITE
^ _ISR_STARTADDRESS
HandleReset # 4
HandleUndef # 4
HandleSWI # 4
HandlePabort # 4
HandleDabort # 4
HandleReserved # 4
HandleIRQ # 4
HandleFIQ # 4
通常HandlerXXX位于程序入口地址32MB范围内,HandleXXX是以
_ISR_STARTADDRESS为基地址的RAM中地址。
该代码主要实现跳转功能,把异常处理程序地址HandleXXX送到PC中。
例如产生IRQ中断时,PC会被强制设置为0x18,执行指令:b HandlerIRQ
在HandlerIRQ程序段内,处理器做一些必要的处理,就会将
_ISR_STARTADDRESS表中存放的IRQ入口地址送入PC,然后开始执行相关
中断程序。
由于_ISR_STARTADDRESS表存放在RAM中,后面的C语言程序可以方便地更改相关中断服务程序的内容。
2.2 异常分支
系统可能存在多个 IRQ/FIQ的中断处理程序。
为了从向量表入口处的跳转最终能找到正确的中断处理程序,需要设计一套处理机制和方法来实现。
可以在ARM的异常向量表之外,增加一张关联中断控制器的向量表,向量表中的内容对应每个具体的中断源,可以协助跳转到不同的中断处理程序。
当响应外设的一个中断请求时,首先触发ARM核的中断,进人中断程序,再通过中断控制器识别中断源,使PC能够自动获得中断处理程序的地址。
有的芯片支持特殊的硬件分支功能,依据中断源自动跳转到向量表的相应地址,多数情况下是用软件来处理异常分支。
在S3C2410体系中,中断的调用可以看成是经历了2次“中断向量表”的查询。
2410init.s中的以下代码完成功能就是查询中断偏移寄存器INTOFFSET,得到当前中断的中断号,并根据中断号再调用相关的中断服务程序。
IsrIRQ
sub sp,sp,#4
stmfd sp!,{r8-r9}
ldr r9,=INTOFFSET
ldr r9,[r9]
ldr r8,=HandleEINT0
add r8,r8,r9,lsl #2
ldr r8,[r8]
str r8,[sp,#8]
ldmfd sp!,{r8-r9,pc}
为了方便C程序使用中断,将IsrIRQ设为IRQ的中断服务程序。
ldr r0,=HandleIRQ
ldr r1,=IsrIRQ
str r1,[r0]
其中HandleEINT0是用户自己开辟的一块存储空间的起始地址,后面按次序存放中断异常处理程序的地址,也可以理解为二级中断向量表。
IsrIRQ从中断控制器处获取中断源信息,然后再从二级中断向量表中的对应地址单元得到异常中断处理程序的入口地址,完成异常响应的跳转。
二级中断向量表一般位于 HandleFIQ的后面,也就是以_ISR_STARTADDRESS+0x20为起始地址,这里定义了S3C2410处理器所有中断源的相关中断处理处理程序入口。
这种方法的好处是用户程序在运行过程中能够动态改变异常向量。
2.3 中断函数设计
为了方便高级语言设计中断处理函数,标准的ARM指令编译器提供了一个用来声明中断处理函数的关键字-irq,使用此关键字声明的函数可以被编译器识别为中断处理函数。
编译后的代码在处理异常事件前保存现场信息,处理异常事件后对现场信息进行恢复。
中断函数设计如下:
static void __irq Eint3Int(void){
ClearPending(BIT_EINT3);
Uart_Printf("EINT3 interrupt is occurred.\n");
num_int=3;设置标志位
}
定义中断处理程序入口地址:#define pISR_EINT3 (*(unsigned
*)(_ISR_STARTADDRESS+0x2c))
在初始化程序,引用代码pISR_EINT3=(U32)Eint3Int,即可定义地址
_ISR_STARTADDRESS+0x2c内容是Eint3Int的地址,外部中断3产生请求时即可调用中断处理函数Eint3Int。
3.外中断初始化程序设计
S3C2410X 的中断控制寄存器能接收来自56个中断源的请求。
内部的外围模块和外部管脚产生的多个中断请求通过中断控制器冲裁后,向ARM920T核发出FIQ或者 IRQ中断。
ARM内核只有2个外部中断输入信号nIRQ和nFIQ,在具体嵌入式系统中,需要用中断控制器管理多个外部中断源,选择其中一个中断,通过 nIRQ或nFIQ向ARM内核发出中断请求,如图2所示。
图2 FIQ/IRQ中断处理过程
ARM920T内核可以识别正常中断请求和快速中断请求两种类型的外部中断,中断的行为模式由中断控制器来设置。
S3C2410X的中断控制器包括6类寄存器:中断源状态寄存器、中断模式寄存器、中断屏蔽寄存器、优先级寄存器、中断状态寄存器,以及中断偏移寄存器。
在初始化程序中,需要选择相应管脚的功能,在此定义GPF3为EINT3模式,通过外部中断控制寄存器EXTINT0设定EINT3是下降沿触发方式,通过
设置中断源悬挂寄存器SRCPND、中断悬挂寄存器INTPND和中断屏蔽寄存器INTMSK开启EINT3。
中断模式寄存器和中断优先级寄存器采用系统默认方式。
具体代码实现如下:
void Eint_Init(void){
rGPFCON = (rGPFCON & 0x3f0c)|(1<<7);
rEXTINT0 = (rEXTINT0 & ~(0x7<<12)) | 0x2<<12;
pISR_EINT3=(U32)Eint3Int;
rSRCPND = BIT_EINT3;
rINTPND = BIT_EINT3;
rINTMSK=~( BIT_EINT3);
}
图3 主程序流程图
如果采用EINT4~EINT23之间的中断源,还需要设置外部中断悬挂寄存器EINTPEND和外部中断掩码寄存器EINTMASK的相关位。
在C语言的Main()程序中调用Eint_Init()函数,即可完成中断处理的初始化操作。
操作流程如图3所示。
若外部下降沿信号接到GPF3管脚,就可以调用Eint3Int中断处理函数。
一、实验名称
异常类的定义及处理
二、实验目的
1) 了解异常处理方法。
2) 熟悉并掌握常见异常的捕获方法。
3) 熟悉JDK中已经定义的若干异常类的层次结构。
4) 掌握自定义异常类的创建方法。
三、实验记录
1.编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。
然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。
步骤(1):编写一个包含main方法的Application类TestException,然后定义一个方法
void arraySize(){……}生成并捕获NegativeArraySizeException异常。
步骤(2):添加一个方法
void outofBound(){……}生成并捕获IndexOutOfBoundsException异常。
步骤(3):添加一个方法
void nullPointer(){……}生成并捕获IndexOutOfBoundsException异常。
步骤(4):在main方法中分别调用以上三个方法。
步骤(5):将文件保存为TestException.java,然后编译、调试应用程序。
步骤(6):将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?
如果没错误,执行程序看结果有什么不同?
步骤(7):将array方法重新定义为如下形式:
void arraySize() throws NegativeArraySizeException{……}
然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部分。
源程序如下:
class TestException {
public static void main(String[] args) {
try{
outofBound();
arraySize();
nullPointer();
}catch(NegativeArraySizeException e)
{System.out.println(e.toString());}
}
static void arraySize()
{
try{
int a[]; a=new int[-3];
}catch(NegativeArraySizeException e)
{System.out.println("Error:Negative Array Size");} }
static void outofBound()
{
try{
int i;int a[];
a=new int[5];
for(i=0;i<6;i++)
{ a[i]=i;
System.out.println("a["+i+"]="+ a[i]);
}
}catch(IndexOutOfBoundsException e)
{System.out.println("Error:Index Out Of Bounds");} }
static void nullPointer()
{
try{
String s=null;
System.out.println(s.length());
}
catch(NullPointerException e)
{System.out.println("Error:Null Pointer");}
}
/* static void arraySize() throws NegativeArraySizeException { try{
int a[];
a=new int[-3];
}
catch(NegativeArraySizeException e)
{throw e;}
}
*/
}
运行结果如下:
(1)
(2)注释掉outofBound()方法中捕获异常的语句
(3)重新定义array方法
2.编写程序实现如下功能:计算两个数之和,参与求和运算的每个数的值都必须在10-20之间,当任意一个数超出范围时,抛出自己的异常。
步骤(1):基于系统异常类Exception,定义自己的异常类NumberRangeException。
步骤(2):定义包含main方法的Application类SelfException。
步骤(3):在SelfException类中添加公共方法:
Public static int selfExceptionTest(int int1,int int2) throws NumberRangeException
使之能在求int1,int2两个数和之前检查两个数的数值范围,若符合条件则求和,否则抛出异
常NumberRangeException。
步骤(4):在main方法中调用selfExceptionTest方法。
步骤(5):保存文件为SelfException.java,然后编译并调试程序。
步骤(6):修改main方法中调用selfExceptionTest方法的实参,看看程序的运行结果有什么不同。
源程序如下:
class NumberRangeException extends Exception{
private int int1,int2;
int result;
public NumberRangeException(String message,int int1,int int2){
super(message);
this.int1=int1;
this.int2=int2;
}
}
public class SelfException {
public static void selfExceptionTest(int int1,int int2) throws NumberRangeException{ if((int1<10||int1>20)||(int2<10||int2>20))
{throw new NumberRangeException("超出指定范围", int1, int2);
}
System.out.println("int1="+int1+"
"+"int2="+int2+"\n"+"result="+(int1+int2));
}
public void getSum(){
try{selfExceptionTest(25,15);
}catch(NumberRangeException e){
} System.out.println("数值超出指定范围"); } } public static void main(String[] args){ SelfException num=new SelfException(); num.getSum(); }
运行结果如下:
(1)
(2)修改参数后
3.编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。
如果输入的参数个数为1、2、3则它们应分别对应正方形、长方形、三角形,如果参数值为0,则异常处理方法显示错误消息。
[提示]:自己定义一个异常类,表示参数个数0这一异常。
然后定义一个抽象的父类,并提供一个抽象的方法area(),再派生出三个子类,重写area方法,最后在main方法中编写测试逻辑。
源程序如下:
import java.io.*;
class NullParameterException extends Exception
{
NullParameterException(String Message)
{super(Message);
}
};
class TestArea
{public static void main(String[] args)
{
Shape sh=null;
String s="",s1="",s2="",s3="";
int n=0;
double a=0,b=0,c=0;
try{ BufferedReader in=new InputStreamReader(System.in));
System.out.print("Please input the parameter(input0,1,2or3):");
s=in.readLine(); n=Integer.parseInt(s); }catch(IOException e){}
try{BufferedReader in=new
InputStreamReader(System.in));
switch(n)
{case 1:
BufferedReader(new number of BufferedReader(new { System.out.print("Please input a parameter:"); s1=in.readLine();a=Double.parseDouble(s1); System.out.print("The area of the square is:"); sh=new Square(a); break; } case 2: { System.out.print("Please input the 1st parameter:"); s1=in.readLine();a=Double.parseDouble(s1);
System.out.print("Please input the 2nd parameter:");
s2=in.readLine();b=Double.parseDouble(s2); System.out.print("The area of the rectangle is:"); sh=new Rectangle(a,b);break; } case 3: { System.out.print("Please input the 1st parameter:"); s1=in.readLine();a=Double.parseDouble(s1);
System.out.print("Please input the 2nd parameter:");
s2=in.readLine();b=Double.parseDouble(s2); System.out.print("Please input the 3rd parameter:"); s3=in.readLine();c=Double.parseDouble(s3); System.out.print("The area of the triangle is:"); sh=new Triangle(a,b,c);break; }
case 0:throw new NullParameterException("The number of parameter is null!");
}
System.out.println(sh.area());
}catch(Exception e){System.out.println(e.toString());}
}
};
abstract class Shape
{
abstract double area();
};
class Triangle extends Shape
{
double a,b,c;
Triangle(double a,double b,double c) {
this.a=a;
this.b=b;
this.c=c;
}
double area()
{double s;
s=(a+b+c)/2;
return(Math.sqrt(s*(s-a)*(s-b)*(s-c))); }
};
class Rectangle extends Shape
{
double l,w;
Rectangle(double l,double w)
{
this.l=l;
this.w=w;
}
double area()
{return (l*w);
}
};
class Square extends Shape {double l;
Square(double l)
{this.l=l;}
double area()
{return l*l;}
};
运行结果如下:
(1)
(2)
(3)
(4)
四、个人小结
本次实验是编写三个java程序实现简单的功能并从中认识java异常类的定义及处理,其中第一个和第二个实验要求检验自己定义的异常类,以修改一些参数来达到目的,修改参数后可以看到运行结果不同,这样就使我们深刻认识到在java中捕获异常与处理异常的重要性。
实验是在java集成开发环境Myeclipse中完成的,在Myeclipse中完成java源程序的编辑、编译与运行。
实验中遇到过很多问题,而Myeclipse能够较准确的指出错误并提出修改建议,在不断的修改后,终于使得所写的程序没有语法等错误,但在运行时却不能正常运行,经检查发现是
方法的调用以及变量的初始化出现了问题,改正后程序正常运行出现正确的结果。
通过这次上机,我对java面向对象的程序设计的概念有了进一步的认识,深化了对课本知识的了解与认识,同时在本次上机实验中我尝试了使用输入输出流,从键盘输入参数,因此也进一步学会了一些编程方法与技巧,希望经过以后的上机来更好的掌握java。
预算单位直接支付操作流程
异常数据处理
退款管理
●直接支付退款接收:登陆系统→选择[录入角色] →点击[退款管理]→点击[直接支付退款接收] →选中
[未登记]中的退款通知书→点击[保存]
●授权支付退款接收:登陆系统→选择[录入角色]→点击[退款管理]→点击[授权支付退
款接收]→选中[未登记]中的退款凭证→点击[保存]
文件编号:
制订部:品质部
版本版次:A/0
生效日期:
文件类别:三级文件
此文件为深圳市XX光电内部管理文件,未经许可,不得影印,违者必究。
1.目的:
规范制程异常处理流程,使异常能及时、全面有效的得到解决。
2.适用范围:
本管理办法适用于公司所有异常的处理。
3.定义:
3.1 异常:指在制程过程中产品(材料)不良率达到或超过相关文件所规定的有效值或重大质量事故时。
3.2 重大质量事故:指产品在生产、检验过程中出现严重影响质量的现象。
如亮度、平整度、外观、性能存在不可修复的风险或需要大批量返工等。
4.职责与权限:
4.1 生产部负责异常提报、及时改善;异常对策的执行。
4.2 品质部负责异常提报、确认、评审、分析;组织改善、组织原因分析讨论与对策汇总;改善措施的制订、改善过程对策执行跟进,改善效果验证以及整个流程运作的监督跟进等。
4.3 生技负责对异常的分析,现场处理,临时改善对策提供,改善过程跟进以及改善标准文件的提供。
5.文件内容:
5.1 异常提报。
5.1.1在各检验站点、老化、高压测试站点不良达到或超出管控标准时,由品保在10分钟内向相关责任部门发异常处理单。
5.1.2在生产过程中某工站不良达到或超出规定参数标准时,IPQC在30分钟内未提出《异常处理单》,其它部门(生技\PMC\生产)有责任提出。
5.1.3 重大质量事故发生时,由第一发现部门在10分钟内向相关责任部门或责任人发《异常处理单》。
5.2 异常处理流程。
5.2.1 异常发出部门需填写好异常处理单中接收部门(一般为生产部、品质部、计划部、工程部等)、产品型号、工单号、发生地点、发生时间、不良数据与不良率、不良程度、问题描述、要求回复时间等内容。
5.2.2 异常内容填写完后将异常单交品质部IPQC确认所填写内容真实性。
5.2.3 IPQC确认OK后,再将异常单交品质部QE评审。
5.2.4 品质部QE收到此单后,5分钟内对异常问题是否属实,异常类别、严重程度进行确认,根据确认结果召集相关责任人在10分钟内到现场分析处理。
5.2.5 相关人员到达现场后,根据异常内容展开分析,生技在30分钟内制订临时对策以满足生产需求,对同一工单和同类产品在各工段的产品数据信息收集统计并决议处理方案;如果无法在30分钟给出应对措施或无法找到异常原因,品保部要求生产立即停线处理,并召集PMC、工程主管到现场解决,如在4小时内无解决方案,品质部QE工程师立即通知总经理、销售经理。
5.2.6 生技在制订出临时对策后,临时对策及解决方案需签字有效,QE要对临时对策执行有效性进行确认,如对策无效,由生技在30分钟内重新制订新的临时对策。
5.2.7 对策执行完成后,制造部进行损失工时统计。
并将数据记录于生产报表中交财务和PMC统计。
5.2.8 问题定位分析后QE将此单交相关责任部门在2个工作日内对造成异常原因进行分析,并制订永久改善对策。
需要通过实验验证,由责任部门主导进行实验,实验后
订出永久改善对策并将此单交品质部QE。
5.2.9永久改善对策完成后由品质部QE将此异常单交对策实施部门进行实施,对实施过监控,对实施效果进行验证确认,OK后,此异常可结案,验证确认NG时,重新返回责任部门进行永久对策制订,对无条件验证的需每月持续统计,寻求验证机会。
5.3对策分析
5.3.1生技根据现场分析结果制订出临时改善对策,品质部对本工单相关区域产品数量进行统计,由现场相关人员制订出处理方案给相关部门责任人并确认改善预定时间内
的处理结果。
5.3.2责任部门根据定位分析结果对后续该产品(材料)提出永久性改善对策,品质部跟进在预计完成时间内的改善执行状况。
5.3.3品质部对该异常在体系上存在问题提出改进措施,并跟进在预计时间内的改善情况。
5.4对策实施验证与效果确认
5.4.1生产部班长接到异常处理单后,严格按照异常处理单的改善对策要求进行现场、机器或其它进行改善,将改善过程中的相关信息记录于异常单后交品保确认。
,5.4.2品保班长或IPQC根据制造实施的相关内容和相关对策,对制造后续生产的该产品进行验证,检查制造有无按相关对策执行,并把对策执行后的产品质量检验结果记录于异常单上交品保QE进行效果确认。
5.4.3品保QE工程师对相关改善部门的改善结果进行逐一确认是否按要求进行更改,更改后效果是否达到要求,相关文件是否更改发行等,并把确认的相关信息按要求填写于异常处理单上。
5.5结案
品质部在异常单的分析结果、对策执行、效果确认等OK后,且在下一到二个工单生产过程中没有相同不良发生,才能结案,此异常单才能视为关闭。
否则此异常还需按各相关部门原因分析临时改善对策永久改善对策
体系改善对策效果确认追踪验证等流程重新进行,直到经过确认改善后第一到二个工单的生产过程中没有相同不良发生时才能关闭。
异常关闭后QE将异常处理单分发相关部门并存档。
6.相关文件:
《不合格品控制流程》
《质量管理条例》
7.相关表格:
《异常处理单》
8、流程图。