BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 21:52

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Как создать документ?
СообщениеДобавлено: 02 дек 2011, 17:23 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
subj, и как прикрепить к нему файл? =) через апи желательно =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 05 дек 2011, 20:18 
Не в сети

Зарегистрирован: 22 окт 2009, 15:45
Сообщения: 201
Карма: 15
API
Для генерации документов
Document
DocumentManager


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 06 дек 2011, 13:40 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
KostiK писал(а):
API
Для генерации документов
Document
DocumentManager

Ну я там поискал, что уж вы так. Но если уж на то пошло, то:
1. откуда взять ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer plugin, который в DocumentManager(java.sql.Connection con, ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer plugin). new BGPluginServer() прокатывает, но только ничего не работает.
2. Document(). Где в методах этого класса какой нибудь setFile, addFile с аргументом inputStream ну или byteArray.

Меня не напрягло и я руками делаю вставки в contract_document_{plugin_id} вставляю документ, по номеру записи создаю файл, вставляю на него ссылку в filestorage_files_list_{plugin_id}. Но как то меня напрягает эти номера высчитывать, сейчас 1 файл 1 документ и вроде ошибиться сложно, но что если где то пропустится запись или два файла - уже запутаться можно, у вас это уже есть и работает =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 06 дек 2011, 14:49 
Не в сети

Зарегистрирован: 22 окт 2009, 15:45
Сообщения: 201
Карма: 15
1)Создавать нудно так.
Код:
 BGPluginManagerServer.getManager().getPluginByUID( event.getPluginId() );

2) В Document нет такого метода, прикрепление файла происходит по другому. После того как, создадите документ, т.е. вызвав метод:
Код:
documentManager.updateDocument( "new", document );

У документа появится documentId. Вот этот id нужен для того, чтобы прикрепить файл к документу
Пример для 5.2
Код:
   // сам файл документа
      File file = new File( filePath );
      // добавляем строку
      FileStorage fileStorage = new FileStorage( "куда сохранять файл, берется из конфига плагина file.storage.root.path", String.valueOf( plugin.getPluginUID() ), con );
      BGServerFile documentFile = new BGServerFile();
      documentFile.setOwnerId( documentId );
      documentFile.setTitle( "Имя файла" );
      documentFile.setSize( file.length() );
      documentFile.setComment( "Сгенерированный Файл" );
      documentFile.setDate( new Date() );
      documentFile.setUserId( event.getUserId() ); //какой пользователь создал файл
      fileStorage.updateFile( documentFile );
      //
      if( documentFile.getId() > 0 )
      {
         try
         {
            // открываем поток куда писать
            FileOutputStream out = fileStorage.save( documentFile.getId() );
            // и декодируем туда
            String filedata = Base64.encode( new FileInputStream( file ) );
            Base64.decode( new ByteArrayInputStream( filedata.getBytes() ), out );
            // закрываем стрим
            out.close();
            // удаляем временный файл
            file.delete();
         }
         catch( Exception e )
         {
            // и удаляем зазря только добавленную строчку
            fileStorage.deleteFile( documentFile.getId() );
            print( "Ошибка сохранения файла.\nИли пришли битые данные файла.\n" + e.getMessage() );
         }
      }


Если вы пишите для 5.2, используя динамические Java классы, то есть еще событие GenerateDocumentEvent.
Я начал писать генерацию документов по шаблону формата .odt, используя при этом динамические Java классы. Но пока разработка притормозилась.
Если вы примерно этим же занимаетесь, то можно обсудить функционал и допилить. Думаю это актуально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 07 дек 2011, 08:58 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
KostiK писал(а):
1)Создавать нудно так.
Код:
 BGPluginManagerServer.getManager().getPluginByUID( event.getPluginId() );

2) В Document нет такого метода, прикрепление файла происходит по другому. После того как, создадите документ, т.е. вызвав метод:
Код:
documentManager.updateDocument( "new", document );

У документа появится documentId. Вот этот id нужен для того, чтобы прикрепить файл к документу
Пример для 5.2
Код:
   // сам файл документа
      File file = new File( filePath );
      // добавляем строку
      FileStorage fileStorage = new FileStorage( "куда сохранять файл, берется из конфига плагина file.storage.root.path", String.valueOf( plugin.getPluginUID() ), con );
      BGServerFile documentFile = new BGServerFile();
      documentFile.setOwnerId( documentId );
      documentFile.setTitle( "Имя файла" );
      documentFile.setSize( file.length() );
      documentFile.setComment( "Сгенерированный Файл" );
      documentFile.setDate( new Date() );
      documentFile.setUserId( event.getUserId() ); //какой пользователь создал файл
      fileStorage.updateFile( documentFile );
      //
      if( documentFile.getId() > 0 )
      {
         try
         {
            // открываем поток куда писать
            FileOutputStream out = fileStorage.save( documentFile.getId() );
            // и декодируем туда
            String filedata = Base64.encode( new FileInputStream( file ) );
            Base64.decode( new ByteArrayInputStream( filedata.getBytes() ), out );
            // закрываем стрим
            out.close();
            // удаляем временный файл
            file.delete();
         }
         catch( Exception e )
         {
            // и удаляем зазря только добавленную строчку
            fileStorage.deleteFile( documentFile.getId() );
            print( "Ошибка сохранения файла.\nИли пришли битые данные файла.\n" + e.getMessage() );
         }
      }


Если вы пишите для 5.2, используя динамические Java классы, то есть еще событие GenerateDocumentEvent.
Я начал писать генерацию документов по шаблону формата .odt, используя при этом динамические Java классы. Но пока разработка притормозилась.
Если вы примерно этим же занимаетесь, то можно обсудить функционал и допилить. Думаю это актуально.


У меня 5.1, задача была какая - периодически создавать сервисные карты и складывать их в плагин документс. Спасибо за кусок кода, файлсторадж как-то не думал использоваьт - это грубо говоря то, что делает записи в file_storage_list и ими управляет,типа добавляет ссылки на файлы и удалеяет? А именами файлов она же рулит? Когда owner_id (ссылка на документ) и id файла одни - это все хорошо и код как у вас, а вот если в документ будет два файла. Тогда получается documentFile.getId() будет меньше чем имя файла... меня вот этот момент напрягал =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 07 дек 2011, 12:24 
Не в сети

Зарегистрирован: 22 окт 2009, 15:45
Сообщения: 201
Карма: 15
Феанор писал(а):
У меня 5.1, задача была какая - периодически создавать сервисные карты и складывать их в плагин документс. Спасибо за кусок кода, файлсторадж как-то не думал использоваьт - это грубо говоря то, что делает записи в file_storage_list и ими управляет,типа добавляет ссылки на файлы и удалеяет? А именами файлов она же рулит? Когда owner_id (ссылка на документ) и id файла одни - это все хорошо и код как у вас, а вот если в документ будет два файла. Тогда получается documentFile.getId() будет меньше чем имя файла... меня вот этот момент напрягал =)

Да Вы правильно все поняли. Файлсторадж делает записи в той таблице, и именами тоже.
Почему же меньше чем имя файла? Файлы сохраняются под номерами. а реальные имена их остаются в табличке. И если у документа несколько файлов, то они достаются из этой таблички по коду документа и коду файла( код файла является именем файла).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 05 фев 2018, 14:02 
Не в сети

Зарегистрирован: 15 дек 2016, 23:23
Сообщения: 11
Карма: 0
Добрый день! Подскажите, пожалуйста, способ создания документа и прикрепления файла для 6.2 через API. В документации описан интерфейс DocumentsService, но не смог найти его реализацию. Или файл прикреплять так же как и в 2011 году?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 07 фев 2018, 12:20 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2010, 16:12
Сообщения: 941
Откуда: Уфа
Карма: 124
Здравствуйте. В документации по API есть описание веб-сервиса DocumentsService (https://bgbilling.ru/v7.1/javadoc/index.html)
В этом веб-сервисе есть метод updateDocument(), используйте его. Описание параметров почитайте в описании к параметрам. Приклеплять файлы к документу с помощью метода uploadDocumentFile().

_________________
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать документ?
СообщениеДобавлено: 08 фев 2018, 22:39 
Не в сети

Зарегистрирован: 15 дек 2016, 23:23
Сообщения: 11
Карма: 0
Спасибо, всё получилось! Не надо было искать класс реализующий этот сервис, а использовать его непосредственно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.080s | 36 Queries | GZIP : On ]