private void CreateRules(Supplier supplier, bool wrongRules = false)
        {
            var rejectDataParser = new RejectDataParser("TestRule", supplier);

            rejectDataParser.Lines.Add(new RejectParserLine(rejectDataParser, "CODE", "Code"));
            rejectDataParser.Lines.Add(new RejectParserLine(rejectDataParser, "NAME", "Product"));
            rejectDataParser.Lines.Add(new RejectParserLine(rejectDataParser, "PRICE", "Cost"));
            rejectDataParser.Lines.Add(new RejectParserLine(rejectDataParser, "QNTZAK", "Ordered"));
            if (wrongRules)
            {
                rejectDataParser.Lines.Add(new RejectParserLine(rejectDataParser, "SOME_WRONG_FIELD", "Rejected"));
            }
            else
            {
                rejectDataParser.Lines.Add(new RejectParserLine(rejectDataParser, "QNTREF", "Rejected"));
            }
            session.Save(rejectDataParser);
        }
        /// <summary>
        ///   Создание отказов для логов.
        /// </summary>
        /// <param name="session">Сессия Nhibernate</param>
        /// <param name="log">Лог, о получении документа</param>
        /// <param name="metaForRedmineErrorIssueList"></param>
        private static void ProcessReject(ISession session, DocumentReceiveLog log, List <MetadataOfLog> metaForRedmineErrorIssueList)
        {
            RejectHeader reject;
            //если есть назначенные поставщику правила разбора
            var parsers = session.Query <RejectDataParser>().Where(x => x.Supplier.Id == log.Supplier.Id).ToList();

            //попытка распарсить ими
            reject = RejectDataParser.Parse(log, parsers);
            //иначе, выбор из имеющихся парсеров
            if (reject == null)
            {
                var parser = GetRejectParser(log);
                if (parser == null)
                {
                    if (log.DocumentType == DocType.Reject)
                    {
                        //создаем задачу на Redmine, прикрепляя файлы
                        Redmine.CreateIssueForLog(ref metaForRedmineErrorIssueList, log);
                    }
                    return;
                }
                reject = parser.CreateReject(log);
                if (reject == null)
                {
                    if (log.DocumentType == DocType.Reject)
                    {
                        //создаем задачу на Redmine, прикрепляя файлы
                        Redmine.CreateIssueForLog(ref metaForRedmineErrorIssueList, log);
                    }
                    return;
                }
            }
            if (reject.Lines.Count > 0)
            {
                try {
                    reject.Normalize(session);
                } catch (Exception e) {
                    _log.Error(string.Format("Не удалось идентифицировать товары отказа {0}", log.GetFileName()), e);
                }
                session.Save(reject);
            }
        }