Tworzenie pliku tekstowego
Podsumowanie:Akcja tworzenia pliku tekstowego umożliwia wygenerowanie pliku tekstowego o dowolnej strukturze na podstawie danych zwróconych przez zapytanie SQL oraz wartości zmiennych typu {@nazwa}. Akcja wymaga określenia szablonu generującego dane tekstowe z wykorzystaniem składni języka Razor (patrz opis w www.w3schools.com) oraz zapytania zwracającego dane źródłowe. Wygenerowany plik jest automatycznie zapisywany w folderze pobierania przeglądarki.
☛ AdminSPA >
NARZĘDZIA
>Akcje
>Tworzenie pliku tekstowego

Oprócz właściwości wspólnych dla wszystkich akcji, w akcji tworzenia pliku tekstowego należy określić następujące właściwości:
-
Format pliku
: wpisz rozszerzenie nazwy pliku lub wybierz je z listy. -
Szablon razor
: okno edycji szablonu razor; w szablonie można używać danych zwracanych przez SQl poprzez odwołania do tablicy Model.SqlContext oraz wartosci z kontekstu formularza poprzez odwołania do tablicy Model.FormContext; w oknie szablonu jest dostępna asysta wprowadzania wyświetlana po wprowadzeniu znaku < z listą znaczników HTML. -
SQL modelu danych
: zapytanie SQL zwracające dane, które zostaną wyrenderowane w szablonie Razor jak plik tekstowy; zapytanie musi zwrócić dane w formacie JSON.
Przykład
Przykład akcji generującej plik XML na podstawie danych zwróconych przez zapytanie.
Zapytanie SQL:
SELECT UP.UserName,
JSON_QUERY(
(SELECT Roles.Id, Roles.Name FROM [core].[Roles]
JOIN [core].[UserProfileRoles] UR ON Roles.Id = UR.RoleId
WHERE UR.UserProfileId = UP.Id
FOR JSON AUTO)) AS Roles
FROM [core].[UserProfiles] UP
FOR JSON AUTO, INCLUDE_NULL_VALUES
Wynik zapytania:
[
{
"UserName":"system",
"Roles":null
},
{
"UserName":"admin",
"Roles":[
{
"Id":3,
"Name":"Klient"
}
]
},
{
"UserName":"consultant",
"Roles":[
{
"Id":2,
"Name":"Konsultant"
}
]
},
{
"UserName":"jtester",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":6,
"Name":"Kontrola jakości"
}
]
},
{
"UserName":"akajot",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":7,
"Name":"Kierownik KJ"
}
]
},
{
"UserName":"stechniczny",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":8,
"Name":"Pracownik DT"
}
]
},
{
"UserName":"rfinan",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":10,
"Name":"Finanse"
}
]
},
{
"UserName":"msciprzy",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":11,
"Name":"Pracownik"
}
]
},
{
"UserName":"teopol",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":11,
"Name":"Pracownik"
}
]
},
{
"UserName":"euneu",
"Roles":[
{
"Id":1,
"Name":"Administrator"
},
{
"Id":5,
"Name":"Administrator użytkowników PublicAPI"
},
{
"Id":11,
"Name":"Pracownik"
},
{
"Id":12,
"Name":"Kierownik"
}
]
},
{
"UserName":"jenglish",
"Roles":[
{
"Id":3,
"Name":"Klient"
},
{
"Id":6,
"Name":"Kontrola jakości"
}
]
}
]
Szablon Razor:
<?xml version="1.0" encoding="UTF-8"?>
<document code="@Model.FormContext.Code"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<
xsi:noNamespaceSchemaLocation="usersroles.xsd">
@if(Model.SqlContext != null)
{
<Users>
@foreach(var user in Model.SqlContext)
{
<User>
<Name>@user.UserName</Name>
@if(user.Roles != null)
{
<Roles>
@foreach(var role in user.Roles)
{
<Role>
<Id>@role.Id</Id>
<Name>@role.Name</Name>
</Role>
}
</Roles>
}
</User>
}
</Users>
}
</document>
Wynikowy plik XML:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="usersroles.xsd">
<Users>
<User>
<Name>system</Name>
</User>
<User>
<Name>admin</Name>
<Roles>
<Role>
<Id>1</Id>
<Name>Administrator</Name>
</Role>
</Roles>
</User>
<User>
<Name>consultant</Name>
<Roles>
<Role>
<Id>2</Id>
<Name>Konsultant</Name>
</Role>
</Roles>
</User>
<User>
<Name>jtester</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>6</Id>
<Name>Kontrola jakości</Name>
</Role>
</Roles>
</User>
<User>
<Name>akajot</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>7</Id>
<Name>Kierownik KJ</Name>
</Role>
</Roles>
</User>
<User>
<Name>stechniczny</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>8</Id>
<Name>Pracownik DT</Name>
</Role>
</Roles>
</User>
<User>
<Name>rfinan</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>10</Id>
<Name>Finanse</Name>
</Role>
</Roles>
</User>
<User>
<Name>msciprzy</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>11</Id>
<Name>Pracownik</Name>
</Role>
</Roles>
</User>
<User>
<Name>teopol</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>11</Id>
<Name>Pracownik</Name>
</Role>
</Roles>
</User>
<User>
<Name>euneu</Name>
<Roles>
<Role>
<Id>1</Id>
<Name>Administrator</Name>
</Role>
<Role>
<Id>5</Id>
<Name>Administrator użytkowników PublicAPI</Name>
</Role>
<Role>
<Id>11</Id>
<Name>Pracownik</Name>
</Role>
<Role>
<Id>12</Id>
<Name>Kierownik</Name>
</Role>
</Roles>
</User>
<User>
<Name>jenglish</Name>
<Roles>
<Role>
<Id>3</Id>
<Name>Klient</Name>
</Role>
<Role>
<Id>6</Id>
<Name>Kontrola jakości</Name>
</Role>
</Roles>
</User>
</Users>
</document>