protected override void OnValidRecord( ValidateRecordEventArgs e )
        {
            if( _Activity.Mode != ImportMode.Smart )
            {
                int supplierId = (int)e.Record[ "SupplierID" ];

                if( !_supplierId.HasValue )
                {
                    //Прайсклинер тоже ставит лок
                    _priceCleaner.ClearData( supplierId, _CurrentReport.Counters );
                    _supplierId = supplierId;

                    //Проверка в списке собственных складов
                    var cnt = LockerManager.CheckOwnStore(supplierId, _Connection);

                    //Если поставщик находится в собственных складах наличия то пытаемся получить лок на базу данных, если не получаем то вываливаемся с исключением
                    if (cnt > 0 && LockerManager.AquireCheckLock(_Connection) < 0)
                    {
                        //Если здесь вываливаемся, то попадаем
                        throw new Exception();
                    }
                }

                //импорт прайс-листов: ид поставщика должен быть у всех одинаковый
                if( _supplierId != supplierId )
                {
                    e.AddValidationErrorDetail( new CustomValidationErrorDetail( "SupplierID - не совпадает с первой строкой файла" ) );
                }
            }
        }
        protected virtual bool OnValidateRecord(DataReaderBase.RecordValuesCollection values)
        {
            if (ValidateRecord != null)
            {
                var details = ValidateCurrentRecord();
                var args = new ValidateRecordEventArgs(
                    (IDataRecord)_reader,
                    values,
                    this );

                foreach( var validationErrorDetail in details )
                    args.AddValidationErrorDetail( validationErrorDetail );

                ValidateRecord(this, args);
                return !args.IsValid || args.SkipRecord;
            }
            return true;
        }