protected override bool FilesFilterForImmediateMode(ComponentInstallStatus desiredStatus, ComponentInstallStatus allowedStatus, bool isNew, bool isRequiringUpdate)
        {
            // Текущий статус установки.
              CurrentInstallStatus currentInstallStatus = Session.GetService<ISessionCurrentInstallStatusExtension>().GetStatus();

              // Новая установка.
              if (currentInstallStatus == CurrentInstallStatus.Install
            && desiredStatus == ComponentInstallStatus.Install
            && allowedStatus.HasFlag(ComponentInstallStatus.Install))
              {
            // Для новой базы запускаем скрипт.
            return isNew;
              }

              // Обслуживание (изменение этого же продукта).
              // Добавлена новая база. В этом случае также необходимо выполнить скрипты с атрибутом Install.
              if (currentInstallStatus == CurrentInstallStatus.Change
            // Компонент уже должен быть установлен.
            && desiredStatus == ComponentInstallStatus.AlreadyInstalled)
              {
            return isNew && (allowedStatus.HasFlag(ComponentInstallStatus.Install)
              || allowedStatus.HasFlag(ComponentInstallStatus.Reinstall));
              }

              // При обновлении и patch новую базу не добавляем, поэтому эту ситуацию не обрабатываем.

              return false;
        }
   /// <summary>
   /// Фильтр для получения файлов для режима Immediate.
   /// </summary>
   /// <param name="desiredStatus">Желаемый установочный статус компонента.</param>
   /// <param name="allowedStatus">Разрешенный установочный статус компонента заданный для свойств SQL-скрипта.
   /// Может содержать несколько значений.</param>
   /// <param name="isNew">Признак новой базы данных.</param>
   /// <param name="isRequiringUpdate">Признак, требует ли база данных обновление.</param>
   /// <returns></returns>
   protected abstract bool FilesFilterForImmediateMode(ComponentInstallStatus desiredStatus, ComponentInstallStatus allowedStatus,
 bool isNew, bool isRequiringUpdate);
        protected override bool FilesFilterForImmediateMode(ComponentInstallStatus desiredStatus, ComponentInstallStatus allowedStatus, bool isNew, bool isRequiringUpdate)
        {
            // Текущий статус установки.
              CurrentInstallStatus currentInstallStatus = Session.GetService<ISessionCurrentInstallStatusExtension>().GetStatus();

              // Новая установка.
              if (currentInstallStatus == CurrentInstallStatus.Install
            && desiredStatus == ComponentInstallStatus.Install
            && allowedStatus.HasFlag(ComponentInstallStatus.Install))
              {
            // Для базы требующей обновления запускаем скрипт.
            return isRequiringUpdate;
              }

              // Обслуживание (изменение этого же продукта).
              // Здесь будут базы с версией меньше устанавливаемой.
              // Базы с версией равной и больше текущей не должны обновлятся согласно возврату хранимой процедуры (по ТЗ).
              if (currentInstallStatus == CurrentInstallStatus.Change
            // Компонент уже должен быть установлен.
            && desiredStatus == ComponentInstallStatus.AlreadyInstalled
            && allowedStatus.HasFlag(ComponentInstallStatus.Reinstall))
              {
            return isRequiringUpdate;
              }

              // При обновлении запускаем скрипты только с признаком переустановки.
              if (currentInstallStatus == CurrentInstallStatus.Update
            && desiredStatus == ComponentInstallStatus.Reinstall
            && allowedStatus.HasFlag(ComponentInstallStatus.Reinstall))
              {
            return isRequiringUpdate;
              }

              // При patch запускаем скрипты только с признаком переустановки.
              if (currentInstallStatus == CurrentInstallStatus.Patch
            && desiredStatus == ComponentInstallStatus.AlreadyInstalled
            && allowedStatus.HasFlag(ComponentInstallStatus.Reinstall))
              {
            return isRequiringUpdate;
              }

              return false;
        }