Пример #1
0
 private void удалитьВедомостьToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (this.metroListView2.SelectedItems.Count > 0 && MetroFramework.MetroMessageBox.Show(this, "Вы уверены что хотите удалить ведомость?", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
     {
         Statement2.DeleteStatementFromDocument(((Statement2)(this.metroListView2.SelectedItems[0].Tag)).StatementInXml);
         this.metroListView2.SelectedItems[0].Remove();
     }
 }
Пример #2
0
        public Block BuildDocument(int indentation)
        {
            Section s = new Section();

            s.Blocks.Add(Statement1.BuildDocument(indentation));
            s.Blocks.Add(Statement2.BuildDocument(indentation));
            return(s);
        }
Пример #3
0
        public FrameworkElement BuildForm(IValueEnvironment vEnv, ITypeEnvironment tEnv)
        {
            StackPanel sp = new StackPanel();

            sp.Children.Add(Statement1.BuildForm(vEnv, tEnv));
            sp.Children.Add(Statement2.BuildForm(vEnv, tEnv));

            return(sp);
        }
Пример #4
0
        private void button7_Click(object sender, EventArgs e)
        {
            Statement1 = txtStatement1.Text;
            Statement2 = txtStatement2.Text;
            Statement3 = txtStatement3.Text;

            Conclusion4 = txtConclusion4.Text;

            Statement         s1            = new Statement(Statement1.ToUpper().Trim());
            Statement         s2            = new Statement(Statement2.ToUpper().Trim());
            Statement         s3            = new Statement(Statement3.ToUpper().Trim());
            IList <Statement> StatementList = new List <Statement> {
            };

            if (!String.IsNullOrEmpty(Statement1.Trim()))
            {
                StatementList.Add(s1);
            }
            if (!String.IsNullOrEmpty(Statement2.Trim()))
            {
                StatementList.Add(s2);
            }
            if (!String.IsNullOrEmpty(Statement3.Trim()))
            {
                StatementList.Add(s3);
            }

            Conclusion c4 = null;

            if (!String.IsNullOrEmpty(Conclusion4.Trim()))
            {
                c4 = new Conclusion(Conclusion4.ToUpper().Trim(), StatementList);
            }
            IList <Statement> sList = new List <Statement>();

            StatementList = CorrespondingPair.GetCorrespondingAlignedStatementsByConclusion(c4, StatementList, out sList);

            if (StatementList.Count == 1)
            {
                lblResult.Text = "Corresponding Statement is : " + "\n\n" +
                                 "1 ) " + StatementList[0].StatementName.ToUpper() + "\n";
            }
            else if (StatementList.Count == 2)
            {
                lblResult.Text = "Corresponding Statements are : " + "\n\n" +
                                 "1 ) " + StatementList[0].StatementName.ToUpper() + "\n" +
                                 "2 ) " + StatementList[1].StatementName.ToUpper() + "\n";
            }
            else if (StatementList.Count == 3)
            {
                lblResult.Text = "Corresponding Statements are : " + "\n\n" +
                                 "1 ) " + StatementList[0].StatementName.ToUpper() + "\n" +
                                 "2 ) " + StatementList[1].StatementName.ToUpper() + "\n" +
                                 "3 ) " + StatementList[2].StatementName.ToUpper() + "\n";
            }
        }
Пример #5
0
        public override bool Equals(object obj)
        {
            if (!(obj is CompStmnt))
            {
                return(false);
            }

            CompStmnt other = (CompStmnt)obj;

            return(Statement1.Equals(other.Statement1) && Statement2.Equals(other.Statement2));
        }
Пример #6
0
        private void печатьВедомостиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (metroListView2.SelectedItems.Count == 0)
            {
                return;
            }

            Statement2 SelectedStatement = (Statement2)(metroListView2.SelectedItems[0].Tag);

            DocumentBuilder.BuildStatement2(SelectedStatement);
        }
        protected override string Serialize()
        {
            var result = new StringBuilder();

            result.AppendLine(base.Serialize());
            result.AppendLine(@"<ShowStatement1>" + ShowStatement1 + @"</ShowStatement1>");
            result.AppendLine(@"<ShowStatement2>" + ShowStatement2 + @"</ShowStatement2>");
            result.AppendLine(@"<ShowStatement3>" + ShowStatement3 + @"</ShowStatement3>");
            result.AppendLine(@"<SlideHeader>" + SlideHeader.Replace(@"&", "&#38;").Replace("\"", "&quot;") + @"</SlideHeader>");
            result.AppendLine(@"<Statement1>" + Statement1.Replace(@"&", "&#38;").Replace("\"", "&quot;") + @"</Statement1>");
            result.AppendLine(@"<Statement2>" + Statement2.Replace(@"&", "&#38;").Replace("\"", "&quot;") + @"</Statement2>");
            result.AppendLine(@"<Statement3>" + Statement3.Replace(@"&", "&#38;").Replace("\"", "&quot;") + @"</Statement3>");
            return(result.ToString());
        }
Пример #8
0
        public FrameworkElement BuildForm(IValueEnvironment vEnv, ITypeEnvironment tEnv)
        {
            Style s = new Style();

            s.Setters.Add(new Setter(UIElement.VisibilityProperty, Visibility.Collapsed));
            s.Setters.Add(new Setter(FrameworkElement.MarginProperty, new Thickness(0)));

            TabControl t = new TabControl()
            {
                ItemContainerStyle = s
            };

            t.Margin          = new Thickness(0);
            t.Padding         = new Thickness(0);
            t.BorderThickness = new Thickness(0);
            t.Items.Add(Statement1.BuildForm(vEnv, tEnv));
            t.Items.Add(Statement2.BuildForm(vEnv, tEnv));

            return(t);
        }
Пример #9
0
        /// <summary>
        /// Сохранить ведомость
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_ClickSaveStatement(object sender, EventArgs e)
        {
            if (((Control)(sender)).Text == "Применить изменения")
            {
                statement.EducationalInstitution = this.Education.Text;
                statement.codeAndSpecialityName  = this.CodeAndName.Text;
                statement.chairman          = this.ChairMan.Text;
                statement.deputy            = this.deputy.Text;
                statement.CommissionMember1 = this.CommissionMember1.Text;
                statement.CommissionMember2 = this.CommissionMember2.Text;

                Statement2.Statement2_Document.Save(Config.Statement2_Path);
            }
            else
            {
                Statement2 newStatement = new Statement2(
                    Statement2.Statement2_Document.DocumentElement,
                    Convert.ToUInt16(this.Year.Text),
                    this.Education.Text,
                    this.CodeAndName.Text,
                    this.ChairMan.Text,
                    this.deputy.Text,
                    this.CommissionMember1.Text,
                    this.CommissionMember2.Text
                    );

                if (this.Table.Items.Count != 0)
                {
                    newStatement.AppendTabularPart(this.Table.Items, this.Table.Columns);
                }
            }

            new PopupNotifier()
            {
                TitleText   = "База данных",
                ContentText = "Ведомость сохранена"
            }.Popup();

            this.Close();
        }
Пример #10
0
        /// <summary>
        /// Если ведомость уже существует, и форма открывается для редактирования
        /// </summary>
        /// <param name="statement"></param>
        public Statement2_Form(Statement2 statement)
        {
            InitializeComponent();

            this.statement = statement;
            this.Button_SaveStatement.Text = "Применить изменения";

            //
            // Установка значений
            //

            this.Year.Text              = this.statement.Year.ToString();
            this.Education.Text         = this.statement.EducationalInstitution;
            this.CodeAndName.Text       = this.statement.codeAndSpecialityName;
            this.ChairMan.Text          = this.statement.chairman;
            this.deputy.Text            = this.statement.deputy;
            this.CommissionMember1.Text = this.CommissionMember1.Text;
            this.CommissionMember2.Text = this.CommissionMember2.Text;

            //
            // Табличная часть
            //

            foreach (Statement2_Row row in this.statement.TabularPart)
            {
                ListViewItem item = this.Table.Items.Add(row.Name);
                item.SubItems.Add(row.Sex);
                item.SubItems.Add(row.YearOfBirth);
                item.SubItems.Add(row.FamilyStatus);
                item.SubItems.Add(row.Address);
                item.SubItems.Add(row.GovernmentAgency);
                item.SubItems.Add(row.Organization);
                item.SubItems.Add(row.Position);
                item.SubItems.Add(row.m1);
                item.SubItems.Add(row.m2);

                item.Tag = row;
            }
        }
Пример #11
0
        private void Show_Form_Shown(object sender, EventArgs e)
        {
            //
            // Вывод списка ведомостей персонального учета
            //

            Statement1[] statements1 = Statement1.GetStatementsFromDocument();

            foreach (Statement1 statement in statements1)
            {
                ListViewItem item = metroListView1.Items.Add(statement.Year.ToString());
                item.Tag = statement;
                item.SubItems.Add(statement.Group.ToString());
            }

            this.metroListView1.Columns[0].Width = this.metroListView1.Width / 2;
            this.metroListView1.Columns[1].Width = this.metroListView1.Width / 2;

            //
            // Вывод списка ведомостей распределения
            //

            Statement2[] statements = Statement2.GetStatements2FromDocument();

            foreach (Statement2 statement in statements)
            {
                ListViewItem item = metroListView2.Items.Add(statement.codeAndSpecialityName);
                item.Tag = statement;
                item.SubItems.Add(statement.Year.ToString());
                //Количество потомков в "элементе" таблицы(потомки - строки)
                item.SubItems.Add(statement.getTabularPart().ChildNodes.Count.ToString());
            }

            this.metroListView2.Columns[1].Width = 100;
            this.metroListView2.Columns[2].Width = 250;

            Show_Form_ResizeEnd(null, null);
        }
Пример #12
0
        public MarkupGrammar(IParserSettings settings)
        {
            var Apos = Ch('\'');
            var Quot = Ch('\"');
            var Lt   = Ch('<');
            var Gt   = Ch('>');


            //var CombiningChar = Ch('*');
            //var Extener = Ch('*');

            //[4]       NameChar	   ::=       Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
            var NameChar = Ch(char.IsLetterOrDigit).Or(Ch('.', '-', '_', ':')) /*.Or(CombiningChar).Or(Extener)*/;

            //[5]       Name	   ::=      (Letter | '_' | ':') (NameChar)*
            var Name =
                Ch(char.IsLetter).Or(Ch('_', ':')).And(Rep(NameChar))
                .Build(hit => hit.Left + new string(hit.Down.ToArray()));

            //[7]       Nmtoken	   ::=      (NameChar)+
            var NmToken =
                Rep1(NameChar)
                .Build(hit => new string(hit.ToArray()));

            //[3]       S	   ::=      (#x20 | #x9 | #xD | #xA)+
            Whitespace = Rep1(Ch(char.IsWhiteSpace));

            //[25]      Eq	   ::=       S? '=' S?
            var Eq = Opt(Whitespace).And(Ch('=')).And(Opt(Whitespace));



            var paintedStatement1 = Statement1.Build(hit => new StatementNode(hit)).Paint <StatementNode, Node>();

            var statementMarker = string.IsNullOrEmpty(settings.StatementMarker) ? "#" : settings.StatementMarker;

            // Syntax 1: '\r'? ('\n' | '\u0002') S? '#' (statement ^('\r' | '\n' | '\u0003') )
            var StatementNode1 = Opt(Ch('\r')).And(Ch('\n').Or(ChSTX())).And(Rep(Ch(' ', '\t'))).And(TkCode(Ch(statementMarker))).And(paintedStatement1).IfNext(Ch('\r', '\n').Or(ChETX()))
                                 .Build(hit => hit.Down);


            var paintedStatement2 = Statement2.Build(hit => new StatementNode(hit)).Paint <StatementNode, Node>();

            // Syntax 2: '<%' (statement ^'%>')  '%>'
            var StatementNode2 = TkAspxCode(Ch("<%")).NotNext(Ch('=')).And(paintedStatement2).And(TkAspxCode(Ch("%>")))
                                 .Build(hit => hit.Left.Down);

            Statement = StatementNode1.Or(StatementNode2);



            // Syntax 1: ${csharp_expression}
            var Code1 = TkCode(Ch("${")).And(Expression).And(TkCode(Ch('}')))
                        .Build(hit => new ExpressionNode(hit.Left.Down)
            {
                AutomaticEncoding = settings.AutomaticEncoding
            });

            // Syntax 3: <%=csharp_expression%>;
            var Code3 = TkAspxCode(Ch("<%")).And(TkAttDelim(Ch('='))).And(Expression).And(TkAspxCode(Ch("%>")))
                        .Build(hit => new ExpressionNode(hit.Left.Down));

            // Syntax 4: $!{csharp_expression}
            var Code4 = TkCode(Ch("$!{")).And(Expression).And(TkCode(Ch('}')))
                        .Build(hit => new ExpressionNode(hit.Left.Down)
            {
                SilentNulls = true, AutomaticEncoding = settings.AutomaticEncoding
            });

            // Syntax 5: !{sharp_expression}
            var Code5 = TkCode(Ch("!{")).And(Expression).And(TkCode(Ch('}')))
                        .Build(hit => new ExpressionNode(hit.Left.Down));

            Code = Code1.Or(Code3).Or(Code4).Or(Code5);

            var Condition = TkCode(Ch("?{")).And(Expression).And(TkCode(Ch('}')))
                            .Build(hit => new ConditionNode(hit.Left.Down));

            var LessThanTextNode = Ch('<')
                                   .Build(hit => (Node) new TextNode("<"));

            //[68]      EntityRef	   ::=      '&' Name ';'
            EntityRef =
                TkEntity(Ch('&').And(Name).And(Ch(';')))
                .Build(hit => new EntityNode(hit.Left.Down));

            var EntityRefOrAmpersand = AsNode(EntityRef).Or(Ch('&').Build(hit => (Node) new TextNode("&")));

            //[10]      AttValue	   ::=      '"' ([^<&"] | Reference)* '"' |  "'" ([^<&'] | Reference)* "'"
            var AttValueSingleText = TkAttVal(Rep1(ChNot('<', '&', '\'').Unless(Code).Unless(Condition))).Build(hit => new TextNode(hit));
            var AttValueSingle     = TkAttQuo(Apos).And(Rep(AsNode(AttValueSingleText).Or(EntityRefOrAmpersand).Or(AsNode(Code)).Or(AsNode(Condition)).Or(LessThanTextNode).Paint())).And(TkAttQuo(Apos));
            var AttValueDoubleText = TkAttVal(Rep1(ChNot('<', '&', '\"').Unless(Code).Unless(Condition))).Build(hit => new TextNode(hit));
            var AttValueDouble     = TkAttQuo(Quot).And(Rep(AsNode(AttValueDoubleText).Or(EntityRefOrAmpersand).Or(AsNode(Code)).Or(AsNode(Condition)).Or(LessThanTextNode).Paint())).And(TkAttQuo(Quot));
            var AttValue           = AttValueSingle.Or(AttValueDouble).Left().Down();


            //[41]      Attribute	   ::=       Name  Eq  AttValue
            Attribute =
                TkAttNam(Name).And(TkAttDelim(Eq)).And(AttValue)
                .Build(hit => new AttributeNode(hit.Left.Left, hit.Down)).Paint <AttributeNode, Node>();


            //[40]      STag	   ::=      '<' Name (S  Attribute)* S? '>'
            //[44]      EmptyElemTag	   ::=      '<' Name (S  Attribute)* S? '/>'
            Element =
                Opt(Ch("\r\n").Or(Ch("\n")).And(StringOf(Ch(char.IsWhiteSpace).Unless(Ch('\r', '\n'))))).And(TkTagDelim(Lt)).And(TkEleNam(Name)).And(Rep(Whitespace.And(Attribute).Down())).And(Opt(Whitespace)).And(Opt(TkTagDelim(Ch('/')))).And(TkTagDelim(Gt))
                .Build(hit => new ElementNode(
                           hit.Left.Left.Left.Left.Down,
                           hit.Left.Left.Left.Down,
                           hit.Left.Down != default(char),
                           hit.Left.Left.Left.Left.Left.Left == null ? string.Empty : hit.Left.Left.Left.Left.Left.Left.Left + hit.Left.Left.Left.Left.Left.Left.Down));

            //[42]      ETag	   ::=      '</' Name  S? '>'
            EndElement =
                Opt(Ch("\r\n").Or(Ch("\n")).And(StringOf(Ch(char.IsWhiteSpace).Unless(Ch('\r', '\n'))))).And(TkTagDelim(Lt.And(Ch('/')))).And(TkEleNam(Name)).And(Opt(Whitespace)).And(TkTagDelim(Gt))
                .Build(hit => new EndElementNode(hit.Left.Left.Down, hit.Left.Left.Left.Left == null ? string.Empty : hit.Left.Left.Left.Left.Left + hit.Left.Left.Left.Left.Down));

            Text =
                Rep1(ChNot('&', '<').Unless(Statement).Unless(Code).Unless(Element).Unless(EndElement))
                .Build(hit => new TextNode(hit));

            //[15]      Comment	   ::=      '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
            Comment =
                TkComm(Ch("<!--").And(Rep(ChNot('-').Or(Ch('-').IfNext(ChNot('-'))))).And(Ch("-->")))
                .Build(hit => new CommentNode(hit.Left.Down));

            //[11]      SystemLiteral	   ::=      ('"' [^"]* '"') | ("'" [^']* "'")
            var SystemLiteral =
                Quot.And(Rep(ChNot('\"'))).And(Quot).Or(Apos.And(Rep(ChNot('\''))).And(Apos))
                .Build(hit => new string(hit.Left.Down.ToArray()));

            //[13]      PubidChar	   ::=      #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
            var PubidChar1 = Ch(char.IsLetterOrDigit).Or(Ch(" \r\n-()+,./:=?;!*#@$_%".ToArray()));
            var PubidChar2 = PubidChar1.Or(Apos);

            //[12]      PubidLiteral	   ::=      '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
            var PubidLiteral =
                Quot.And(Rep(PubidChar2)).And(Quot).Or(Apos.And(Rep(PubidChar1)).And(Apos))
                .Build(hit => new string(hit.Left.Down.ToArray()));

            //[75]      ExternalID	   ::=      'SYSTEM' S  SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral
            var ExternalIDSystem =
                Ch("SYSTEM").And(Whitespace).And(SystemLiteral)
                .Build(hit => new ExternalIdInfo
            {
                ExternalIdType = hit.Left.Left,
                SystemId       = hit.Down
            });
            var ExternalIDPublic =
                Ch("PUBLIC").And(Whitespace).And(PubidLiteral).And(Whitespace).And(SystemLiteral)
                .Build(hit => new ExternalIdInfo
            {
                ExternalIdType = hit.Left.Left.Left.Left,
                PublicId       = hit.Left.Left.Down,
                SystemId       = hit.Down
            });
            var ExternalID = ExternalIDSystem.Or(ExternalIDPublic);

            //[28]      doctypedecl	   ::=      '<!DOCTYPE' S  Name (S  ExternalID)? S? ('[' intSubset ']' S?)? '>'
            DoctypeDecl = Ch("<!DOCTYPE").And(Whitespace).And(Name).And(Opt(Whitespace.And(ExternalID).Down())).And(Opt(Whitespace)).And(Ch('>'))
                          .Build(hit => new DoctypeNode {
                Name = hit.Left.Left.Left.Down, ExternalId = hit.Left.Left.Down
            });

            //[26]      VersionNum	   ::=      '1.0'
            var VersionNum = Ch("1.0");

            //[24]      VersionInfo	   ::=       S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')
            var VersionInfo = Whitespace.And(Ch("version")).And(Eq).And(
                Apos.And(VersionNum).And(Apos).Or(Quot.And(VersionNum).And(Quot)));

            //[81]      EncName	   ::=      [A-Za-z] ([A-Za-z0-9._] | '-')*
            var EncName = Ch(char.IsLetter).And(Rep(Ch(char.IsLetterOrDigit).Or(Ch('.', '_', '-'))))
                          .Build(hit => hit.Left + new string(hit.Down.ToArray()));

            //[80]      EncodingDecl	   ::=       S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )
            var EncodingDecl = Whitespace.And(Ch("encoding")).And(Eq).And(
                Apos.And(EncName).And(Apos).Or(Quot.And(EncName).And(Quot)))
                               .Build(hit => hit.Down.Left.Down);

            //[32]      SDDecl	   ::=       S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
            var SSDecl = Whitespace.And(Ch("standalone")).And(Eq).And(
                Apos.And(Ch("yes").Or(Ch("no"))).And(Apos).Or(Quot.And(Ch("yes").Or(Ch("no"))).And(Quot)))
                         .Build(hit => hit.Down.Left.Down);

            //[23]      XMLDecl	   ::=      '<?xml' VersionInfo  EncodingDecl? SDDecl? S? '?>'
            XMLDecl =
                Ch("<?xml").And(VersionInfo).And(Opt(EncodingDecl)).And(Opt(SSDecl)).And(Opt(Whitespace)).And(Ch("?>"))
                .Build(hit => new XMLDeclNode {
                Encoding = hit.Left.Left.Left.Down, Standalone = hit.Left.Left.Down
            });

            //[17]      PITarget	   ::=      Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
            var PITarget = Name.Unless(Ch('X', 'x').And(Ch('M', 'm')).And(Ch('L', 'l')));

            //[16]      PI	   ::=      '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
            ProcessingInstruction = Ch("<?").And(PITarget).And(Opt(Whitespace)).And(Rep(Ch(ch => true).Unless(Ch("?>")))).And(Ch("?>"))
                                    .Build(hit => new ProcessingInstructionNode {
                Name = hit.Left.Left.Left.Down, Body = new string(hit.Left.Down.ToArray())
            });


            AnyNode = AsNode(Element).Paint()
                      .Or(AsNode(EndElement).Paint())
                      .Or(AsNode(Text).Paint())
                      .Or(EntityRefOrAmpersand.Paint())
                      .Or(AsNode(Statement))
                      .Or(AsNode(Code).Paint())
                      .Or(AsNode(DoctypeDecl).Paint())
                      .Or(AsNode(Comment).Paint())
                      .Or(AsNode(XMLDecl).Paint())
                      .Or(AsNode(ProcessingInstruction).Paint())
                      .Or(AsNode(LessThanTextNode).Paint());

            Nodes = Rep(AnyNode);
        }
Пример #13
0
 public override int GetHashCode()
 {
     return(Statement1.GetHashCode() ^ Statement2.GetHashCode());
 }
Пример #14
0
 public void TypeCheck(ITypeEnvironment env)
 {
     Statement1.TypeCheck(env);
     Statement2.TypeCheck(env);
 }
Пример #15
0
        /// <summary>
        /// Сгенерировать ведомость распределения в формате WORD
        /// </summary>
        /// <param name="Statement">Ведомость</param>
        /// <param name="PathToTemplateDocument">Путь к шаблону</param>
        /// <returns></returns>
        public static bool BuildStatement2(
            Statement2 Statement,
            string PathToTemplateDocument = "Templates\\Statement2.docx"
            )
        {
            string FileName = $"{Statement.codeAndSpecialityName} {DateTime.Now.Year}.{DateTime.Now.Month}.{DateTime.Now.Day}.docx";
            bool   Error    = false;

            //Если файл существует, то добавляем (Количество файлов в папке + 1) к названию файла
            if (File.Exists(Directory.GetCurrentDirectory() + "\\TemporaryFiles\\" + FileName))
            {
                FileName = (1 + Directory.GetFiles(Directory.GetCurrentDirectory() + "\\TemporaryFiles\\").Length) + "  " + FileName;
            }

            File.Copy(Directory.GetCurrentDirectory() + "\\Templates\\Statement2.docx",
                      Directory.GetCurrentDirectory() + "\\TemporaryFiles\\" + FileName);

            var wordApplication = new Word.Application()
            {
                Visible = false
            };
            var wordDocument = wordApplication.Documents.Open(Directory.GetCurrentDirectory() + "\\TemporaryFiles\\" + FileName);

            //Год
            if (!ReplaceInWord("yr", Statement.Year.ToString().Substring(2), wordDocument))
            {
                Error = true;
            }

            //Наименование учреждения образования или организации
            if (!ReplaceInWord("{Edu}", Statement.EducationalInstitution, wordDocument))
            {
                Error = true;
            }

            //Код и наименование специальности
            if (!ReplaceInWord("{CodeAndName}", Statement.codeAndSpecialityName, wordDocument))
            {
                Error = true;
            }

            //Председатель комиссии
            ReplaceInWord("{CM}", Statement.chairman, wordDocument);

            //Заместитель председателя
            ReplaceInWord("{CH}", Statement.deputy, wordDocument);

            //Члены комиссии
            ReplaceInWord("{M1}", Statement.CommissionMember1, wordDocument);
            ReplaceInWord("{M2}", Statement.CommissionMember1, wordDocument);

            /*Формирование табличной части*/
            XmlElement XmlTabularPart = Statement.getTabularPart();

            Word.Table TabularPart = wordDocument.Tables[1];

            //Добавление строк, -1 потому что 1 строки в шаблоне уже есть
            for (int count = XmlTabularPart.ChildNodes.Count - 1; count > 0; count--)
            {
                TabularPart.Rows.Add();
            }

            for (int RowIndex = 0; RowIndex < XmlTabularPart.ChildNodes.Count; RowIndex++)
            {
                for (int column = 0; column < 10; column++)
                {
                    TabularPart.Cell(4 + RowIndex, column + 1).Range.Text = XmlTabularPart.ChildNodes[RowIndex].ChildNodes[column].InnerText;
                }
            }

            wordDocument.Save();
            wordApplication.Visible = true;

            return(Error);
        }