员工时间表是任何CRM系统不可或缺的一部分。 但是,根据客户业务的具体情况,它们可以有很大不同。 在诊所中,这些是患者接收时间表;在电信中,这些是患者连接时间表;在学校中,这些是时间表。 它们的结构和本质各不相同。 他们有不同的上限,不同的字段集,不同的网格。
我们的ERP平台专注于任何利基配置的快速开发,并且我们考虑了如何方便地完成所有这些工作。 首先为自己。 这样我们为特定细分市场制定时间表的工作只需要一个工时。
在此之前,图形是用php开发的一种东西。 但是,天哪! 卡尔! 每当您需要针对利基解决方案的新时间表时,就需要复制此代码并进行处理。 图的个性不允许进行主要更改。 通常,它破坏了我们的云平台的概念,因为客户端可以独立配置它。
结果,我们对工作时间表形成了以下要求
- 可配置性
它们必须可以通过Web界面进行完全配置。 - 可变螺距
它们应具有可变的栅格间距。
在一家诊所中,预约时间表可能是每位患者30分钟,在另一家诊所则是第三小时20分钟 - 定制帽子
图的标头可以是唯一的,即 它可以是一组医生,设施,老师,团队等。 通常,客户端系统中的任何内容。 即使我们无法想象。 - 在图表记录中-任意一组字段
可以从系统中的任何信息中任意设置一组字段。 条目按照标题排列。 - 欺诈
尽管有任意字段集,但图表条目必须是CRUD(创建,读取,更新,删除)。 不仅如此,还可以使用过程来组织复杂的交互。
例如:有一个任务时间表。
在时间表的记录中,显示了谁在哪里执行工作等。 +有关任务的一些数据(例如,其编号和名称)。
用于记录计划的其他数据存储在一个表中,而任务数据存储在另一个表中。
创建时,将显示任务编号,由谁在何处执行。 数据将从两个表中显示。
您只能编辑图表记录中的数据,但不能编辑任务中的数据。
计划条目应删除,而不是任务。
必须保留使用此条目执行过操作的日志。 因为 可以将其删除,并且不一定要在日程表中显示它,那么您需要以某种方式进入日志。 他们更逻辑地领导任务本身,即 创建删除修改时,应将其写在单独的表中并显示在任务中。
这样的事情只能通过存储过程来解决,因此可以解决简单和复杂的情况。
- 字段可以是列表。
当然,这些字段不必只是文本。 它们也可以是系统中某些数据的弹出列表。 - 字段可以是链接
例如,当从任务的工作计划中可以进入任务本身时,这很方便。 - 隐藏场
如果记录中有很多字段,则将部分字段减至最小以简化感知是有意义的。 - 扳机
有必要将系统的反应调整为与记录有关。 使用触发器最方便地完成此操作。
例如,如果用户需要在记录上执行的操作上写某种日志,或者向员工发送通知,甚至发送短信客户端,甚至执行我们无法假设的事情。
- 交叉记录
交叉记录是将来自不同图形的记录组合成一个图形。 或当条目出现在当前图中时,条目在其他图中的外观。
例如,在某些情况下,相同的旅团会在应用程序和任务上执行工作。 即 他们会适应一定的常规计划,其中将显示来自不同计划的任务。
或者,您需要一个员工的个人日程表,其中包含他参加的所有日程表中的条目。
这样的任务比典型的任务要复杂一些,但是可以借助触发器和数据采集程序完全解决。 即 根据第9条和第5条。
a)在必要时间表的记录上创建触发器,如果用户在那里,则在用户的个人时间表中创建一个条目(相应地,如果发生更改,则进行更改,如果删除则进行删除)
b)在用户图表中创建其他字段,其中将包含必要的数据,并开发了记录输出过程,该过程将使用这些标识符从其他图表的表中提取数据。
可以用相反的方式解决这些任务,当创建个人员工的日程表时,会执行一个更狡猾的过程,该过程不仅会从个人表中输出数据,还会从该员工在给定日期所在的其他日程表的表中输出数据。 基于这种设计的这种解决方案也是可能的。
- 时间重叠
该系统应该正确地及时显示记录的交集,而不像大多数系统中的记录相互记录,甚至没有机会读取较低的层。
- 报告书
这样就可以根据时间表来生成报告。 数据存储系统应组织得井井有条,以便可以在报告配置器中进行拾取。
例如,有必要创建一个报告,其中哪个雇员花了多少时间执行任务-瞧! 我们转到报告配置器,在其中选择一个表,其中存储了所需计划的记录数据,然后根据图表中的数据使用标准配置器生成报告。
- 可嵌入性
该图应该能够轻松地嵌入到任何页面的任何位置-即 它应该是标准输入元素,与文本字段或按钮相同。
幸运的是,我们拥有开发复杂标准元素的经验。 特别是,我们有一个标准的注释元素,文件申请表,联系表,表格。 一键添加所有这些元素,即可轻松配置它们。 - 访问与安全
整个时间表的访问权限应由权限的一般系统控制,而在时间表内,对记录的访问权限应由时间表设置来控制。
例如,指出只有作者可以编辑他的帖子,他的组或单位。
- 易于配置
当然,应该快速完成创建和配置新计划的过程,并且不会引起任何问题。 特别是对于我们来说,对于一个典型的案例(很明显,它可能会发生,当然,它非常复杂),这项工作只需要花费一个工时。
我们相信我们已经成功地实现了这些要求,本文将介绍如何完成这些要求。
目前,我不知道具有类似通用图的系统(如果您知道,请在注释中写,很有趣)
一般的图表配置图看起来像这样(不要严格判断,我自己绘制)。 这里需要每个元素,没有多余的。
所有工作都从了解记录中应包含哪些数据集并为此计划在数据库中创建表开始。
例如,对于电信公司的任务计划表,重要的是要知道何时执行工作,针对哪个任务,针对哪个对象以及哪个工程师组来执行此工作。
因此,我们形成一个表,其中包含所有具有记录记录ID的info + service字段。 (PS:我们可以从浏览器直接在云中编辑的表)。

这是一个简单的情况,但是如果有更多的字段或多个表,则可能会更加复杂。
就是这样,存储结构已经形成,现在日程表需要知道如何使用它。 每个条目都可以添加,显示,修改和删除。
因为 如果数据集和存储结构可以是任意的,则必须通过存储过程来处理此结构。
首先,您需要创建该过程。 在我们的示例中,情况很简单,可以使用“创建标准过程”功能通过一个按钮在配置器中创建它们。 根据该表,系统将自己创建用于做出,更改,删除和各种结论的过程。
例如,一个自动创建的添加过程的片段如下所示

所有过程都可以直接从Web界面进行编辑。 编译逻辑类似于PL-SQL。
如果事情很复杂,则可以根据存储结构来编辑这些过程,并可以设置各种条件,循环,选择,更新,插入等。 通常,绘制任何处理结构。
每个操作中的计划表指示哪个过程负责此操作。
“内置”时间表设置但是,还有一些“有线”设置只能配置,而不能更改。 根本没有必要。
-日期时间坐标是任何记录的必要属性
-图形在系统中的位置。 使用界面的内置编辑器进行编辑,而无需从图形本身进行操作。
-用户所在的内存-无需直接配置此属性。
在设置中,还可以指定步长(例如20分钟或30的网格)和工作时间范围(例如8到20)。
需要一个时间范围来减少多余的时间,例如,如果所有员工每天在标准工作时间工作8个小时,那么显示夜间就没有意义了。
步骤-定义图表网格。 例如,在一个诊所中可能有20分钟的医生预约时间表,在另一个诊所中可能有30分钟的约会时间表,这都是可以配置的。
但是,这并不意味着不能在网格外部进行记录。 您可以输入任何内容,但它们将显示在网格中。
我们可以设置5、10、15、30、60分钟的步骤范围。
记录输出创建和指定过程还不够。 进度表必须了解如何使用它。
帽子最重要的是指示图表的标题。 过程的哪个输出字段应为标头。
考虑在教育组织中建立课程表的逻辑。 假设一条记录具有一组“教师组”。
在这里,您可以为教师指定标题,然后将时间表安排如下:

但是您可以按组,然后像这样:

但是您通常可以制作2个不同的图并根据需要随意显示它,用户可以选择它。 在这种情况下,将使用相同的数据,相同的过程。 一个图表中的更改将更改另一个图表中的更改。
但总的来说,选择取决于权宜之计。 帽子应该是基本不变的信息。 如果您提供固定数量的对象-那么这些应该是它们。 如果您有固定数量的组,那么它们就是。
您可以戴着帽子做一些有趣的事情。 例如,如果您将任务状态指示为标题,则当任务中的状态更改时,图形中的任务记录将跳至相应的状态本身。 即 实际上,几乎可以在这里完成看板。 东西。 当我们通过过程将记录数据绑定到系统中的实时信息时,它也可以在图形中实现。 机制非常灵活。
另外,如果在过程中设置过滤条件,则可以在考虑任意过滤器的情况下在图形中创建标题数据。
什么不输出您还可以指定要在记录中显示的内容以及不显示的内容。 例如,在该过程中,捆绑软件的某些服务标识符可以显示为结果。 结论对于用户而言不重要的信息可以忽略不计。
隐藏什么您可以显示,但要尽量减少。 信息不是很重要,但有时需要。 例如,仅在某种形式的摊牌时才需要创建记录的人和时间,而在运营工作中则不需要。
参考文献当某些字段可以作为链接时,这也非常方便。
例如,如果我们为任务制定时间表,那么为什么不单击其编号进入任务本身。
我们在配置器中有一个标准的链接机制。 您可以将它们放置在那里,并与图中的字段关联。 一切正常。
职称当然,应该以某种方式调用该字段。 默认情况下,系统将从过程字段中获取名称,但是对于感知而言,它并不总是正确的。 因此,有时您需要输入备用名称。
例如,以上所有与我们类似的内容。 在此过程的字段的对面进行检查。

记录的输出将如下所示:
添加新条目添加新记录的字段应由添加过程确定。 必须为过程的每个输入参数提供信息。
但是有一个窍门。 字段不仅可以是文本,还可以是列表。
让我们以电信为例,其中有一个任务,组,对象。 我们不会强迫用户搜索对象的标识符并驱动它们。 必须有一个包含必要信息的弹出列表。 在哪里得到的?
为此,过程输入字段应拉出另一个过程,例如,它将给出实际任务列表或必要对象的列表等。 在这种情况下,您不能仅指定某些表的字段,因为 可能会有复杂的过滤器。 相同的任务可能已经在系统中标记为10,000,但是现在应该显示100个主题任务的列表。

通常,一个过程在另一个过程的范围内抽动。
实际上,这听起来很吓人。 这些东西都是很好的自动化工具,只需按一下按钮,即可按照标准目录进行操作。 组,任务,应用程序等各种列表的过程。 长期实施以用于各种CRM模块的操作。 只需要选择它们。 如果已经存在具有类似功能的过程,则会对其进行复制和编辑。
还必须指出添加的哪些字段将是标题。 我们将在编辑系统中使用它。
对于我们来说看起来像这样:
编辑记录这里仍然更有趣。 像附录中那样显示列表中的所有字段是不够的。 在这些列表中有必要选择当前位置(已选择)。 我们正在编辑。
为此,您需要将创建字段与输出字段相关联。 对于列表框,它不仅是来自输出的信息,而且是此信息的标识符。
即 在这里有必要:
a)指出编辑程序
b)将其字段与加法字段关联
c)将其字段与记录数据输出的字段相关联,以便将当前数据放入列表中
这里没有其他功能可以指示,因为 我们已经配置了输出和添加。
显示编辑窗口时,系统将为每个字段调用必要的过程,接收数据,将其与记录输出中的数据进行比较,将所选内容放入列表中,然后将当前值插入简单字段中。
我们看起来像这样
删除记录拆卸是最简单的。 只需输入一个输入参数的删除过程即可:图表的记录ID。
添加/修改/删除记录时的事件处理。 扳机 交叉记录。仅在图表中添加/修改条目是不够的。 您仍然需要管理事件。 这为配置打开了无限的范围。
管理事件实际上非常简单。 毕竟,我们已经有了存储图形记录数据的表。 您可以在这些表上设置任何复杂性的触发器。 我们的云配置器使此操作变得容易。
例如,需要日志,由谁来完成记录。 一切都很简单。 将为日志创建一个表,并将触发器放置在图表表上,以将修改数据写入带有日志的表。
也由于此,可以进行交叉记录。 例如,在我们的示例中将任务设置在一个组中时,您可以标识该组中的所有参与者,并将他们的这个记录的两倍放入您的个人图表中。 在这种情况下,放入个人图表意味着在个人图表的数据表中进行记录。 他也是该系统中的图形,仅以不同的方式配置并显示在另一个位置。 该条目将出现在其中。
或者您需要向组用户发送通知。 或发送短信给客户,他们会来找他来完成某项任务。 为此,只需创建触发器即可在通知表或SMS中进行输入。
报告书还需要图表报告,并且可以通过这种结构来完成。
例如,有必要报告员工上个月的旅行时间。 我们转到报告配置器,选择要存储图表条目的所需表,设置必要的过滤器和聚合功能-并且有效地准备了报告。
图表数据的其他用途图形数据可通过高级系统配置器在任何地方使用。 例如,在任务中,我们能够轻松地制作“图表”选项卡,并在一个简单的过程中显示有关执行此任务的时间和时间的信息。
时间重叠他们发生了。 而且,没有什么比记录彼此碰撞并且不允许读取必要的记录更糟糕的了。 此问题也已解决。 重叠条目系统自动放置在附近。 在这种情况下,仅使用简单的html,仅以必要的方式构建表结构。 该系统可提供任何深度的护理,但很少有2个以上的条目。
当然,如果时间重叠,很可能没有计划好的事情。
一个人不能同时在两个地方,但是即使这样的情况也必须正确显示。
访问和安全性访问分为2个级别。系统和个人图形。该系统由“角色”编辑器定义为一个整体,并在界面配置器中指定了默认权限。例如,如果该页面单元格(或上面继承的选项卡,页面,菜单)被拒绝读取访问,则只有用户在“用户角色”中为该区域分配读取权限后,用户才能在界面显示级别看到该图。接下来是时间表的内部权利。他们可以是1)编辑-仅作者-仅作者组(记录的作者是其成员的组中包括的所有雇员)-仅作者的部门(根据股票,作者部门中包括的所有员工)PS:工作组和人员配备可能与我们不同。例如,一个单位中可能有多个工作组,或者来自不同单位的员工可能在同一组中。同一员工也可以同时处于不同的组中。所有这些系统都考虑在内。
2)移除方法相似。-仅作者-仅团体-仅部门我们为什么需要内部权利?如果这是个人日程表,或者具有某些功能,则仅放置作者是有意义的。但是在轮班工作人员和需要编辑记录且员工不在工作的情况下。怎么办
设置这样的时间表以便由组或单位进行编辑是有意义的,以便其他轮班员工可以使用这些记录。此外,可以在时间表中指出有权管理的角色。具有此角色的员工将有权编辑和删除,而不管组和单位如何。
当然,当您知道如何使用它时,我们这里的东西真酷,可以大大简化生活。没有经验的人可能很难弄清楚。但是我们必须以一种简单的形式制定这样的时间表,这大约是一个工时。此外,我们还获得了最深的配置功能以及与系统其他元素进行交互的可能性。