Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как создать выгрузку документа в Excel через форму с последующей загрузкой на Google Disk и выгрузкой в PDF
Операция реализуется через цепочку вызовов Внешних действий.
Генерация Excel-> Загрузка файла на google drive -> Экспорт в PDF
1. Создаем форму с настройками параметров выгрузки и вызываем внешнее действие generatedoc, также указываем spCallback для вызова после генерации документа.
-- SELECT 2 в SaveItem
-- SELECT 1 (Result, Msg, SuccessUrl, HideFormAfterSubmit, RefreshContainer)
select 1 Result, ' ' Msg, '' SuccessUrl, 1 HideFormAfterSubmit, '.stageDocs' RefreshContainer
-- SELECT 2 Вызов внешнего действия
select 'generatedoc' type, 'stageAct' code, cast(@itemID as nvarchar) itemID,
'{
"companyName" : "'+replace(isnull(@companyName, ''), '"', '')+'",
"num" : "'+cast(isnull(@num, 0) as nvarchar)+'",
"date" : "'+isnull(@pdate, '')+'",
"parentDocName" : "'+isnull(@pparentDocName, '')+'",
"sum" : "'+cast(isnull(@psum, '') as nvarchar)+'",
"customerPost" : "'+isnull(@customerPost, '')+'",
"customerFIO" : "'+isnull(@customerFIO, '')+'",
"docID": '+cast(@docID as nvarchar)+'
}' parameters,
'generatedoc_uploadGD' spCallback,
cast(@docID as nvarchar) docID
2. Создаем процедуру загрузки созданного документа на сервер
В ней извлекаем нужные нам параметры и вызываем через внешнее действие upload на Google Drive, а также указываем spCallback для обработки пришедшего fileID.
Параметры url и docID извлекаются из parameters (они туда попадают из внешнего действия generatedoc).
ALTER PROCEDURE [dbo].[outer_generatedoc_uploadGD]
@parameters ExtendedDictionaryParameter readonly,
@data nvarchar(128) = '',
@username nvarchar(128) = ''
AS
BEGIN
-- SELECT 1 ReesultModel
select 1 Result, '' Msg
declare @path nvarchar(256)
select @path = Value2 from @parameters where lower([key]) = 'url'
declare @docID nvarchar(256)
select @docID = Value2 from @parameters where lower([key]) = 'docid'
declare @folderId nvarchar(128)
select top 1 @folderId = docFolderGoogleID from fin_contragents where id in (select contragentID from rudenas2x.dbo.doc_documents where id = @docID )
declare @s nvarchar(256) = 'outer_generatedoc_uploadGD = ' +isnull(@path, '') +' '+ isnull(@folderId, '')
exec as_print @str = @s
if(isnull(@path, '')<>'' and isnull(@folderId, '') <>'') begin
-- SELECT 2 Outer actions
select 'gd' type, 'upload' action, doc_getDocName(cast(@docID as int)) filename, @path filepath,
@folderId folderId, 'generatedoc_uploadGD_saveFileID' spCallback, @docID docID
end
3. Реализуем обработку по сохранению файла и вызову экспорта в PDF
ALTER PROCEDURE [dbo].[outer_generatedoc_uploadGD_saveFileID]
parameters ExtendedDictionaryParameter readonly,
@data nvarchar(128) = '',
@username nvarchar(128) = ''
AS
BEGIN
-- SELECT 1 ReesultModel
select 1 Result, '' Msg
declare @fileId nvarchar(256)
select @fileId = Value2 from @parameters where lower([key]) = 'fileid'
declare @docID nvarchar(256)
select @docID = Value2 from @parameters where lower([key]) = 'docid'
declare @s nvarchar(256)= 's='+ isnull(@fileId, '')
if(isnull(@fileId, '')<>'') begin
update doc_documents set gdfileId = @fileId where id = @docID
end
@declare @path nvarchar(128) = '/uploads/e1.pdf'
-- SELECT 2 Внешнее действие по экспорту
-- select 'gd' type, 'export' action, @fileId fileId, 'pdf' exportType, @path path
END
4. На стороне JS в коллбеке формы saveItem вы можете по необходимости обработать созданный @path (должен быть передан в data.additionalData)
as.formcallbacks.[formCode_saveItem] = function(data){
console.log(data)
// location.href= ...
}
Пример подобной функции - https://pastebin.com/x7gZiCVf
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта