تطبيق على TSD والتواصل مع 1C: Enterprise 8.3 من خلال خدمة HTTP. الجزء 1.1 (وصف مفصل لواجهة برمجة التطبيقات)

ظهر هذا الجزء بعد أن بدأت التنفيذ الكامل. بعد العملية القتالية ، كانت هناك حاجة لتغيير هيكل تبادل البيانات. اتضح أنه من الصعب جدًا إدخال TSD في العمل. تم اختيار "1C mobile platform" كبرنامج كان Kotlin صعبًا جدًا. في هذا الجزء ، سأتحدث عن كيفية تنفيذ التبادل في البداية ، وسأقدم رمزًا على سبيل المثال على دليل واحد من جانب الخادم ومن جانب العميل.

1. وصف عام لخوارزمية التبادل.


على جانب الخادم ، يتم استخدام خطط التبادل مع تسجيل التغيير التلقائي. وقد أظهرت الممارسة أن هذه هي الطريقة الأقل تكلفة من حيث البرمجة. على الجانب TSD ، في كل دليل ، تمت إضافة مستند ، الدعائم ، في التسجيلات تمت إضافة الدعائم التي تحمل نفس الاسم.

تنقسم البورصة نفسها الآن إلى مرحلتين.

  1. نتلقى بيانات جديدة ونصلح علامة التحديث ؛
  2. نرسل تأكيدًا على استلام البيانات. إذا كانت الإجابة بنعم ، فسنزيل علامة التحديث ؛

ظهر مثل هذا المخطط بعد أن بدأ TSD في مغادرة منطقة تغطية WiFi. غالبًا ما اتضح أن البيانات جاءت ، ولكن لم يتم إرسال الرد.

لتسهيل دخول TSD في التشغيل ، ظهر دليل بقيم محددة مسبقًا لكل منها ( ).

2. كما تم تنفيذه من قبل.


بدأ الطلب من قبل TSD. كل 15 ثانية كان هناك طلب للحصول على بيانات جديدة لكل دليل أو وثيقة أو تسجيل. يتم جمع البيانات على دفعات من 100 عنصر. الذي فرض حدوده. إذا أكملت تسجيل العقدة بأكملها ، فسيتم تحميل البيانات حوالي 30 دقيقة. لان في التطبيق الحالي ، لم تكن هناك آلية لإخطار TSD بوجود حزمة أخرى.

قطعة من الرمز 1C على TSD
 () 
	
	.();
	.();

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


بعد أن أصبح عدد الدلائل أكثر من خمسة ، ظهرت صورة حزينة: كل إجراء على جانب الخادم هو نفسه. طلب البيانات مختلف. لكن إصلاح التغييرات في الدلائل هو نفسه. دعونا نلقي نظرة على مثال OKEY. باختصار ، إذن

  • نقوم بإعداد الاتصال ، ونأخذ كل الثوابت.
  • نحن نستعد طلب. كل دليل يكمن في طريقه الخاص. ثم يتبع الأمر مع المعلمات. شيء من هذا القبيل:
    localhost/ws/okeis/getNew&node=.
  • قم بإعداد هيكل الاستجابة
  • نحصل على الاستجابة ونملأ الهيكل اعتمادًا على رمز استجابة HTTP.
  • في حالة النجاح ، انشر JSON في هياكل 1C.
  • نبدأ الصفقة. نقوم بإصلاح التغييرات في الدليل. تنفيذ المعاملة
  • نسمي وظيفة تنفيذ التغييرات على جانب الخادم
  • والآن التثبيت هو نفسه بالضبط على جانب الخادم

في البداية ، كان لكل دليل إجراء تحديد خاص به ، والآن يبدو مثل هذا.

الكثير من كود 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