Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Генерация документов Word,Excel - гибкий вариант с формой
Простейший способ генерации документов - через разметку с as-doc, но в этом случае мы ничего не передаем в процедуру генерации кроме itemID (т.е. данные выводятся по заранее сохраненным в базе данных данным, связанным с itemID). См. генерация Word Excel по шаблону.
Есть более гибкий вариант - вызов модальной формы, в которой вызывается внешнее действие генерации документа. И здесь мы можем передать различные параметры из формы через JSON.
Как это сделать:
1. Создаем форму с необходимыми полями и вызываем в SaveItem внешнее действие.
-- в SaveItem формы
-- SELECT 1
select 1 Result, ' ' Msg, '' SuccessUrl, 1 HideFormAfterSubmit, '' RefreshContainer
-- SELECT 2 Вызов внешнего действия
select 'generatedoc' type, 'stageDS' code, cast(@itemID as nvarchar) itemID, '{
"companyName" : "'+replace(isnull(@companyName, ''), '"', '')+'",
"num" : "'+cast(isnull(@num, 0) as nvarchar)+'",
"date" : "'+isnull(@pdate, '')+'",
"sum" : "'+cast(isnull(@psum, '') as nvarchar)+'",
"workDays" : "'+isnull(@pworkDays, '')+'",
"docID": '+cast(@docID as nvarchar)+'
}' parameters
Что здесь важно:
- Пробел в Msg нужен чтобы по умолчанию не возникал alert по операции.
- Параметры передаются в механизм генерации документа (в данном случае код stageDS) через JSON в parameters.
2. В /doctemplates создаем код генерации документа, загружаем шаблон документа и прописываем процедуру, где можно извлечь параметры.
CREATE PROCEDURE [dbo].[doc_stageDS_getData]
@username nvarchar(64),
@itemID int,
@urlParameters CRUDFilterParameter READONLY ,
@parameters ExtendedDictionaryParameter READONLY
AS
begin
declare @companyName nvarchar(max)=''
select @companyName = Value2 from @parameters where [Key]='companyName'
declare @num nvarchar(max)=''
select @num = Value2 from @parameters where [Key]='num'
declare @date nvarchar(max)=''
select @date = Value2 from @parameters where [Key]='date'
-- ...
end
Обратите внимание, что в процедуре добавлен @parameters ExtendedDictionaryParameter READONLY, из которого мы извлекаем значения (Value2) по ключу.
3. В JS коллебке формы мы обрабатываем результат выполенния внешнего действия и получаем URL файла, а затем выдаем его в алерте.
ПримерJS коллбека - https://pastebin.com/x7gZiCVf
В итоге мы получаем некую форму, которая после заполнения выдает на скачивание сформированный документ.
Саму выгрузку документа можно сделать максимально универсальной (все изменяемое приходит на вход в виде параметров), что позволит ее использовать для разных форм и случаев.
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта