Как создать выгрузку документа в 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= ...
}

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы

Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.