附件

Frappe 允许将文件附加到文档中。对特定文档拥有读取权限的用户也可以访问附加到该文档的文件。用户还可以从侧边栏访问文件管理器。

如何附加新文件

有几种方法可以将文件附加到文档中。

选择文件

拖放

已上传的文件

将之前上传的文件附加到另一个文档中。

如果您使用独立的文件服务器或使用 Dropbox、Docs 等在线服务,您可以通过提供文件链接来附加文件。

相机

使用设备相机拍照来附加图片。

文件管理器

所有附加的文件都会列在文件管理器中。您可以通过以下路径访问它们:

首页 > 工具 > 文件

导入 Zip 压缩包

您还可以使用“导入 Zip”功能一次批量导入多个文件。

  1. 转到 文件列表 > 菜单 > 导入 Zip
  2. 上传一个 zip 压缩包文件。
  3. zip 文件上传后,其内容将被解压,每个文件将作为一条新的文件记录创建。

注意:从 zip 文件导入时,不会解压隐藏文件(以 . 开头的文件)。

导出为 Zip 压缩包

您还可以使用“导出为 Zip”功能一次批量导出多个文件。

  1. 转到 文件列表
  2. 选择多个文件。
  3. 点击“操作 > 导出为 zip”。
  4. zip 文件下载后,您可以使用“导入 Zip”功能将其导入到另一个站点,或通过电子邮件发送。

裁剪图片

您可以通过点击裁剪图标来裁剪 .jpeg.png 图片。

优化图片

可以优化图片以减小其文件大小。目前,优化图片会执行以下操作:

  1. 将其大小调整为最大宽度 1920 像素、最大高度 1080 像素,同时保持宽高比
  2. 使用最佳编码器设置
  3. 将质量降低至 85%

上传时切换优化

优化已上传的图片

限制

默认情况下,每个附件的文件大小限制为 10MB。对于自托管用户,可以通过在站点配置文件中设置 max_file_size 来更改此限制。

每个文档的附件数

您可以限制特定文档可以附加的文件数量。

步骤 1:导航至“自定义表单”

首页 > 自定义 > 自定义表单

步骤 2:选择文档类型

选择您要为其设置此限制的文档类型。

步骤 3:设置限制

最大附件数的值设置为允许此文档类型附加的最大附件数量。

对更改满意后,点击更新按钮。就这样!现在,每次向此类型的文档添加新附件时,都会验证每个文档的最大附件数。

打印

Frappe 框架对为文档生成打印格式并将其转换为 PDF 提供了一流的支持。Frappe 使用 Jinja 作为打印格式的模板语言。

可以从任何文档的表单视图中访问打印视图。系统会根据表单布局和其中的必填字段,为所有 DocType 生成标准打印格式。 打印视图

要自定义打印格式,您需要创建标准打印格式的副本,并使用打印格式构建器对其进行自定义。这些打印格式可由用户编辑,并且不会作为文件与应用捆绑在一起。

打印格式构建器

自定义 HTML

您还可以向打印格式中添加自定义 HTML。只需将左侧边栏中的“自定义 HTML”按钮拖放到您的打印格式编辑器中即可。

在“自定义 HTML”字段中,您可以使用任何有效的 HTML,并使用 Bootstrap 3 类进行样式设置。您还可以使用 Jinja 模板为 HTML 添加动态内容。请参阅可在 Jinja 模板中使用的方法列表。

自定义 HTML

自定义 CSS

要更改打印格式的样式,您还可以添加自定义 CSS。

点击“自定义”> “编辑属性”以添加自定义 CSS

自定义 CSS

自定义 CSS 预览

高级打印格式

如果您想完全更改打印格式的布局,打印格式构建器的功能就会受到限制。您还可以从头开始编写自己的 HTML,并构建您想要的打印布局。

要创建新的打印格式,请在 AwesomeBar 中输入“new print format”并按回车键。

  1. 为您的格式选择一个唯一的名称。
  2. 将“标准”设置为“否”。
  3. 勾选“自定义格式”。
  4. 将打印格式类型选择为“Jinja”。
  5. 编写您的自定义 HTML。

如果您将“标准”设置为“是”并且启用了开发者模式,那么系统将为您的打印格式生成一个 JSON 文件,并且您必须将其与您的应用一起检入到版本控制中。

打印格式中的自定义 HTML

Frappe 允许您为查询和脚本报表创建自定义打印格式。这些打印格式无法通过用户界面创建。

要为报表创建打印格式,请在报表文件夹中创建一个名为 {report-name}.html 的 HTML 文件。

例如,请查看总账。

JS 模板

这些打印格式是在客户端生成的,因此我们不能使用 Jinja。我们使用 John Resig 模板的改编版本。它看起来与 Jinja 类似,因此您无需学习任何新内容。

以下是 JS 模板的片段。

{% for(var i=0, l=data.length; i<l i>
    {% if(data[i].posting_date) { %}
        {%= frappe.datetime.str_to_user(data[i].posting_date) %}

            {% if(!(filters.party || filters.account)) { %}
                {%= data[i].party || data[i].account %}
                <br>
            {% } %}

            {{ __("Against") }}: {%= data[i].against %}
            <br>{%= __("Remarks") %}: {%= data[i].remarks %}

    {% } else { %}
        <b>{%= frappe.format(data[i].account, {fieldtype: "Link"}) || " " %}</b>

 {%= data[i].account && format_currency(data[i].debit, filters.presentation_currency) %}

 {% } %}

{% } %}
</l>

简介

什么是 Frappe 框架?

Frappe,发音为 fra-pay,是一个全栈式、功能完备的 Web 框架,使用 Python 和 Javascript 编写,并以 MariaDB 作为数据库。它是驱动 ERPNext 的底层框架,具有很好的通用性,可用于构建数据库驱动的应用程序。

为什么选择 Frappe?

Frappe 与其他框架的关键区别在于,元数据也被视为数据。这使得您可以非常轻松地构建前端。我们信奉单体架构,因此 Frappe 几乎包含了构建现代 Web 应用所需的一切。它拥有一个功能齐全的管理界面,称为 Desk,开箱即用地处理表单、导航、列表、菜单、权限、文件附件等众多功能。更多信息请点击此处阅读。

主要特性

  1. 全栈框架:Frappe 同时涵盖前端和后端开发,使开发人员能够使用单一框架构建完整的应用程序。
  2. 内置管理界面:提供预构建、可自定义的管理仪表板,用于管理应用程序数据,减少开发时间和工作量。
  3. 基于角色的权限:全面的用户和角色管理系统,用于控制应用程序内的访问和权限。
  4. REST API:为所有模型自动生成 RESTful API,便于与其他系统和服务的集成。
  5. 可自定义的表单和视图:通过服务器端脚本和客户端 JavaScript 实现灵活的表单和视图定制。
  6. 报表生成器:强大的报表工具,允许用户无需编写任何代码即可创建自定义报表。

安装

在使用 Frappe 之前,您需要先安装它。我们有一份完整的安装指南,涵盖了所有可能的情况,本指南还将帮助您了解后端技术栈。

学习与社区

  1. Frappe School – 通过维护者或社区提供的各种课程学习 Frappe 框架和 ERPNext。
  2. GitHub – 探索源代码、贡献代码,并与 Frappe 社区协作。
  3. 讨论论坛 – 在我们的论坛上与不断壮大的社区互动,提问、帮助他人并成为社区的一员。
  4. buildwithhussain.dev – 观看 Frappe 框架在实际项目中如何被用于构建世界级的 Web 应用。

办公桌

Frappe 框架自带一个功能丰富的管理界面,称为 Desk。它会读取 DocType 的元数据,
并自动为你的 DocType 构建列表视图、表单视图、报表视图等。
Desk 供类型为“系统用户”的用户使用。

在本节中,我们将讨论 Desk 提供了哪些视图以及如何配置它们。

  • 工作区
  • 快捷导航栏
  • 列表视图
  • 表单视图
  • 表格视图
  • 报表生成器
  • 树形视图
  • 日历视图
  • 甘特图视图
  • 看板视图
  • Desk 主题

工作区

登录后,你会看到 Desk,它带有一个固定的侧边栏,其中包含基于应用模块的一些标准项目。
每个侧边栏项目都链接到一个称为工作区的页面。

关于工作区 →

快捷导航栏

快捷导航栏可帮助你在系统中任意导航、创建新记录、搜索文档,
甚至执行数学运算。


使用快捷导航栏导航待办事项

列表视图

除子表和单文档类型外,所有 DocType 都会生成列表视图。

列表视图功能丰富,其中一些功能包括:

  1. 筛选
  2. 排序
  3. 分页
  4. 按标签筛选
  5. 切换到报表、日历、甘特图、看板等视图

了解更多关于列表 API 的信息。

表单视图

表单视图用于以表单布局查看记录。此视图包含很多功能,
但其主要目的是查看和编辑记录。
文档可以分配给其他用户或与其共享,并且可以包含任意附件和标签,
所有这些都可以在表单侧边栏中看到。


表单视图

当您滚动到表单底部时,会看到表单时间线。
表单时间线按时间倒序显示邮件、评论、编辑和其他事件。


表单时间线

了解更多关于表单 API 的信息。

表格视图

表格视图在表单视图中用作表格,用于插入多条记录。
用户可以在表单中配置表格视图的列。

报表生成器

报表生成器是一个通用工具,用于从 DocType 自定义和构建表格数据。
你可以选择要显示的列、要应用的筛选器、排序顺序,并通过为报表命名来保存此配置。
你还可以显示子表数据,并根据子记录筛选文档。
你还可以对某一列应用分组依据,并使用计数、求和和平均值等聚合方法。


报表生成器功能

树形视图

Frappe 还支持使用嵌套集模型存储树形结构记录。
如果某个 DocType 被配置为树形结构,则可以在树形视图中查看它。


树形视图

日历视图

可以为包含开始日期和结束日期的 DocType 配置日历视图。


日历视图

配置文件应命名为 {doctype}_calendar.js,并且应位于
doctype 目录中。

以下是 Event DocType 的日历视图配置示例,必须设置在 event_calendar.js 文件中。

frappe.views.calendar['Event'] = {
 field_map: {
 start: 'starts_on',
 end: 'ends_on',
 id: 'name',
 allDay: 'all_day',
 title: 'subject',
 status: 'event_type',
 color: 'color'
 },
 style_map: {
 Public: 'success',
 Private: 'info'
 },
 order_by: 'ends_on',
 get_events_method: 'frappe.desk.doctype.event.event.get_events'
}

甘特图视图

甘特图视图使用与日历相同的配置文件,因此每个具有日历视图的 DocType 也具有甘特图视图。

如果需要为 Event DocType 的甘特图视图覆盖某些设置(例如 order_by 字段),可以在 event_calendar.js 文件中设置配置,内容如下。

frappe.views.calendar['Event'] = {
 field_map: {
 start: 'starts_on',
 end: 'ends_on',
 id: 'name',
 allDay: 'all_day',
 title: 'subject',
 status: 'event_type',
 color: 'color'
 },
 gantt: { // The values set here will override the values set in the object just for Gantt View
 order_by: 'starts_on',
 }
 style_map: {
 Public: 'success',
 Private: 'info'
 },
 order_by: 'starts_on',
 get_events_method: 'frappe.desk.doctype.event.event.get_events'
}


甘特图视图

看板视图

可以为任何具有带选项的选择字段的 DocType 创建看板视图。
这些选项将成为看板板的列名。

深色主题

Frappe 框架对深色主题提供了一流支持。要切换主题,请点击屏幕右上角的头像,然后点击“切换主题”。点击“切换主题”后,你将看到以下弹窗,可以轻松在可用主题之间切换。要切换到深色主题,请选择“Timeless Night”。

注意:你也可以按 CTRL + SHIFT + G 打开此弹窗。