在TSD上的应用以及通过HTTP服务与1C:Enterprise 8.3的通信。1.1部分(API的详细说明)

这部分是在我开始全面实施之后出现的。作战行动结束后,有必要改变数据交换的结构。事实证明,将TSD引入这项工作非常困难。选择“ 1C移动平台”作为软件,因为 科特林非常努力。在这一部分,我将讨论交换的最初实现方式,并在服务器端和客户端的单个目录示例中提供代码。

1.交换算法的一般说明。


在服务器端,使用带有自动更改日志记录的交换计划。实践表明,就编程而言,这是最便宜的方式。在TSD一侧,在每个目录中,添加了一个文档,一个道具,在寄存器中添加了一个具有相同名称的道具。

现在,交换本身分为两个阶段。

  1. 我们收到新数据,修复了更新的迹象;
  2. 我们发送确认已收到数据。如果答案是肯定的,我们将删除更新的迹象;

在TSD开始离开WiFi覆盖区域后,出现了这种方案。通常,结果是数据来了,但是没有发送响应。

为了便于TSD进入操作状态,每个目录都有一个具有预定义值的目录 ( )

2.如前所述。


该请求由TSD发起。每隔15秒钟便会针对每个目录,文档和注册请求新数据。数据以100个元素为批次收集。这强加了它的局限性。如果您完成了整个节点的注册,那么大约30分钟就会加载数据。因为 在当前的实现中,没有机制来通知TSD有关另一个包的存在。

TSD上的一段代码1C
 () 
	
	.();
	.();

	.();
	.();
			
	.();
	.();
	
	.();
	.();
	
	.();
	.();


在目录数量超过五个之后,出现了一个悲伤的画面:服务器端的每个动作都是相同的。数据请求是不同的。但是修复目录更改是一回事。让我们看一下OKEY的示例。简而言之

  • 我们准备连接,并获取所有常量。
  • 我们正在准备一个请求。每个目录位于其自己的路由中。然后是带有参数的命令。是这样的:
    localhost/ws/okeis/getNew&node=
  • 准备响应结构
  • 我们获得响应并根据HTTP响应代码填写结构。
  • 如果成功,请在1C结构中部署JSON。
  • 我们开始交易。我们修复了目录中的更改。提交交易
  • 我们称在服务器端提交更改的功能
  • 现在,服务器端的固定方式完全相同

最初,每个目录都有其自己的固定过程,现在看起来像这样。

许多1C代码

	
 () 
HTTP = .HTTP();
	HTTP = .HTTP("okeis", "getAll?node="+(..()));
	
	 = HTTP.(HTTP);
	
	 =  ;
	.("", .);
	.("", .());

	 . = 200 
		 = .;
		 = .JSON();
		  .("") 
			();
			 = ;
			    .okeis 
				 = .code;
				 = .name;
				 = .fullName;
				 = .internationalReduction;
				
				 = ..();
				
				 () 
					 = .();
				
					 = ..();
				;
				
				. = ;
				. = ;
				. = ;
				. = ;
				. = ;
				
				
					.();
				
					 = ;
					;
				;
				
			;
			
			   
				();
			
				();
			;
		;			
	;




 get()
	
	 .URL.("") = "getAll" 
		
		(0,"  ");
		
		 = ..("node");
		
		 = ();
		 = HTTP(200, );
		
		(0,"  ");
		 ;
	;

	 = HTTP(400,  (",", , " "));
	 ;




 () 
	
	 =  ;
	. = "
	               |	.  
	               |
	               |	.  
	               |
	               |	.";
	
	 = .();
	 = .();
	
	 =  ;
	
	 .() 
		.( ("code", ..));
	;
	
	 =  ;
	.("okeis", );
	
	
	HTTP = .HTTP();
	HTTP = .HTTP("okeis", "dataObtained?node="+(..()));
	
	 = .();
	
	HTTP.();
	
	 = HTTP.(HTTP);
	
	 . = 200 
		();
		 = ;
				
		      
			 = ..(.code).();
			. = ;
			
				.();
			
				 = ;
				;
			;
				
		;
		
		   
			();
		
			();
		;
		
	;
	



 post()
	
	 = .URL.("");

	  = "dataObtained" 
		
		 = ..("node");
		 = ..("nameStructure");

		 = .();
		 = JSON();
		
		 =  ("", , , );
		
		  
			 = HTTP(200,  ("code", 0));
		
			 = HTTP(400,  ("code", 100));
		;
		
		 ;
	;
	 
	 = HTTP(400,  (",", , " "));
	 ;



 (, , , )
	
	 = ();
	
	();
	 = ;
	    [] 
		
		 = [].(.code);
		
		 () 
			
				.(,);
			
				 = ;
				;
			;	
		;
	;
	
	  
		();
		 ;
	
		();
		 ;
	;
	
	


本文讨论额头的实现。除非您需要快速组装原型并在战斗中进行测试,否则不要这样做。

如果您喜欢这篇文章,接下来我将告诉您现在如何实施。

All Articles