private static void download(
      final AttachmentHandler originalDocumentService, final Serializable[] keys, final int index) {
    // сохраняем столько файлов, сколько отмечено записей
    // прошли весь список
    if (index >= keys.length) return;

    Integer key = (Integer) keys[index];
    final byte[] original = originalDocumentService.loadAttachmentBody(key);
    if (original == null) // нечего сохранять для данного документа
    download(originalDocumentService, keys, index + 1);
    else {
      String name = originalDocumentService.loadAttachmentName(key);
      UIUtils.storeFile(
          new FileStoreHandler() {

            public void onFailure(int reason, String description) {
              logger.debug("failure downloaded, reason: " + description); // $NON-NLS-1$
              if (FileStoreHandler.FILE_SIZE_EXCEEDED == reason)
                throw new FileSizeExceededException(description);
            }

            public void onSuccess(String filePath, String fileName) {
              download(originalDocumentService, keys, index + 1);
              logger.debug("succsess downloaded: " + fileName); // $NON-NLS-1$
            }

            public void prepareFile(OutputStream data) throws Exception {
              data.write(original);
            }
          },
          name,
          CoSUtils.getMaxDownloadFileSize());
    }
  }
  /**
   * показ оригиналов на локальной системе, количество показанных документов будет соответсвовать
   * количеству переданных сущностей
   *
   * @param keys список первичных ключей сущностей оригиналов документов
   * @param businessServiceName имя бизнес-сервиса
   */
  public static void show(final Serializable[] keys, final String businessServiceName) {
    if (keys.length == 0) return;

    AttachmentHandler originalDocumentService = getOriginalDocumentService(businessServiceName);
    for (int i = 0; i < keys.length; i++) {
      final byte[] original = originalDocumentService.loadAttachmentBody((Integer) keys[i]);
      if (original == null) // нечего сохранять для данного документа
      continue;
      String name = originalDocumentService.loadAttachmentName((Integer) keys[i]);
      UIUtils.showDocument(new UniversalFileWebResourceProvider(name, original));
    }
  }