private static Document ProcessWaybill(DocumentReceiveLog log, string filename)
        {
            if (log.DocumentType == DocType.Reject)
            {
                return(null);
            }

            var settings = WaybillSettings.Find(log.ClientCode.Value);

            if (log.DocumentSize == 0)
            {
                return(null);
            }

            // ждем пока файл появится в удаленной директории
            if (!log.FileIsLocal())
            {
                ShareFileHelper.WaitFile(filename, 5000);
            }

            var doc = SessionHelper.WithSession(s => {
                var detector = new WaybillFormatDetector();
                var result   = detector.Parse(s, filename, log);
                WaybillFormatDetector.Process(s, result);
                return(result);
            });

            // для мульти файла, мы сохраняем в источнике все файлы,
            // а здесь, если нужна накладная в dbf формате, то сохраняем merge-файл в dbf формате.
            if (doc != null)
            {
                Exporter.ConvertIfNeeded(doc, settings);
            }

            return(doc);
        }