এটি গ্লোবাল কনটেক্সট ফাংশন ConnectExternalComponent() এর কিছু বিশেষত্বের কারণে।

প্রায়শই প্রোগ্রামারদের বাহ্যিক উপাদানগুলির সাথে সংযোগ করতে সমস্যা হয় (উদাহরণস্বরূপ, বাণিজ্যিক সরঞ্জামগুলির জন্য ড্রাইভার) যখন ব্যবহারকারীরা 1C এর সাথে কাজ করে, একটি টার্মিনালের মাধ্যমে সার্ভারের সাথে সংযোগ করে।

এই ক্ষেত্রে, ব্যবহারকারীরা, উদাহরণস্বরূপ, এই ছবিটি দেখতে পান:

স্থানীয় কম্পিউটার থেকে কাজ করার সময় বাহ্যিক উপাদানগুলিকে সংযুক্ত করতে কোনও সমস্যা নেই।

এটা কিসের সাথে যুক্ত? এর কারণ হল ব্যবহারকারীরা যখন একটি টার্মিনাল সার্ভারের মাধ্যমে কাজ করে, তখন তাদের স্থানীয় কম্পিউটারে কাজ করার চেয়ে কম অধিকার থাকে।

আপনি প্রশাসনিক অধিকার সহ একটি অ্যাকাউন্টের অধীনে টার্মিনাল সার্ভারে লগ ইন করলে আপনি সহজেই এটি যাচাই করতে পারেন।

এই পার্থক্যের কারণ হল যে 1C রেজিস্ট্রিতে একটি বহিরাগত উপাদান নিবন্ধন করতে পারে না যখন ব্যবহারকারী স্বাভাবিক অধিকারের অধীনে টার্মিনালে কাজ করে, কারণ একজন নিয়মিত ব্যবহারকারীর সিস্টেম রেজিস্ট্রি শাখায় লেখার অনুমতি নেই HKEY_CLASSES_ROOT.

টার্মিনালে বাহ্যিক উপাদান সংযুক্ত করার বিষয়ে প্রকাশনাগুলি এই সমস্যা সমাধানের জন্য বিভিন্ন পদ্ধতির প্রস্তাব করে।

উদাহরণস্বরূপ, এইগুলি:

1. প্রশাসনিক অধিকারের অধীনে প্রথমবারের মতো 1C চালু করুন।

এই বিকল্পটি সবসময় কাজ করে না। আমি নীচে ব্যাখ্যা করব কেন।

2. সাধারণ টার্মিনাল ব্যবহারকারীদের সিস্টেম রেজিস্ট্রি শাখায় লেখার অনুমতি দিন HKEY_CLASSES_ROOT.

অপর্যাপ্তভাবে উন্নত ব্যবহারকারীদের এটি করা উচিত নয়, অন্যথায় সমস্যা হতে পারে।

3. বিভিন্ন গ্যাজেট ব্যবহার করে, সম্পূর্ণ অধিকার সহ ব্যবহারকারীর পক্ষে VK নিবন্ধন করুন।

এটাও ভালো না।

তাহলে এই পরিস্থিতি থেকে বেরিয়ে আসার সেরা উপায় কী?

আমি এই সমস্যার আমার সমাধান প্রস্তাব. আমার মতে - সহজ এবং সুন্দর।

এই সমস্যাটি গবেষণা করার সময়, আমি নিজেকে প্রশ্ন জিজ্ঞাসা করেছি: কেন 1C এমনকি একটি নতুন পথ ব্যবহার করে ভিকে নিবন্ধন করার চেষ্টা করছে? সর্বোপরি, তিনি ইতিমধ্যে সিস্টেমে নিবন্ধিত।

পয়েন্টটি দেখা গেল যে সাধারণ 1C কনফিগারেশনে (উদাহরণস্বরূপ, "ট্রেড ম্যানেজমেন্ট") নিম্নলিখিত সিনট্যাক্সটি গ্লোবাল কনটেক্সট মেথড কানেক্ট এক্সটারনাল কম্পোনেন্ট():

ConnectExternal Component("Directory.Connected Equipment.Layout.DriverATOLBarcodeScanner", "ATOLScanner");

আপনি দেখতে পাচ্ছেন, ড্রাইভার ভিসি "সংযুক্ত সরঞ্জাম" ডিরেক্টরির "ATOLBarcode স্ক্যানার ড্রাইভার" লেআউট থেকে সংযুক্ত।

তাহলে কি হবে?

1C ব্যবহারকারীর অস্থায়ী ফোল্ডারে উপাদানটিকে সংরক্ষণ করে, উদাহরণস্বরূপ "C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp"

এবং এটি রেজিস্ট্রি শাখায় নিবন্ধন করার চেষ্টা করে HKEY_CLASSES_ROOTঠিক এই পথ ধরে।

টার্মিনালে, সাধারণ ব্যবহারকারীদের এই রেজিস্ট্রি শাখা পরিবর্তন করার অধিকার নেই, তাই উপাদানটি তাদের সাথে সংযোগ করে না।

এবার আসা যাক এই অবস্থা থেকে কিভাবে বের হওয়া যায় সে সম্পর্কে।

বিশ্বব্যাপী প্রসঙ্গ পদ্ধতি ConnectExternalComponent() এর বেশ কয়েকটি সিনট্যাক্স বিকল্প রয়েছে। এই আমরা ব্যবহার করব কি.

সুতরাং, ধাপে ধাপে:

1. একটি 32-বিট ওএসের জন্য C:\WINDOWS\SYSTEM32 ফোল্ডারে টার্মিনাল সার্ভারে regsvr32.exe ইউটিলিটি ব্যবহার করে বা 64-বিট ওএসের জন্য C:\WINDOWS\SYSWOW64 ফোল্ডারে বহিরাগত উপাদান নিবন্ধন করুন।

2. ConnectExternalComponent() পদ্ধতির জন্য দুটি অতিরিক্ত সিনট্যাক্স বিকল্পের একটি ব্যবহার করুন:

বিকল্প 1:

ConnectExternal Component("C:\WINDOWS\SysWOW64\Scaner1C.dll", "ATOLScanner", ExternalComponentType.COM);

ড্রাইভার অবজেক্ট = নতুন("AddIn.ATOLScanner.Scaner45");

বিকল্প 2:

ProgID = "AddIn.Scaner45";

ConnectExternal Component(ProgID);

DriverObject = New(ProgID);

আমার মতে, বিকল্প নম্বর 2 পছন্দনীয়।

একই সময়ে, 1C রেজিস্ট্রিতে একটি নতুন পথ ব্যবহার করে VK পুনরায় নিবন্ধন করার চেষ্টা করে না এবং এইভাবে সমস্ত সমস্যা সমাধান করা হয়।

ভাল, যে সব. আপনার কাজে সৌভাগ্য কামনা করছি!

[লিংকটি দেখতে আপনাকে অবশ্যই নিবন্ধন করতে হবে]

প্রশ্ন: একটি বাহ্যিক উপাদান ইনস্টল করা


কিভাবে একটি বহিরাগত উপাদান ইনস্টল করতে দয়া করে আমাকে বলুন. নিম্নলিখিত কোড চালানোর সময়, একটি ত্রুটি নিক্ষেপ করা হয়. লেআউটে NameDecl.dll খুঁজুন

SetExternal Component("GeneralLayout.Layout") করার চেষ্টা করা হচ্ছে;
ব্যতিক্রম EndTry ;

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে! ()
উত্তরঃ
ConnectExternalComponent("GeneralLayout.Layout", "NameDecl", ExternalComponentType.Native) FALSE প্রদান করে।

নতুন("AddIn.NameDecl.CNameDecl", Undefined) = (()): টাইপ করুন undefined (AddIn.NameDecl.NameDecl)


প্রশ্ন: 1s 8.3.6 এবং Win8-এ একটি বাহ্যিক উপাদান সংযোগ করা
আফটার কানেক্টিং = নতুন সতর্কতা বর্ণনা ("আফটার কানেক্টিংভিকে", এই ফর্ম);
এক্সটার্নাল কম্পোনেন্ট ইনস্টল করা শুরু করুন(,"C:\Controller\vk_rs232.dll");
স্টার্ট কানেক্টিং এক্সটার্নাল কম্পোনেন্টস(কানেক্ট করার পর,"C:\Controller\vk_rs232.dll","DLL_Scales");

এবং আমি যে ত্রুটি পেতে
"একটি বাহ্যিক উপাদানের ইনস্টলেশন ব্যর্থ হয়েছে! আপনি যে ক্লায়েন্ট অ্যাপ্লিকেশনটি ব্যবহার করছেন তার একটি উপাদান অনুপস্থিত হতে পারে!"।
এবং এখন আমি বুঝতে পারছি না:
1. হয়তো কম্পোনেন্টটি রেজিস্ট্রিতে নিবন্ধিত নয় - আমি সেখানে কীভাবে এটি পরীক্ষা করতে পারি?
2. সম্ভবত এর "সংস্করণ" Win8 এর অধীনে কাজ করে না, যদিও আমার কাছে এটি 32-বিট আছে।

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে! 3. হয়তো 1C নিজেই খুব নতুন, যেমন তদনুসারে, এটি এই dll দিয়ে কাজ করতে পারে না?
4. ওয়েল, এটা তুচ্ছ - আমি কিছু ভুল লিখছি।
এবং এই সব আমাকে পরবর্তী সমস্যার দিকে নিয়ে গেছে। VneshComp ইনস্টল করা হয়েছে, এখন আপনাকে এটি সংযোগ করতে হবে। এবং এখানে উভয় বিকল্প আছে

ConnectExternal Component("C:\Controller\vk_rs232.dll","তুলা")

ConnectExternal Component("GeneralLayout. Layout","Libra")


মিথ্যা দাও!!!
প্রশ্ন: External component.dll
শুভ দিন সবার।
এমন প্রশ্ন।
একটি dll উপাদান যা 1C 7.7 এ দুর্দান্ত কাজ করে
1s 8.1 মোটেও বুট করতে চায় না...
আমি চেষ্টা করেছি এবং C:\Program Files\1cv81\bin\cache1c.dll-এ পেস্ট করেছি
আমি regsvr32 ব্যবহার করে নিবন্ধন করার চেষ্টা করেছি "C:\Program Files\1cv81\bin\cache1c.dll"

সমস্যা ছাড়াই নিবন্ধন.
যখন আমি এটি অ্যাক্সেস করতে চাই, আমি একটি ত্রুটি বার্তা পাই: বাহ্যিক উপাদান লোড করার সময় ত্রুটি! cache1c.dllপ্রসিডিউর বাটনএক্সিকিউটপ্রেস(বোতাম) এক্সটার্নাল কম্পোনেন্ট লোড করার প্রয়াস( "C:\Program Files\1cv81\bin\cache1c.dll"); ব্যতিক্রম রিপোর্ট(

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে!"বাহ্যিক উপাদান লোড করার সময় ত্রুটি!"
+ "cache1c.dll"); শেষপ্রয়াস; প্রচেষ্টা // উপাদান বস্তু পান।
// m = নতুন ("cache1c.GTMcmd"); m = নতুন COMObject("cache1c.GTMcmd"); ব্যতিক্রম রিপোর্ট(); শেষপ্রয়াস; প্রক্রিয়া শেষএটা অসম্ভবের বিন্দুতে সাধারণ...
আপনাকে কলগুলির মধ্যে বিরতি দিতে হবে (মিলিসেকেন্ড)...

পদ্ধতি বাটনএক্সিকিউটপ্রেস(বাটন) প্রচেষ্টা // একটি উপাদান বস্তু পান।


m = নতুন COMObject("cache1c.GTMcmd"); ব্যতিক্রম রিপোর্ট(

"বাহ্যিক উপাদান বস্তু তৈরি করতে ব্যর্থ হয়েছে"

); শেষপ্রয়াস;
NativeApi প্রকল্পের ভিতরে একটি মেকফাইল আছে। এর সাহায্যে আমি Ununtu-এ একটি .so লাইব্রেরি তৈরি করছি।
কিন্তু যখন "কানেক্ট এক্সটারনাল কম্পোনেন্ট" 1c ক্র্যাশ হয়।
একইভাবে, যদি আমি "build.sh" (প্রকল্পের রুটে) ব্যবহার করে নির্মাণ করি।

মেকফাইলে নিজেই আমি পতাকাটি m32 থেকে m64 এ পরিবর্তন করি, কারণ 1c এবং x64 সিস্টেম নিজেই। (এম 32 প্যারামিটারের সাথে এটি যাইহোক সংযোগ করে না)
এখানে 1C 8.3 থেকে ভিকে কল করার একটি উদাহরণ রয়েছে:
সংযোগ সম্পন্ন = কানেক্ট এক্সটার্নাল কম্পোনেন্ট("/home/alexeyubuntux64-20 gb/Documents/VNCOMP83/example/NativeAPI/AddInNative.so", "AddInNative", ExternalComponentType.Native);
শুধু এই বিষয়ে একটি নিবন্ধ আছে.

কিন্তু, যতদূর আমি দেখি, এই সমস্ত পয়েন্টগুলি ইতিমধ্যেই বিবেচনায় নেওয়া হয়েছে এবং VNCOMPS উদাহরণে সংশোধন করা হয়েছে।

কিন্তু মূলত এটা সংকলন পরামিতি একটি ব্যাপার. একটি এমবি 32-বিট বাহ্যিক উপাদান সাধারণত একটি 32-বিট 1c-এর সাথে সংযোগ করে, তবে আমি এটি উবুন্টু x64 1c এন্টারপ্রাইজ83 8.3.5-1486 amd64 এ স্থাপন করেছি। এবং আমি তার সাথে ভিকেতে যোগ দিতে চাই।
এই সমস্যাটি কীভাবে সমাধান করা যায় সে সম্পর্কে কারও কি কোন ধারণা আছে?)

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে! VNCOMPS উদাহরণটি কাজ করা উচিত, কিন্তু বিল্ড প্যারামিটারগুলিকে সামঞ্জস্য করা দরকার, অথবা যে প্ল্যাটফর্মটিতে আমি পরীক্ষা করছি সেটি ভুল।

আমি ভাবছি, জাভাতে একটি বাহ্যিক উপাদান লেখা সম্ভব?


প্রশ্ন: একটি 1C সার্ভারের সাথে একটি বাহ্যিক উপাদানের সাথে কাজ করা...

শুভ বিকাল,
C++ এ লেখা একটি বাহ্যিক উপাদান রয়েছে, যার কাজ হল একটি বাহ্যিক ডাটাবেস থেকে তথ্য প্রাপ্ত করা এবং 1C-তে একটি মানের সারণী আকারে প্রশ্নের ফলাফল ফেরত দেওয়া।
বর্তমান মুহুর্তে মানগুলির একটি সারণী তৈরি করতে, IDispatch* pBackConnection ইন্টারফেসটি ব্যবহার করা হয়, Init() ফাংশনে একটি প্যারামিটার হিসাবে গৃহীত হয়। এর পরে, আমি কেবলমাত্র 1C ফাংশন ব্যবহার করে মানগুলির একটি সারণী তৈরি করি, এটি পূরণ করি এবং CallAsFunc(...) এর দ্বিতীয় প্যারামিটারে ফেরত দিই।
সমস্যাগুলি 1C পাতলা ক্লায়েন্টে রূপান্তরের সাথে শুরু হয়েছিল। সার্ভারের দিকে, বাহ্যিক উপাদানটি সত্যিই শুরু হয় না। আপনি এটিকে ক্লায়েন্ট সাইডে চালাতে পারেন, তবে এটি সবই ক্রাচের মতো দেখায় এবং 1C-তে সাধারণ "ক্লায়েন্ট-সার্ভার" যুক্তির বাইরে পড়ে। উদাহরণস্বরূপ, ক্লায়েন্ট বুঝতে পারে না একটি মান টেবিল কী, "গ্লোবাল" ভেরিয়েবল, সেশন ইত্যাদির সমস্যা।
NativeAPI এই ক্ষেত্রে আরও সীমিত।
একটি ট্যাম্বোরিনের সাথে নাচের ফলে আমি 1C সার্ভারের অধীনে একটি বাহ্যিক উপাদান চালু করতে সক্ষম হয়েছিলাম, কিন্তু pBackConnection-এ Invoke কল করার চেষ্টা না করা পর্যন্ত কাজ চলতে থাকে। 8.2 সার্ভারের 64-বিট সংস্করণটি সময়সীমা শেষ না হওয়া পর্যন্ত কিছু করার চেষ্টা করে, 32-বিট সংস্করণ (ভিকে স্বাভাবিকভাবেই 32-বিটও হয়) ঠিক তখনই বন্ধ হয়ে যায়।
তদনুসারে, প্রশ্ন ওঠে: এটি কি অস্থায়ী নাকি 1C যুক্তি এই কাজের স্কিমটি বাতিল করার জন্য ফুটে উঠেছে? যদি এইভাবে অভ্যন্তরীণ 1C কাঠামো (মানগুলির একটি সারণী) তৈরি করা অসম্ভব হয়, তবে নীতিগতভাবে, C++ এ তৈরি করার চেষ্টা করার জন্য সিস্টেম স্তরে মানগুলির একটি সারণী কী রয়েছে তার একটি বিবরণ আছে, এটি পূরণ করুন, এবং তারপরে এটিকে রিটার্ন প্যারামিটার হিসাবে 1C এ স্লিপ করুন? আমি অন্তত একটি দিক পেতে চাই কোন দিকে খনন করতে হবে।

ধন্যবাদ

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে!

আপনি এক কথা লেখেন আর মানে আরেকটা।
1C পরিবেশে, বিভিন্ন সেশনে দৃশ্যমান হবে এমন ভেরিয়েবল ঘোষণা করা এখন অসম্ভব নয় এবং আগে এমন কোনো সম্ভাবনা ছিল না। আরেকটি সেশন একটি শারীরিকভাবে ভিন্ন প্রক্রিয়া।
একটি অধিবেশন একটি ডাটাবেসের সাথে সংযোগকারী একটি অধিবেশন, যেমন ব্যবহারকারী অধিবেশন। অথবা আপনি এই ধারণার মধ্যে আপনার নিজের কিছু নির্বাণ?

একটি সেশনের মধ্যে এটি সম্ভব ছিল, এবং এটি এখন সম্ভব, সেশন মডিউলে ভেরিয়েবল ঘোষণা করা যা সেশনের মধ্যে লাইভ এবং বিভিন্ন জায়গা থেকে দৃশ্যমান হবে... আসলে, তাদের মধ্যে 4টি রয়েছে।
- সেশন মডিউল;
- নিয়মিত অ্যাপ্লিকেশন মডিউল;
- পরিচালিত অ্যাপ্লিকেশন মডিউল;
- বাহ্যিক সংযোগ মডিউল.

ঠিক আছে, অবশ্যই, আপনাকে প্রসঙ্গটি মনে রাখতে হবে। সার্ভারের প্রসঙ্গটি ক্লায়েন্টের পক্ষে সরাসরি অ্যাক্সেসযোগ্য নয় এবং এর বিপরীতে।

প্রকৃতপক্ষে, 1C আর্কিটেকচারটি নির্ধারণ করে যে ডেটা বিনিময় নিম্নরূপ হবে:
- পরামিতি / পদ্ধতি / কার্যাবলীর রিটার্নের মাধ্যমে;
- তথাকথিত সেশন প্যারামিটারের মাধ্যমে (বস্তু হতে পারে না, কিন্তু আসলে প্যালেটে দৃশ্যমান)।

ফর্মের একটি টেবিল... এটি কি কিছু অবজেক্ট টেবিলের সাথে সংযুক্ত (প্রসেসিং, উদাহরণস্বরূপ)? বা না যদি হ্যাঁ, তাহলে এটি সার্ভারে উপলব্ধ (&OnServer) এবং সেখানে সম্পাদনা করুন....

এবং এখনও, হ্যাঁ, মান সারণীটি ক্লায়েন্টের দিকে UV-তে উপলব্ধ নয়। ঠিক আছে, এটাই 1C সিদ্ধান্ত নিয়েছে।

এসো! এটি এক্সেলের সাথে কাজ করে, এটি FSO এবং অন্যান্য জিনিসগুলির সাথে কাজ করে, কিন্তু এটি এখানে কাজ করে না। ত্রুটি ধরুন এবং বিশ্লেষণ করুন....

প্রয়াস
...
আপনার কর্ম
...
ব্যতিক্রম
str = ErrorDescription();
শেষপ্রয়াস;

আধুনিক হার্ডওয়্যার ক্ষমতার সাথে, এটি মোটেই একটি যুক্তি নয়।

সম্পূর্ণরূপে আপনার ব্যক্তিগত মতামত. বাস্তবতার সাথে কোন সম্পর্ক নেই। কোনোভাবেই নয়। আমি আবারও পুনরাবৃত্তি করছি, 1C COM এর সাথে দুর্দান্ত কাজ করে। ইন-প্রোক এবং আউট-প্রোক উভয়ই।

আপনি ডাউনলোড করতে এবং VK এর সাথে যোগাযোগ করতে যে কোডটি ব্যবহার করেন দয়া করে সেটি প্রদান করুন৷

যাইহোক, VK... আপনার ক্ষেত্রে, এটা কি COM বা নেটিভ API?
যদি COM হয়, তাহলে আপনি এটিকে রেজিস্টার করেন... regsvr32 এর মাধ্যমে... তাহলে আপনি কীভাবে বিট গভীরতার সমস্যাটির "সমাধান" করবেন?

প্রশ্ন: 1C8 এবং নেটিভ টাইপ সহ একটি বাহ্যিক উপাদান


শুভ বিকাল।
আমার একটি BP 3.0.50.12 কনফিগারেশন আছে এবং এটিতে UniServerAuto ব্যবহার করে Vesy-Soft কোম্পানি থেকে ওজন বাস্তবায়ন করার ইচ্ছা আছে।
বিকাশকারীরা Windows 32 এবং 64-এর জন্য নেটিভ-এ কম্পোনেন্ট কম্পাইল করেছে এবং ম্যাফেস্ট ফাইলের সাথে আর্কাইভ করেছে। ওজন কিভাবে গণনা করা যেতে পারে তার 1C এর একটি উদাহরণও রয়েছে। এটিতে, বাইনারি ডেটা সহ একটি লেআউট ব্যবহার করে, এই সংরক্ষণাগারটি নির্দেশিত হয়েছে, যেমনটি আমি বুঝতে পারি। উদাহরণে, সবকিছু ঠিক আছে: উপাদান ইনস্টল করা হয়, সংযুক্ত, তারপর সংযোগ স্থাপন করা হয় এবং ওজন পড়া হয়।
কিন্তু যত তাড়াতাড়ি আপনি এটি 1C এ স্থানান্তর করা শুরু করেন, ওজন পড়া হয় না। সবকিছু সহজভাবে লেখা বলে মনে হচ্ছে, কিন্তু আমি বুঝতে পারছি না রেকটি কোথায়।
যার কাছে একটু সময় আছে - সাহায্য করুন, এক চোখ দিয়ে দেখুন, হয়তো সমাধানটি পৃষ্ঠে রয়েছে, কিন্তু আমি কোথাও ভুল জায়গায় যাচ্ছি এবং ভুল কাজ করছি। আমাকে এর আগে কখনও নেটিভ প্রযুক্তি নিয়ে কাজ করতে হয়নি...

এবং সংযুক্তিতে আমার প্রসেসিং টেক্সট আছে

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে!

আচ্ছা, আমার কাছে খবর আছে...
আমি কেবল ধাপে ধাপে দেখতে শুরু করেছি কোন সময়ে এটি ব্যর্থ হতে শুরু করবে। এটি করার জন্য, আমি একটি খালি ডাটাবেস তৈরি করেছি এবং কমান্ড দিয়ে এটি প্রক্রিয়া করেছি। সরবরাহকারীর উদাহরণের সাথে সাদৃশ্য অনুসারে, আমি লেআউটটিকে একটি নতুন কনফিগারেশনে স্থানান্তর করেছি - এটি দ্বিতীয়বার কাজ করে। যারা. প্রথমবার না, কিন্তু দ্বিতীয়বার হ্যাঁ। এটি ধারণাটি উদ্বুদ্ধ করেছিল যে আমাদের প্রক্রিয়াকরণে এখনও বিভিন্ন পদ্ধতি অনুসারে উপাদান এবং বস্তুর সংযোগ আলাদা করা প্রয়োজন।
তারপর আমি লেআউটের সংযোগের সাথে এটি আমার ডাটাবেসে স্থানান্তর করেছি - এটি কাজ করে। ওফ, এটা ভাল.... কিন্তু আমি কনফিগারেশনে পরিবর্তন না করেই চাই, তাই চলুন এগিয়ে যাই

আমি প্রক্রিয়াকরণে লেআউট যোগ করার চেষ্টা করছি। এর আকার অবিলম্বে 10kb থেকে 3mb পর্যন্ত বৃদ্ধি পায় এবং অপারেশনে একটি উল্লেখযোগ্য মন্থরতা লক্ষ্য করা যায় - এটি উপযুক্ত নয়। আমি dll এর মাধ্যমে সংযোগকারী উপাদানগুলিতে খনন শুরু করছি। যারা. আমি যেখান থেকে শুরু করেছি তার মতই। তবে একটি "BUT" আছে: ব্যবহারকারীর ফোল্ডারে dll নামটি অনুসন্ধান করার সময়, আমি লক্ষ্য করেছি যে এই dllটি যেখানে অবস্থিত (যেমন আমি এটি বুঝি) 1C-তে নিবন্ধিত dllগুলি যুক্ত করা হয়েছে:
C:\ব্যবহারকারী\USER\AppData\Roaming\1C\1cv8\ExtCompT
তদনুসারে, dll-এ সম্পূর্ণ পথ ব্যবহার করার দরকার নেই, আপনি কেবল তার নাম লিখতে পারেন:
ConnectExternal Component("Add1CUniServerAuto32.dll", "UniServerAuto", ExternalComponentType.Native);

আমি চেষ্টা করি... এটা রেজিস্ট্রেশনে শপথ করে, কিন্তু ওজনের ফলাফল দেয়। দেখা যাচ্ছে যে dll ইতিমধ্যেই নিবন্ধিত হয়েছে এবং এর মানে হল যে আপনাকে এটি সংযোগ করতে হবে। আমি এটি সরিয়ে ফেলি এবং সবকিছু কাজ করে।
এটা সংক্ষেপে:
1. ওজন প্রক্রিয়াকরণে, AtOpening পদ্ধতিতে একটি বাহ্যিক উপাদানের সংযোগ এবং একটি বস্তুর সাথে সংযোগ অন্তর্ভুক্ত ছিল।
2. dll-এর পথ আমি লিখিনি, আমি শুধু এর নাম নির্দেশ করেছি।

এখন আমি বসে বসে ভাবছি, 1C তে dll কখন ইনস্টল করা হয়েছিল? সফটওয়্যার ইন্সটল করার সময়? কঠিনভাবে... এই dll-এর ডেভেলপার কনফিগারেশন চালু করার সময়, ফর্মটি খোলার সময় এটি কোথায় ইনস্টল করা হয়? আমি জানি না, কিন্তু এটা আমার কাছাকাছি মনে হয়... আপনি কি মনে করেন?
এবং দ্বিতীয়ত, একটি নতুন জায়গায়, যখন একই টার্মিনাল ইনস্টল করার প্রয়োজন হয়, তখন সবকিছু কার্যকর করার জন্য কী করা দরকার? আমার কি সফ্টওয়্যারটি সম্পূর্ণভাবে ইনস্টল করা উচিত, অপারেশনটি পরীক্ষা করার জন্য বিক্রেতা কনফিগ চালান এবং তারপরে (তত্ত্ব অনুসারে) আমার প্রক্রিয়াকরণ কাজ করা উচিত? কিছু একরকম জটিল... নাকি সফটওয়্যার ইন্সটল করার পর আমার প্রসেসিংয়ে একবার এক্সটার্নাল কম্পোনেন্ট ইন্সটল করা উচিত?

আমি এই বিষয়ে আপনার মতামত শুনতে চাই...

প্রশ্ন: কোডের অংশ একটি বাহ্যিক উপাদানে সরানো


প্রসেসিং সুরক্ষা সংক্রান্ত অনেক নিবন্ধ বর্ণনা করে যে কোডের অংশটি একটি বাহ্যিক উপাদানে স্থানান্তরিত হয়, তবে প্রোগ্রামার এই ধরনের ক্ষেত্রে ঠিক কীভাবে কাজ করে তা স্পষ্ট নয়।
যে কেউ এটি করেছে বা অনুরূপ রায়ের সম্মুখীন হয়েছে, একটি সাধারণ উদাহরণ ব্যবহার করে নীতিটি নিজেই ব্যাখ্যা করুন। মনে হচ্ছে বাহ্যিক উপাদানগুলিকে সংযুক্ত করার সাথে সবকিছু পরিষ্কার।

// মান সারণী পূরণের উদাহরণ TK.Clear(); অনুরোধ = নতুন অনুরোধ;
Query.Text = "নির্বাচন |

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে!নামকরণ.লিঙ্ক কিভাবে নামকরণ |FROM | Directory.Nomenclature AS Nomenclature"; Request Result = Request.Execute(); Selection = Request Result.Select(); while Selection.Next() Cycle Page = TK.Add();Fill inPropertyValues(পৃষ্ঠা, নির্বাচন); EndCycle;

কোডের কোন অংশটি সাধারণত বের করা হয় তা ব্যাখ্যা করতে আপনি এই উদাহরণটি ব্যবহার করতে পারেন? অনুরোধের সাথে অংশটি সরানো যৌক্তিক হবে, তবে কীভাবে আমরা প্ল্যাটফর্মটিকে বাইপাস করে বাহ্যিক উপাদান থেকে ডাটাবেস অ্যাক্সেস করতে পারি? লেখা বের করে কোন লাভ নেই। অথবা ট্যাবুলার অংশের খুব গঠন আউট নিতে. যারা এই সম্মুখীন হয়েছে তাদের সাথে আপনার অভিজ্ঞতা শেয়ার করুন.


এবং যে "বেমানান" শব্দের অর্থ সর্বদা "খারাপ"? হ্যাঁ, আমার কাছে মনে হচ্ছে যদি আমি আমার স্টাইলকে "1C: প্রকৃতিতে বিদ্যমান এই স্ক্রিপ্টিং ইঞ্জিনের সবচেয়ে খারাপ প্রোগ্রামিং (সাহিত্যিক ভাষায় অনুবাদ করা)" বলে থাকি! এবং তারপরে সম্ভবত এমন লোক থাকবে যারা এই জন্তুটি পরীক্ষা করতে চায়। এবং এটি একটি ক্লাসিকের মতো দেখাচ্ছে: "আমি প্যাস্টেরনাক পড়িনি, তবে আমি তার সাথে সম্পূর্ণ একমত নই!" :)

প্রশ্ন: ডেলফিতে বাহ্যিক উপাদান আমি r 1C সংযোগ করতে পারি না
একটি বহিরাগত উপাদানের একটি উদাহরণ প্রকল্প সংকলিত
আমি DLL পেয়েছি।

এটি সিস্টেমে নিবন্ধিত (Regsvr32 testvk.dll)
এখন আপনাকে এটি 1C তে ব্যবহার করতে হবে। এটি করার জন্য, আমি বাহ্যিক প্রক্রিয়াকরণ লিখেছি এবং এতে:
&অনক্লায়েন্ট
কার্যপ্রণালী কমান্ড1(কমান্ড)
path="C:\1\VK টেমপ্লেট\TestVK\DLL\testvk.dll";
OB = নতুন ("Addln.TestVK"); প্রশ্ন: 1s 7.7 এর জন্য বাহ্যিক উপাদান


হ্যালো। আমি c# এ 1c7.7 এর জন্য একটি উপাদান লিখছি, আমি এটি 1c এর সাথে সংযুক্ত করছি, সবকিছু ঠিক আছে, কিন্তু যখন আমি 1c এর জন্য পদ্ধতি বা বৈশিষ্ট্য কল করতে চাই, তখন এটি বলে "সমষ্টিগত বস্তুর ক্ষেত্রটি পাওয়া যায়নি", এর মাধ্যমে ডিবাগার আমি খুঁজে পেয়েছি যে ILanguageExtender ইন্টারফেসের পদ্ধতিগুলি বলা হয় না, ইন্টারফেস বাস্তবায়নের পরে IInitDone কে আবার কনস্ট্রাক্টর ক্লাস উপাদান বলা হয়, বাহ্যিক উপাদান 1C লেখার তত্ত্ব অনুসারে, ভিকে অবশ্যই কমপক্ষে দুটি ইন্টারফেস প্রয়োগ করতে হবে - IInitDone এবং ILanguageExtender, আমি তাদের বাস্তবায়ন করি, কিন্তু আমি বুঝতে পারি না যে সমস্যাটি কি কারো কোন ধারণা আছে???

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে!বিষয় বন্ধ, সমস্যা সমাধান করা হয়েছে.

প্রশ্ন: v7: C# এ 1C7 এর জন্য বাহ্যিক উপাদান


ভিজ্যুয়াল স্টুডিও 2010 থেকে শুরু করে C# এ 1C7 এর জন্য উপাদান তৈরি করার জন্য আমি একটি সাধারণ উদাহরণ কোথায় দেখতে পারি?

ত্রুটি: বাহ্যিক উপাদান ইনস্টলেশন ব্যর্থ হয়েছে!

দেখুন
দ্রুত C# এ বাহ্যিক উপাদান তৈরি করুন। গ্লোবাল কনটেক্সট, IAsyncEvent, IExtWndsSupport, WinForms এবং WPF ব্যবহার করার উদাহরণ

প্রায়শই প্রোগ্রামারদের বাহ্যিক উপাদানগুলির সাথে সংযোগ করতে সমস্যা হয় (উদাহরণস্বরূপ, বাণিজ্যিক সরঞ্জামগুলির জন্য ড্রাইভার) যখন ব্যবহারকারীরা 1C এর সাথে কাজ করে, একটি টার্মিনালের মাধ্যমে সার্ভারের সাথে সংযোগ করে।

এটি গ্লোবাল কনটেক্সট ফাংশনের কিছু বিশেষত্বের কারণে ConnectExternalComponent()।

এই ক্ষেত্রে, ব্যবহারকারীরা দেখুন, উদাহরণস্বরূপ, নিবন্ধের ঘোষণায় উপস্থাপিত ছবি।

স্থানীয় কম্পিউটার থেকে কাজ করার সময় বাহ্যিক উপাদানগুলিকে সংযুক্ত করতে কোনও সমস্যা নেই।

এটা কিসের সাথে যুক্ত? এর কারণ হল ব্যবহারকারীরা যখন একটি টার্মিনাল সার্ভারের মাধ্যমে কাজ করে, তখন তাদের স্থানীয় কম্পিউটারে কাজ করার চেয়ে কম অধিকার থাকে।

আপনি প্রশাসনিক অধিকার সহ একটি অ্যাকাউন্টের অধীনে টার্মিনাল সার্ভারে লগ ইন করলে আপনি সহজেই এটি যাচাই করতে পারেন।

এই পার্থক্যের কারণ হল যে 1C রেজিস্ট্রিতে একটি বহিরাগত উপাদান নিবন্ধন করতে পারে না যখন ব্যবহারকারী স্বাভাবিক অধিকারের অধীনে টার্মিনালে কাজ করে, কারণ একজন নিয়মিত ব্যবহারকারীর সিস্টেম রেজিস্ট্রি শাখায় লেখার অনুমতি নেই HKEY_CLASSES_ROOT.

টার্মিনালে বাহ্যিক উপাদান সংযুক্ত করার বিষয়ে প্রকাশনাগুলি এই সমস্যা সমাধানের জন্য বিভিন্ন পদ্ধতির প্রস্তাব করে।

উদাহরণস্বরূপ, এইগুলি:

1. প্রশাসনিক অধিকারের অধীনে প্রথমবারের মতো 1C চালু করুন।

এই বিকল্পটি সবসময় কাজ করে না। আমি নীচে ব্যাখ্যা করব কেন।

2. সাধারণ টার্মিনাল ব্যবহারকারীদের সিস্টেম রেজিস্ট্রি শাখায় লেখার অনুমতি দিন HKEY_CLASSES_ROOT.

অপর্যাপ্তভাবে উন্নত ব্যবহারকারীদের এটি করা উচিত নয়, অন্যথায় সমস্যা হতে পারে।

3. বিভিন্ন গ্যাজেট ব্যবহার করে, সম্পূর্ণ অধিকার সহ ব্যবহারকারীর পক্ষে VK নিবন্ধন করুন।

এটাও ভালো না।

তাহলে এই পরিস্থিতি থেকে বেরিয়ে আসার সেরা উপায় কী?

আমি এই সমস্যার আমার সমাধান প্রস্তাব. আমার মতে, এটি সহজ এবং সুন্দর, আগে ল্যান্সারে দেওয়া হয়নি।

এই সমস্যাটি গবেষণা করার সময়, আমি নিজেকে প্রশ্ন জিজ্ঞাসা করেছি: কেন 1C এমনকি একটি নতুন পথ ব্যবহার করে ভিকে নিবন্ধন করার চেষ্টা করছে? সর্বোপরি, তিনি ইতিমধ্যে সিস্টেমে নিবন্ধিত।

পয়েন্টটি দেখা গেল যে সাধারণ 1C কনফিগারেশনে (উদাহরণস্বরূপ, "ট্রেড ম্যানেজমেন্ট") বিশ্বব্যাপী প্রসঙ্গ পদ্ধতির নিম্নলিখিত সিনট্যাক্স ব্যবহার করা হয় ConnectExternal Component():

ConnectExternal Component("Directory.Connected Equipment.Layout.DriverATOLBarcodeScanner", "ATOLScanner");

আপনি দেখতে পাচ্ছেন, ড্রাইভার ভিসি "সংযুক্ত সরঞ্জাম" ডিরেক্টরির "ATOLBarcode স্ক্যানার ড্রাইভার" লেআউট থেকে সংযুক্ত।

তাহলে কি হবে?

1C ব্যবহারকারীর অস্থায়ী ফোল্ডারে উপাদানটিকে সংরক্ষণ করে, উদাহরণস্বরূপ "C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp"

এবং এই পথ ধরে HKEY_CLASSES_ROOT রেজিস্ট্রি কীতে এটি নিবন্ধন করার চেষ্টা করে।

টার্মিনালে, সাধারণ ব্যবহারকারীদের এই রেজিস্ট্রি শাখা পরিবর্তন করার অধিকার নেই, তাই উপাদানটি তাদের সাথে সংযোগ করে না।

এবার আসা যাক এই অবস্থা থেকে কিভাবে বের হওয়া যায় সে সম্পর্কে।

বিশ্বব্যাপী প্রসঙ্গ পদ্ধতি ConnectExternalComponent() এর বেশ কয়েকটি সিনট্যাক্স বিকল্প রয়েছে। এই আমরা ব্যবহার করব কি.

সুতরাং, ধাপে ধাপে:

1. একটি 32-বিট ওএসের জন্য C:\WINDOWS\SYSTEM32 ফোল্ডারে টার্মিনাল সার্ভারে regsvr32.exe ইউটিলিটি ব্যবহার করে বা 64-বিট ওএসের জন্য C:\WINDOWS\SYSWOW64 ফোল্ডারে বহিরাগত উপাদান নিবন্ধন করুন।

2. ConnectExternalComponent() পদ্ধতির জন্য দুটি অতিরিক্ত সিনট্যাক্স বিকল্পের একটি ব্যবহার করুন:

বিকল্প 1:

ConnectExternal Component("C:\WINDOWS\SysWOW64\Scaner1C.dll", "ATOLScanner", ExternalComponentType.COM);

ড্রাইভার অবজেক্ট = নতুন("AddIn.ATOLScanner.Scaner45");

বিকল্প 2:

ProgID = "AddIn.Scaner45";

ConnectExternal Component(ProgID);

DriverObject = New(ProgID);

আমার মতে, বিকল্প নম্বর 2 পছন্দনীয়।

একই সময়ে, 1C রেজিস্ট্রিতে একটি নতুন পথ ব্যবহার করে VK পুনরায় নিবন্ধন করার চেষ্টা করে না এবং এইভাবে সমস্ত সমস্যা সমাধান করা হয়।

ভাল, যে সব. আপনার কাজে সৌভাগ্য কামনা করছি!

/
ইউজার ইন্টারফেস ডেভেলপমেন্ট

বাহ্যিক উপাদান এবং প্ল্যাটফর্ম এক্সটেনশন ইনস্টল করা হচ্ছে

1.1। বাহ্যিক উপাদান এবং প্ল্যাটফর্ম এক্সটেনশনগুলির ইনস্টলেশন ইন্টারেক্টিভ হওয়া উচিত। ব্যবহারকারীকে ইনস্টলেশন সম্পর্কে তাদের নিজস্ব সিদ্ধান্ত নিতে হবে। ইনস্টলেশন ডায়ালগটি নির্দেশ করবে যে কোন উপাদানটির জন্য (এক্সটেনশন) প্রয়োজন এবং এটি ইনস্টল না হলে কী কাজ করবে না।

উদাহরণস্বরূপ, এটির মতো নির্মাণগুলি ব্যবহার করা ভুল

আপনি যদি বাহ্যিক উপাদান (...) সংযুক্ত না করেন তবে বাহ্যিক উপাদান (...) ইনস্টল করুন

ব্যবহারকারীকে স্পষ্টভাবে একটি প্রশ্ন জিজ্ঞাসা করা সঠিক:

কাজ চালিয়ে যেতে, আপনাকে একটি বাহ্যিক উপাদান ইনস্টল করতে হবে। একটি বাহ্যিক উপাদান আপনাকে রিপোর্টিংয়ের সাথে কাজ করার অনুমতি দেবে। উপাদান ইনস্টল করতে, "ইনস্টল" ক্লিক করুন। ইনস্টলেশন সম্পূর্ণ হলে, অবিরত ক্লিক করুন।

  • ব্যবহারকারী "প্রতিবেদন পাঠান" কমান্ড ব্যবহার করেন
  • এই কনফিগারেশনের জন্য কিছু বাহ্যিক উপাদান ইনস্টল করা প্রয়োজন।
  • কনফিগারেশন উপাদানটি ইনস্টল করা আছে কিনা তা পরীক্ষা করে।
  • যদি কম্পোনেন্ট ইন্সটল করা না থাকে, তাহলে ব্যবহারকারীর কাছে তথ্য দেখায় যে রিপোর্ট পাঠাতে কম্পোনেন্ট ইন্সটল করতে হবে এবং একটি বোতাম যা কম্পোনেন্ট ইন্সটল করতে পারে।
  • ব্যবহারকারী বোতাম টিপে, ইনস্টলেশন সঞ্চালিত হয়।
  • ইনস্টলেশনের পরে, ব্যবহারকারী "প্রতিবেদন পাঠানো চালিয়ে যান" বোতামে ক্লিক করেন
  • প্রতিবেদন পাঠানোর কার্যক্রম অব্যাহত রয়েছে।

এই দৃশ্যটি নিশ্চিত করবে যে উপাদানগুলি (এক্সটেনশন) ব্রাউজার সহ সমস্ত সমর্থিত ব্রাউজারে সমস্যা ছাড়াই ইনস্টল করা হয়েছে ফায়ারফক্স.

2. অ্যাপ্লিকেশান সলিউশন ব্যবহারকারীকে অপারেশন চলাকালীন যেকোন সময় বাহ্যিক উপাদান এবং এক্সটেনশন ইনস্টল করার জন্য সরঞ্জাম সরবরাহ করতে হবে। সুতরাং, এগুলি কেবলমাত্র কিছু কাজের সমাধানের সময়ই নয়, একটি পৃথক কর্মের আকারেও (কিছু প্রশাসনিক মোড থেকে) ইনস্টল করা যেতে পারে।

যখন কনফিগারেশন ব্যবহার করা হয় স্ট্যান্ডার্ড সাবসিস্টেম লাইব্রেরিফাইলগুলির সাথে কাজ করার জন্য একটি এক্সটেনশন ইনস্টল করতে, সাধারণ কমান্ডটি ব্যবহার করুন ফাইলের সাথে কাজ করা এক্সটেনশন ইনস্টল করুন, যা ব্যবহারকারীর ব্যক্তিগত সেটিংস ফর্মে স্থাপন করার সুপারিশ করা হয় (সাধারণ ফর্ম দেখুন _ডেমোমাইসেটিংসডেমো কনফিগারেশনে)। একই ফর্মে, ব্যবহারকারীর কাজের সময় প্রয়োজন হতে পারে এমন বাহ্যিক উপাদানগুলি ইনস্টল করার জন্য কমান্ড স্থাপন করার পরামর্শ দেওয়া হয়।