1c موقعیتی را در یک رشته پیدا کنید. امکانات بهینه سازی بی پایان است

سلام بر همه
امروز آنها از من خواستند که هنگام چاپ سند اجرا پیشوند سند را نمایش ندهم ، مشکل به شرح زیر حل شد.

PageReplace (شماره ، لئو (شماره ، 3) ، "")؛

وقتی به دستیار نحوی نگاه کردم ، آنقدر آن را دوست داشتم که می خواستم در مورد آن بنویسم کار با رشته ها در 1C: Enterprise.

یک رشته در 1C به یک نوع داده ابتدایی اشاره دارد.

اگر به راهنمای 1C نگاه کنید ، توضیحات زیر را در مورد نوع String مشاهده خواهیم کرد
ارزش ها از این نوعحاوی یک رشته Unicode به طول دلخواه است.
اگر به قول خودتان در مورد رشته ها درست شود. رشته یک ثابت است ، متشکل از شخصیت های مختلف ، همیشه با نقل قول ها احاطه شده است.

مشخص کردن یک رشته
تماس = "سلام مسافر"؛

رشته های چند خطی در تنظیمات معمولیاغلب با استفاده از جدا کننده عمودی "|" ایجاد می شوند:
رشته = "چند خطی
| رشته
| بنویسید
| متن "؛

علامت نقل قول درون رشته با علامت های نقل قول مضاعف مشخص می شود.
String = "" متن در گیومه ""؛

عملیات زیادی روی رشته ها انجام می شود (جستجو در داخل رشته ، تعیین اولین و غیره) ، بهتر است به Syntax Helper نگاه کنید.
راهنمای نحو - توضیحات کلیداخلی ساخته شده-> توابع داخلی-> توابع برای کار با رشته ها.

توابع رشته ای

در اینجا ، در یک فرم کوتاه ، توابع کار با رشته ها را می دهم:

BReg (<Строка>) - این تابع همه نویسه های رشته را به بزرگ تبدیل می کند.

SymbolCode (<Строка>, <НомерСимвола>) - تابع کد کاراکتر واقع در رشته عبور داده شده را در موقعیت با تعداد مشخص شده دریافت می کند.

یک شیر(<Строка>, <ЧислоСимволов>) - تابع اولین کاراکترهای رشته را از سمت چپ انتخاب می کند.

برای پیدا کردن (<Строка>, <ПодстрокаПоиска>) - این تابع وقوع رشته جستجو را به عنوان یک رشته فرعی در رشته اصلی پیدا می کند.

HPreg (<Строка>) - این تابع همه نویسه های رشته را به حروف کوچک تبدیل می کند.

درست (<Строка>, <ЧислоСимволов>) این عملکرداز این جهت که از آخرین کاراکترهای رشته در سمت راست استفاده می کند ، از توابع Left متفاوت است.

خط خالی (<Строка>) - تابع رشته را برای کاراکترهای مهم بررسی می کند.

سمبل(<КодСимвола>) - این تابع کد نویسه را به رشته ای حاوی نویسه تبدیل می کند.

AbbrL (<Строка>) - تابع نویسه های ناچیز را در سمت چپ اولین کاراکتر قابل توجه در رشته قطع می کند.

SocrLP (<Строка>) - این تابع نویسه های ناچیز را در سمت چپ اولین کاراکتر مهم در خط ، و فاصله را در سمت راست آخرین کاراکتر قابل توجه در خط قرار می دهد.

مخفف (<Строка>) - این تابع نویسه های ناچیز را در سمت راست آخرین کاراکتر قابل توجه در رشته قطع می کند.

چهار شنبه (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - تابع رشته کاراکتر را با شروع کاراکتر انتخاب می کند<НачальныйНомер>، در مجموع<ЧислоСимволов>.

StrLength (<Строка>) - تابع تعداد کاراکترهای یک رشته را بدست می آورد.

جایگزینی صفحه (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - این تابع تمام وقایع رشته جستجو را در رشته اصلی پیدا می کند و آن را با رشته جایگزین جایگزین می کند.

StrGetString (<Строка>, <НомерСтроки>) - تابع یک رشته از یک رشته چند خطی را با تعداد دریافت می کند.

تعداد وقایع (<Строка>, <ПодстрокаПоиска>) - این تابع تعداد وقایع رشته جستجو را در رشته اصلی محاسبه می کند.

StrNumber of Lines (<Строка>) - تابع تعداد خطوط یک رشته چند خطی را شمارش می کند. در یک رشته چند خطی ، خطوط با کاراکترهای خوراک خط جدا می شوند.

Treg (<Строка>) - تابع رشته را به حالت عنوان تبدیل می کند. این به این معنی است که برای هر کلمه ، حرف اول به یک حالت عنوان تبدیل می شود ، یا اگر هیچ عنوان بزرگی برای کاراکتر تعریف نشود ، به حروف بزرگ تبدیل می شود. بقیه کاراکترها به حروف کوچک تبدیل می شوند.

تبدیل ها را تایپ کنید
برای تبدیل صریح انواع داده ها ، توابعی با همین نام با نوع داده ای وجود دارد که تبدیل به آنها انجام می شود: رشته (<Значение>)

StringOfNumbers = رشته (تعداد)؛

تمام این توابع به طور مفصل در دستیار نحوی شرح داده شده است ، من در مقاله توضیح دادم که چگونه دستیار نحوی می تواند به یک برنامه نویس مبتدی کمک کند.

نمونه هایی برای کار با رشته ها

تبدیل یک عدد به رشته و برگشت.

برای دریافت نمایش رشته از سال ، از تابع Format استفاده کنید.

Year = Format (CurrentDate ()، "DF = yyyy") // Year = "2012"

برای تبدیل یک عدد به رشته بدون درج کاراکتر جداکننده گروه (فضای بدون شکست) ، باید از تابع Format با پارامتر ChG = 0 استفاده کنید:

Number = 2012 String = Format (شماره ، "CHG = 0") ؛ // رشته = "2012"

رشته بدون فاصله

نام من پاول بارکتوف است ، من در سافت پوینت کار می کنم. ما بیش از 10 سال است که مشکلات بهینه سازی عملکرد را حل کرده ایم. و با وجود تعداد زیادی ازمشکلات حل شده ، تعداد آنها کاهش نمی یابد ، اما نمایی رشد می کند. حجم داده ها در حال افزایش است و کارهای بهینه سازی کار با این داده ها دشوارتر می شوند. این روند اجتناب ناپذیر است.

موضوع مقاله - رویکردهای غیر پیش پا افتاده بهینه سازی... در نظر گرفته خواهد شد دو جنبه:

  • اولین - جستجوی زیر رشته... کاربران اغلب از آن استفاده می کنند ، و احتمالاً بسیاری از آنها قبلاً با این انتظار روبرو شده اند که جستجوی زیرشاخه به اندازه کافی سریع نیست.
  • دومین - داشتن اسناد بزرگ، مانند بستن ماه ، محاسبه قیمت تمام شده. مطمئناً بسیاری با این واقعیت روبرو شده اند که حسابداران این اسناد را برای 5-9 ساعت ، شب و خارج از ساعت کار صرف می کنند. جالبترین چیز این است که روشهای بهینه سازی کلاسیک همیشه در اینجا کمک نمی کنند. اگر هنگام انجام چنین اسنادی ، اندازه گیری عملکرد را در اشکال زدایی اجرا کنید ، خواهید دید که بیشترین زمان صرف نوشتن به ساختارهای موقتی یا واقعی - جداول ، ثبت ها و غیره می شود. و حل این مشکل با روشهای کلاسیک غیرممکن است.

جستجو با زیر رشته

اولین موضوع جستجوی زیر رشته است. در طول این سال ، من با چندین مشکل در این عمل روبرو شده ام. شما برای تمدید بیمه نامه به شرکت بیمه مراجعه می کنید ، آنها پیشنهاد می دهند شما را با شماره تلفن پیدا کنند. واضح است که این یک جستجوی کلاسیک نیست شماره کاملتلفن ، زیرا کاربر می تواند شماره را از طریق هشت ، از طریق هفت یا چیز دیگری وارد کند ، بنابراین ، آنها به دنبال تکه های شماره هستند. در این حالت ، از عملیات جستجوی طولانی مدت استفاده می شود - در برخی شرایط ، تأخیر می تواند چندین ثانیه باشد یا ممکن است به چند دقیقه برسد.

با شروع کاراکترها جستجو کنید

من با اولین مثال شروع می کنم ، زمانی که جستجو با شروع کاراکترها انجام می شود. آی تی - مورد خاصجستجوی زیر رشته ، زمانی که کاربر به طور قطع می داند که مقدار مورد نظر با کاراکترهای خاص آغاز می شود.

جستجو بر اساس نویسه های اولیه با استفاده از دستور LIKE در 1C پیاده سازی می شود(یا در نسخه انگلیسی ، LIKE) با مقدار "٪" در انتها ("٪" دنباله ای از کاراکترهای دیگر را نشان می دهد). به عنوان مثال ، ما به دنبال موارد زیر هستیم:

نام خود را مانند "ivano٪" بگذارید

لطفا توجه داشته باشید که اگر در سیستم خود نمایه ای در این زمینه دارید ، پس پرس و جو SQL از Index Seek برای این جستجو استفاده می کندجستجوی فهرست است.

شرط "رشته جستجو مانند" معادل جستجو در طیف وسیعی از مقادیر است... در حالت خاص ، وقتی ما "ivano٪" را جستجو می کنیم - این معادل جستجو در طیف نام خانوادگی است که با "ivano" شروع می شود و با "ivanp" پایان می یابد (زیرا کاراکتر "p" بعد از شخصیت "o" می آید )

بهینه سازهای مدرن بصورت مستقل یک پرسش LIKE را به یک جستجوی محدوده تبدیل می کنند... بنابراین ، اگر در سیستم خود ایندکس داشته باشید ، هنگام تفسیر پرس و جو با اصطلاحات SQL ، دقیقاً همان نتیجه را خواهید گرفت - بهینه ساز ، پرس و جو را با LIKE به عنوان جستجوی دامنه ارائه می دهد.

بنابراین ، انجام کلاسیک امکان پذیر است جستجوی سریعبا استفاده از یک فهرست (جستجوی فهرست). مشکلی در این مورد وجود ندارد یا می توانید آنها را به روشی ساده حل کنید.

با ورود جستجو کنید

حال بیایید یک مثال پیچیده تر ، وقتی مشخص نیست که مقدار مورد نظر ما دقیقاً در کجای رشته قرار دارد و یک جستجو با وقوع رشته انجام شود. در این حالت ، در پرس و جو "LIKE" ، "٪" در هر دو طرف قرار دارد.

هنگام تبدیل چنین پرسشی به SQL ، می بینیم که فقط دستور تغییر می کند (مقدار حاوی دو "٪" است).

بیایید نگاهی دقیق تر به برنامه اجرا بیندازیم. اینجا ما همان شاخص جستجو را می بینیم ، اما در این مورد کارآمد کار نمی کند.

واقعیت این است که فهرست با نام کتاب مرجع ، که در نظر داریم ، از چندین زمینه تشکیل شده است.

  • اولین مورد جدا کننده حسابداری است.
  • بعدی مستقیماً قسمت جستجو است.

بنابراین ، وقتی "Index Seek" در برنامه اجرا نمایش داده می شود ، به این معنی است جستجو در اولین قسمت جدا کننده انجام می شود- در اسلاید بالا می توانید آن را ببینید جستجو در مقدار Desc مورد نظر ما مطلقا استفاده نمی شود.

در این شرایط چه باید کرد؟ در عمل من ، اغلب موارد استفاده کاربران از درخواست های ورود ممنوع بود. و در بعضی موارد ، کاربران خود از این قابلیت استفاده نکردند ، زیرا زمان اجرا بسیار قابل توجه است ، اما آنها باید به کار خود ادامه دهند. بنابراین ، آنها مجبور بودند از راه های دیگری بیرون بیایند - آنها در لیست ها انتخاب کردند ، توسط شخصیت های اول پیدا کردند و غیره.

اما این امر منجر به عدم رضایت از عملکرد و سو mis برداشت از سیستم می شود. کاربر می فهمد که سیستم نمی تواند با چیزی کنار بیاید و مطابق انتظار کار نمی کند. درست نیست.

یک رویکرد غیر پیش پا افتاده برای حل مسئله جستجوی زیرشاخه

بیایید اکنون بررسی کنیم رویکرد غیر پیش پا افتاده برای حل این مشکل.

بیایید تعدادی از تحمل ها را تعیین کنیم:

  • اول ، از آنجا که مدرن است دیسک نامحدود است، بگذارید بگوییم فضای دیسک زیادی دارید که می توانید استفاده کنید.
  • دومین - کاربر نه با یک یا دو کاراکتر ، بلکه با برخی از قطعات جستجو می کند... به عنوان مثال ، هیچ یک از ما "al" را جستجو نمی کنیم - این انتخاب بسیار کمی است. در جستجوی دنباله های معنی دار شخصیت ها هستید. در اینجا ما انتخاب کرده ایم که شش کاراکتر را به عنوان مثال جستجو کنیم.

یک مثال از رشته مورد نیاز "alexe" در فرم نوشته شده است و ما آن را با کمک آن تست خواهیم کرد.

  • فرض کنید ما فیلدی با نام خانوادگی ، نام و نام خانوادگی مشتری داریم. اولین قدم تجزیه خودکار این مقدار به قطعات شش کاراکتری با تغییر "1" استو ما یک آرایه از قطعات (نگاه کنید به بالا) ، که در همان زمان همیشه متعلق به مقدار مورد نظر است. قطعه هایی به دست ما رسید که کاربر از نظر تئوری می تواند وارد کند. یعنی در آخرین اسلاید مشخص شد که ما به دنبال شش شخصیت هستیم. ممکن است پنج یا چهار عدد وجود داشته باشد ، فقط اندازه سازه بزرگتر خواهد بود.

  • در مرحله دوم ، ما ما این مجموعه ها را در یک ساختار جداگانه می نویسیم(این می تواند یک جدول ، ثبت اطلاعات و غیره باشد) و ما انتخابی بدست می آوریم که در آن یک قطعه خاص متعلق به مقادیر مختلف است.

  • و در مرحله سوم ، هنگام جستجو بر اساس زیر رشته ، ما به ساختار جستجوی 1C "LIKE" اضافه می کنیم شرط اضافی"و" ، که تعداد ترکیبات ممکن را فیلتر می کند ، و ما از این ساختار اضافی (این می تواند یک ثبت اطلاعات باشد) تمام عناصری را که قطعات رشته مورد نیاز به آنها تعلق دارند ، خارج می کنیم.

به عنوان مثال ، یک کاربر به دنبال مشتری با نام خانوادگی "سربازان" است. این هشت کاراکتر است ، به این معنی که سه قطعه از شش کاراکتر وجود دارد که ما در ساختار سرویس به دنبال آن هستیم. بعد ، همه اینها را در یک درخواست ترکیب می کنیم. بنابراین ، فیلتر اضافی به دست می آید.

در نتیجه ، ما از علامت "٪" خلاص می شویم (یعنی این قطعات همیشه شخصیت مورد نیاز خود را در مقابل خود دارند) ، و هنگام اجرای یک پرس و جو داخلی ، جستجوی فهرست (Index Seek) انجام می شود که برای آن جنگیدیم.

در عمل ، خیلی معلوم است داستان جالب - شتاب ده ها ، صدها بار... علاوه بر این ، همه اینها را می توان با استفاده از 1C انجام داد ، که بسیار خوب است. نیازی به بازنویسی منطق نیست ، کاربر خوشحال خواهد شد که پرسش جستجوی خود را تسریع کرده است. در مثال ، شتاب از 4 ثانیه تا 05/0 ثانیه ، و اگر در ابتدا یک درخواست برای دو دقیقه اجرا می کردیم ، در کمتر از یک ثانیه اجرا می شد.

مکانیزمی که به شما نشان دادم نوعی مثال آزمایشی نیست ، در حال حاضر با مشتریان واقعی کار می کند.

فعالیتهای مقدماتی برای اجرا

اکنون من به طور خلاصه در مورد فعالیت های مقدماتی صحبت خواهم کرد.

  • اولین لازم است که ثبت را با مقادیر اولیه پر کنید... برای این ، باید یک پنجره برنامه ریزی شده برنامه ریزی کنیم.
  • بعد ، ما باید سازگاری داده ها را مشاهده کنیم - این بدان معنی است ، برای تغییر مقدار باید اشتراک وجود داشته باشدبه طوری که این قطعات به طور خودکار دوباره ساخته می شوند.
  • و آخرین - یک فرم جستجوی استاندارد اضافه کنید.

پر کردن ثبت نام می تواند هم با استفاده از 1C و هم با استفاده از SQL انجام شود.

می توانم بگویم که پر کردن چنین ساختاری برای 17 میلیون مقدار حدود 20-25 دقیقه طول می کشد. به طور طبیعی ، کاربران در این لحظه نباید مقادیر جستجو را تغییر دهند.

اگر یک میلیون مقدار را در حدود 100 نویسه در 6 به صورت قطعه ای محاسبه کنیم ، به جایی 4.7 گیگابایتی خواهیم رسید. شما باید برنامه ریزی کنید تا این مکان را داشته باشید. اگر به عنوان مثال 100 میلیون مقدار در پوشه دارید ، باید فضایی را که در دیسک موجود خواهد بود ، برنامه ریزی کنید.

نیاز به در نظر گرفتن آمار محبوبیت قطعات

آیا این روش همیشه سریع کار خواهد کرد؟

این تحت تأثیر قرار می گیرد قطعه آمار محبوبیت.

  • به عنوان مثال ، شما یک قطعه "alexe" دارید ، که می تواند در نام الکسی ، در نام میانی الکسیویچ ، در نام خانوادگی الکسینکو و غیره باشد. این قطعه را می توان در 50-100 هزار رکورد گنجانید.
  • و قطعات به ندرت استفاده می شود.

بنابراین ، آمار محبوبیت بر اساس قطعات ظاهر می شود.

توجه داشته باشید که اگر محبوبیت قطعات کم باشد (100 عنصر) ، ما شتاب 0.1 ثانیه را بدست می آوریم.

اگر زیر رشته به اندازه کافی محبوب باشد (50 هزار عنصر) ، ما تخریب می شویم، و خیلی بیشتر از مواردی که هیچ بهینه سازی وجود نداشت.

به این ترتیب لازم است یک طرح اجرای پرس و جو بهبود یافته باشد، که در آن ابتدا مقدار محبوبیت subquery را بدست می آوریم. این کار در سه تا پنج خط در 1C انجام می شود. در عین حال ، به طور قطع می دانیم که اگر خطی مورد پسند واقع نشود ، شاخه اول را دنبال می کند و اگر محبوب باشد ، شاخه دوم را دنبال می کند.

شتاب چگونه کار می کند؟ یک درخواست جستجو از فرم وجود دارد ، سپس ما به ثبت اطلاعات با آمار می پردازیم ، عنصر را می گیریم و سپس انتخاب می کنیم که چه چیزی را استفاده کنیم - یک درخواست کلاسیک یا سریع.

حال بیایید نگاهی به نحوه اجرای درخواست SQL در سرور SQL بیندازیم.

اسلاید یک نمودار ساده را نشان می دهد:

  • درخواستی از بهینه ساز وجود دارد.
  • ما به آمار مربوط به زمینه هایی که در درخواست استفاده می شود نگاه می کنیم.
  • ما انتخاب می کنیم که کدام برنامه اجرایی را استفاده کنیم ، یعنی یک استراتژی اجرای پرس و جو را انتخاب می کنیم (به عنوان مثال یک حلقه تو در تو).

مداری که ما اجرا کرده ایم به چه صورت است؟

  • ما خودمان را ساختیم فهرست مطالب... نه یک شاخص استاندارد SQL ، نه یک شاخص 1C ، بلکه شاخص خود شما است که برای حل این مشکل لازم است.
  • علاوه بر این ، آنها با این واقعیت روبرو بودند که به موارد مورد نیاز خود نیاز داشتند آمار;
  • و شما به خودتان احتیاج دارید بهینه ساز، که براساس این آمار تصمیم می گیرد کدام شاخه را انتخاب کند.

بر اساس این منطق ، می توانیم بگوییم که این فرآیند معنای شاخص ها ، آمارها و یک بهینه ساز را نشان می دهد.

چه کسی نمی داند که چرا شما نیاز به ارائه آمار در SQL دارید ، نگاهی به این منطق بیندازید ، و می فهمید که اگر نادرست یا بی ربط باشد ، ما به شاخه اشتباه خواهیم رفت. درخواست کند خواهد شد. ما می فهمیم که چرا ما باید به طور موثر و صحیح به آمار ارائه دهیم - این بر عملکرد ، شاخص تأثیر می گذارد.

اگر شاخصی وجود نداشته باشد ، همه مقادیر را اسکن می کنیم.

بنابراین ، ما حداقل یک ابتدایی ، اما بهینه ساز خودمان را ایجاد کرده ایم. می توان گفت که آنها "انگشتان خود" احساس کردند که MS SQL و سایر DBMS این کار را انجام می دهند و ساختارهای خاص خود را ایجاد کردند.

تسریع در اسناد "بزرگ"

رفتن به موضوع دوم - تسریع در اسناد بزرگ.

در کارهای تولیدی ، ما اغلب با نوعی روال معمول مانند بسته شدن ماه ، گزارش به نماینده ، محاسبه قیمت تمام شده روبرو هستیم. تکمیل و تکمیل این اسناد سنگین و سنگین زمان قابل توجهی را می طلبد. و هنگامی که ما به اشکالزدایی نگاه می کنیم و این عملیات را در این عملیات ردیابی می کنیم ، این را می بینیم 1C مقادیر را خط به خط در بعضی از جدول ها وارد می کند و بیشتر اوقات طول می کشد... و در این مورد کاری نمی توان کرد. تنها توصیه ای که می تواند ارائه شود سرعت بخشیدن به دیسک است (اثربخشی این راه حل بسیار سوال برانگیز است و نیاز به تجزیه و تحلیل اولیه دارد).

من پیشنهاد می کنم به تاریخ برگردم و نحوه انجام آن را در 1C بررسی کنم ، از 8.0 تا 8.3 - این خط به خط انجام شد... سرور SQL هر بار درخواست را تجزیه و تحلیل می کند ، آن را پردازش می کند ، یک برنامه اجرایی ایجاد می کند ، آن را اضافه می کند ، در مورد موفقیت یک فرمان به 1C ارسال می کند و درخواست بعدی را دریافت می کند. و چنین درخواست هایی گام به گام از سرور برنامه 1C به MS SQL ارسال می شد.

واضح است که اگر 40 سند در سند دارید ، پس مشکلی پیش نمی آید. اگر 10 هزار رکورد یا بیشتر دارید (سازمان هایی وجود دارند که یک میلیون رکورد در اسناد نظارتی وجود دارد) ، این روند بسیار طولانی می شود. یک رکورد خیلی سریع پردازش می شود ، اما تعداد زیادی از آنها در سند وجود دارد. هزینه های سربار چقدر است؟ به شبکه ، برای انجام درخواست ، به سیگنال بازگشت ، برای پردازش این سیگنال در سیستم 1C - در کل ، مجموع چهار مرحله. همه مراحل خلاصه می شود ، در یک میلیون خط ضرب می شود و ما انتظارات طولانی خود را می گیریم. واضح است که این وحشتناک نیست.

در 1C ، با شروع از 8.3 ، بهبودهایی ایجاد شده است. اکنون پرسشی برای درج در جداول موقتی و ثبت اطلاعات در سرور SQL آماده شده است و اجرای بیشتر آن با استفاده از تماس های RPC کلاسیک انجام می شود ، خود ارائه دهنده دسترسی 1C (Native یا OLE DB) رکوردها را گروه بندی می کند و آنها را توسط N خط (معمولاً 100 خط) وارد می کند.

بنابراین ، شتاب 30 تا 300 درصد حاصل می شود. اما این هنوز کافی نیست ، زیرا امروز شما 10 هزار خط دارید ، فردا 20 هزار خط. این یک راه حل اساسی برای مشکل نیست ، شما هنوز هم با آن روبرو خواهید شد ، اما تنها پس از شش ماه / یک سال.

چی اکثر درج سریع به یک سرور SQL و در واقع به هر DBMS؟

آی تی مقادیر عمده... در 1C از BULK INSERT استفاده می شود ، اما برای کارهای دیگر. من همچنین می خواهم با بزرگ کردن درج INSERT و افزودن رکوردها در یک آرایه به پایگاه داده سرور SQL ، کار با اسناد "بزرگ" را سرعت دهم.

بیایید ببینیم چه تاثیری حاصل می شود. در مثال در نظر گرفته شده ، شتاب حدود 5 برابر است ، اما شما می توانید 10 برابر شتاب بگیرید... از لحاظ تئوری ، مشکل اصلی برای افزایش شتاب قابل توجه بیشتر سرعت دیسک است. دیسک ممکن است یک گلوگاه باشد.

همچنین مهم است که از چنین معیاری به عنوان شاخص ها یادآوری شود... اگر بخواهیم بدون به روزرسانی شاخص ها ، یک BULK INSERT را در جدول وارد کنیم ، سرعت قابل توجهی خواهیم داشت (در کمتر از یک ثانیه نتیجه می گیرد). در اینجا 69 ثانیه بدست می آوریم به این دلیل که هر درج در جدول به شاخص REFRESH نیاز دارد.

در هر صورت ، این روش به شما امکان می دهد 5-10 بار به نتیجه برسید.

بعلاوه ، ویژگیهایی مانند پارتیشن بندی ، پارتیشن بندی در اینجا در نظر گرفته نشده است. اگر بدانیم که BULK INSERT در دوره فعلی وارد شده است ، وضعیت می تواند بهبود یابد و ما بی ربط را به یک پارتیشن دیگر منتقل کنیم. حتی موثرتر خواهد بود. به نظر می رسد شتاب بسیار خوبی است.

امکانات بهینه سازی بی پایان است

به این ترتیب امکانات بهینه سازی بی پایان است... تنها چیز این است که فرار نکنید. قبل از بهینه سازی ، همیشه محاسبه می شود که آیا اثر مورد نظر خواهد بود یا خیر. همچنین ، من توصیه می کنم در برخی شرایط "بالاتر" از مشکل ، استفاده از روشهای کلاسیک بهینه سازی پرس و جو ، اما برخی از روشهای کاملا متفاوت که می تواند نتایج قابل توجهی به ارمغان بیاورد.

****************

این مقاله بر اساس نتایج گزارش () خوانده شده در کنفرانس INFOSTART EVENT 2017 COMMUNITY نوشته شده است.

رشته ها در 1C 8.3 در زبان داخلی 1C مقادیر یک نوع ابتدایی هستند خط... مقادیر این نوع شامل یک رشته Unicode با طول دلخواه است. متغیرها از نوع رشته مجموعه ای از کاراکترها هستند که در علامت های نقل قول محصور شده اند.

مثال 1. بیایید یک متغیر رشته ای را با متن ایجاد کنیم.

StringVariable = "سلام به جهان!"

توابع کار با رشته ها در 1c 8.3

در این بخش ، توابع اصلی ارائه می شود که به شما امکان می دهد خطوط را در 1c تغییر دهید یا اطلاعات موجود در آنها را تجزیه و تحلیل کنید.

طول Str

StrLength (<Строка>) ... تعداد کاراکترهای موجود در رشته عبور شده در پارامتر را برمی گرداند.

مثال 2. بیایید تعداد کاراکترهای رشته "Hello world!" را بشماریم.

رشته = "سلام به جهان!"؛ تعداد کاراکترها = StrLength (رشته)؛ گزارش (تعداد کاراکترها) ؛

نتیجه اجرای این کد نمایش تعداد نویسه های رشته خواهد بود: 11.

مخفف

AbbrL (<Строка>) ... نویسه های ناچیز را در سمت چپ اولین کاراکتر قابل توجه در رشته کوتاه می کند.
شخصیت های کوچک:

  • فضا؛
  • فضای نشکن
  • جدول بندی
  • برگشت محموله؛
  • ترجمه خطی
  • ترجمه فرم (صفحه).

مثال 3. تمام فضاها را از سمت چپ خط "جهان!" حذف کنید. و رشته "Hello" را به آن وصل کنید.

رشته = به اختصار ("صلح!") ؛ رشته = "سلام" + رشته؛ گزارش (رشته) ؛

نتیجه اجرای این کد ، خروجی خط "Hello world!" خواهد بود.

مخفف

مخفف (<Строка>) ... نویسه های ناچیز را در سمت راست اولین شخصیت قابل توجه در رشته کوتاه می کند.

مثال 4. فرم های "سلام" و "جهان!" عبارت "سلام به جهان!"

رشته = کوتاه شده ("سلام") + "" + خلاصه شده ("جهان!") ؛ گزارش (رشته) ؛

SokrLP

SocrLP (<Строка>) ... نویسه های ناچیز را در سمت راست اولین کاراکتر قابل توجه در رشته کوتاه می کند و همچنین نویسه های ناچیز را در سمت چپ اولین کاراکتر قابل توجه در رشته قرار می دهد. این تابع بیشتر از دو مورد قبلی استفاده می شود ، زیرا همه کاره است.

مثال 5. نویسه های ناچیز را در سمت چپ و راست به نام طرف مقابل حذف کنید.

Counterparty = Directories.Contractors.NaytiPoRequisite ("INN" ، "0777121211") ؛ CounterpartyObject = Counterparty.GetObject ()؛ CounterpartyObject.Name = ShortLP (CounterpartyObject.Name)؛ CounterpartyObject.Write ()؛

یک شیر

یک شیر(<Строка>, <ЧислоСимволов>) ... اولین کاراکترهای یک رشته را دریافت می کند ، تعداد کاراکترها در پارامتر مشخص شده است تعداد کاراکترها

مثال 6. ساختار را وارد کنید کارمندشامل نام ، نام خانوادگی و نام خانوادگی کارمند باشد. رشته ای با نام خانوادگی و حروف اول بدست آورید.

نام اولیه = لئو (نام کارمند ، 1) ؛ Patronymic Initial = Leo (کارمند ، Patronymic ، 1) ؛ نام کامل = کارمند. نام خانوادگی + "" + نام اولیه + "." + Initial of Patronymic + "."؛

درست

درست (<Строка>, <ЧислоСимволов>) ... آخرین کاراکترهای یک رشته را دریافت می کند ، تعداد کاراکترها در پارامتر مشخص شده است تعداد کاراکترهااگر تعداد کاراکترهای مشخص شده از طول رشته بیشتر باشد ، کل رشته برمی گردد.

مثال 7. فرض کنید که انتهای یک متغیر رشته ای دارای یک تاریخ با قالب "yyyymmdd" باشد ، یک رشته با تاریخ دریافت کنید و آن را به نوع تبدیل کنید تاریخ.

String = "تاریخ جاری: 20170910"؛ StringDate = راست (رشته ، 8) ؛ تاریخ = تاریخ (تاریخ رشته)

چهار شنبه

چهار شنبه (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) ... یک رشته از یک رشته عبور شده به عنوان یک پارامتر دریافت می کند خط، از نویسه ای شروع می شود که شماره آن در پارامتر مشخص شده است شروع شمارهو طول منتقل شده به پارامتر تعداد کاراکترهاشماره گذاری نویسه ها در خط از 1 شروع می شود اگر در پارامتر باشد شروع شمارهمقداری مشخص شده است که کمتر یا برابر با صفر است ، سپس پارامتر مقدار 1 را به خود می گیرد. اگر پارامتر تعداد نمادهامشخص نشده است ، سپس نویسه ها تا انتهای خط انتخاب می شوند.

مثال 8. فرض کنید یک متغیر رشته ای که از موقعیت نهم شروع می شود ، حاوی کد منطقه است ، باید آن را دریافت کرده و در یک خط جداگانه بنویسید.

خط = "منطقه: 99 مسکو"؛ منطقه = چهارشنبه (خط ، 9 ، 2) ؛

جستجو کردن

پیدا کردن (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) ... جستجو برای زیر رشته مشخص شده در رشته ، شماره موقعیت اولین کاراکتر زیر رشته پیدا شده را برمی گرداند. پارامترهای این عملکرد را در نظر بگیرید:

  • خط... رشته منبع؛
  • زیر رشته... زیر رشته ای که باید جستجو شود.
  • جهت جستجو... جهت جستجوی یک رشته فرعی را در یک رشته مشخص می کند. می تواند مقادیر را بدست آورد:
    • جهت جستجو. از ابتدا;
    • جهت جستجو;
  • موقعیت اولیه... موقعیت رشته ای را که جستجو از آنجا شروع می شود مشخص می کند.
  • تعداد ورودیها... تعداد وقایع رشته فرعی مورد نظر را در رشته اصلی مشخص می کند.

مثال 9. در خط "سلام به جهان!" موقعیت آخرین وقوع نماد "و" را تعیین کنید.

PositionNumber = StrNayti ("سلام به جهان!" ، "و" ، DirectionSearch.End)؛ گزارش (شماره موقعیت)

نتیجه اجرای این کد نمایش تعداد آخرین وقوع نماد "و" خواهد بود: 9.

VReg

BReg (<Строка>) ... همه کاراکترهای رشته مشخص شده را در 1s 8 به بزرگ تبدیل می کند.

مثال 10. رشته "hello world!" را تبدیل کنید. به حروف بزرگ

StringBreg = BReg ("سلام به جهان!")؛ گزارش (StringVreg) ؛

نتیجه اجرای این کد نمایش خط "HELLO WORLD!" خواهد بود.

نرگس

HPreg (<Строка>) ... همه کاراکترهای رشته مشخص شده را در 1s 8 به حروف کوچک تبدیل می کند.

مثال 11. رشته "HELLO WORLD!" را تبدیل کنید. به حروف کوچک

StringNreg = НReg ("سلام جهانی!")؛ گزارش (StringVreg) ؛

نتیجه اجرای این کد ، خروجی خط "سلام به جهان" خواهد بود.

ترگ

Treg (<Строка>) ... یک رشته را به صورت زیر تبدیل می کند: شخصیت اول هر کلمه به بزرگ تبدیل می شود ، شخصیت های باقی مانده کلمه به کوچک تبدیل می شوند.

مثال 12. حروف اول کلمات را در رشته "hello world!" بزرگ بنویسید.

StringTreg = Treg ("سلام جهان!")؛ گزارش (StringTreg) ؛

نتیجه اجرای این کد نمایش خط "سلام به جهان" خواهد بود.

سمبل

سمبل(<КодСимвола>) ... شخصیتی را با کد Unicod خود دریافت می کند.

مثال 13. بیایید در خط "Hello World!" به چپ و راست اضافه کنیم. نماد

StringWithStars = نماد ("9733") + "سلام به جهان!" + نماد ("9733")؛ گزارش (StringWithStars) ؛

نتیجه اجرای این کد خروجی خط "★ سلام به جهان! ★" خواهد بود

رمز نماد

SymbolCode (<Строка>, <НомерСимвола>) ... کد نویسه Unicode را از رشته مشخص شده در پارامتر اول ، در موقعیت مشخص شده در پارامتر دوم دریافت می کند.

مثال 14. کد آخرین کاراکتر را در "سلام به جهان!" پیدا کنید.

رشته = "سلام به جهان!" CharacterCode = CharacterCode (رشته ، StrLength (رشته)) ؛ گزارش (SymbolCode) ؛

نتیجه اجرای این کد نمایش کد رمز "!" خواهد بود. - 33

خط خالی

خط خالی (<Строка>) ... بررسی می کند که آیا یک رشته فقط دارای نویسه های ناچیز است ، یعنی اگر خالی باشد.

مثال 15. بررسی کنید که یک رشته متشکل از سه فاصله خالی است.

Empty = EmptyString ("")؛ گزارش (خالی)

نتیجه اجرای این کد نمایش کلمه "Yes" (بیان رشته ای مقدار منطقی) خواهد بود درست است، واقعی).

جایگزین صفحه

جایگزینی صفحه (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) ... همه موارد زیر رشته جستجو را در رشته اصلی پیدا می کند و آن را با زیر رشته جایگزین می کند.

مثال 16. در خط "سلام به جهان!" کلمه "صلح" را با کلمه "دوستان" جایگزین کنید.

String = StrReplace ("سلام به جهان!" ، "جهان" ، "دوستان")؛ گزارش (رشته) ؛

نتیجه اجرای این کد نمایش خط "سلام دوستان!"

رشته های StrNumberStrings

StrNumber of Lines (<Строка>) ... تعداد خطوط یک رشته چند خطی را می شمارد. رفتن به خط جدیددر 1s 8 از نماد استفاده شده است PS(شخصیت خوراک خط).

مثال 17. تعداد خطوط موجود در متن را تعیین کنید:
"خط اول
خط دوم
خط سوم "

Number = StrNumberStrings ("خط اول" + نمادها. PS + "خط دوم" + نمادها. PS + "خط سوم")؛ شماره گزارش)؛

نتیجه اجرای این کد نمایش تعداد خطوط موجود در متن خواهد بود: 3

StrGetString

StrGetString (<Строка>, <НомерСтроки>) ... یک رشته را با تعداد آن در یک رشته چند خطی دریافت می کند. شماره گذاری خط از 1 شروع می شود.

مثال 18. آخرین سطر را در متن دریافت کنید:
"خط اول
خط دوم
خط سوم "

متن = "خط اول" + Symbols.PS + "خط دوم" + Symbols.PS + "خط سوم"؛ LastString = StrGetString (متن ، StrNumberLines (متن)) ؛ گزارش (آخرین خط)

نتیجه اجرای این کد نمایش خط "خط سوم" خواهد بود.

تعداد وقایع

تعداد وقایع (<Строка>, <ПодстрокаПоиска>) ... تعداد موارد زیر رشته مشخص شده را در یک رشته برمی گرداند. عملکرد حساس به حروف کوچک است.

مثال 19. تعیین کنید که چند بار حرف "c" در خط "خطوط در 1s 8.3 و 8.2" ظاهر می شود ، بدون توجه به مورد آن.

Line = "خطوط در 1s 8.3 و 8.2"؛ تعداد وقایع = تعداد وقایع (تعداد واقعی Vreg (رشته) ، "S")؛ گزارش (تعداد وقایع)؛

نتیجه اجرای این کد نمایش تعداد وقایع خواهد بود: 2.

صفحه با شروع می شود

شروع صفحه با (<Строка>, <СтрокаПоиска>) ... بررسی می کند که آیا رشته عبور شده در پارامتر اول با رشته پارامتر دوم شروع می شود یا خیر.

مثال 20. تعیین کنید که INN طرف مقابل انتخاب شده با شماره 1 شروع می شود یا خیر طرف مقابل پیمانکاران.

TIN = طرف مقابل. INN؛ باUnits = StrStarts شروع می شود با (INN ، "1") ؛ If BeginsUnits then // کد شما EndIf ؛

صفحه با پایان می یابد

صفحه با (به پایان می رسد)<Строка>, <СтрокаПоиска>) ... بررسی می کند که آیا رشته عبور شده در پارامتر اول با رشته پارامتر دوم به پایان می رسد.

مثال 21. تعیین کنید که آیا TIN طرف مقابل انتخاب شده با رقم 2. به پایان می رسد طرف مقابلپیوندی به یک مورد دایرکتوری ذخیره می شود پیمانکاران.

TIN = طرف مقابل. INN؛ با دو پایان می یابد = Str با (INN ، "2") پایان می یابد؛ اگر با دو برابر پایان می یابد سپس // کد شما EndIf؛

صفحه تقسیم

StrSplit (<Строка>, <Разделитель>, <ВключатьПустые>) ... یک رشته را با استفاده از نویسه های جداکننده مشخص شده به قطعات تقسیم می کند و رشته های حاصل را در یک آرایه می نویسد. پارامتر اول رشته اصلی را ذخیره می کند ، دوم شامل رشته حاوی جدا کننده است ، سوم تعیین می کند که رشته های خالی را به آرایه بنویسد (به طور پیش فرض درست است، واقعی).

مثال 22. فرض کنید ما یک رشته داریم که شامل اعدادی است که با "؛" از هم جدا شده اند ، یک آرایه از اعداد را از رشته دریافت می کنیم.

رشته = "1؛ 2؛ 3"؛ Array = StrSplit (رشته ، "؛")؛ برای Rd = 0 توسط آرایه. تعداد () - 1 چرخه تلاش آرایه [Rd] = تعداد (AbbrLP (آرایه [Rb]))؛ آرایه استثنا [Сч] = 0؛ پایان تلاشها پایان حلقه ؛

در نتیجه اجرا ، آرایه ای با اعداد از 1 تا 3 بدست می آید.

StrConnect

StrConnect (<Строки>, <Разделитель>) ... یک آرایه از رشته ها را از پارامتر اول به یک رشته شامل تمام عناصر آرایه ، جدا شده توسط جدا کننده مشخص شده در پارامتر دوم تبدیل می کند.

مثال 23. با استفاده از آرایه اعداد مثال قبلی ، رشته اصلی را بدست آورید.

برای Ref = 0 توسط آرایه. تعداد () - 1 آرایه چرخه [Ref] = رشته (آرایه [Ref])؛ پایان چرخه ؛ رشته = StrConnect (آرایه ، "؛")؛

در این مقاله من در مورد عملکرد جستجوی سریع 1C Enterprise 8 برای شما صحبت خواهم کرد. جستجوی سریع چیست؟بسیار ساده. جستجوی سریع یکی از راههای پیمایش لیستهای بزرگ سوابق 1C است. اینها می تواند لیستی از اسناد ، دایرکتوری ها ، ثبت ها باشد - هر آنچه توسط جداول نشان داده می شود.

جستجوی سریع چیست؟

عملکرد جستجوی سریع در اسناد 1C Enterprise بسیار راحت است و به شما اجازه می دهد تا در مقدار زیادی از داده ها پیمایش نکنید (به عنوان مثال ، با استفاده از نوار پیمایش) ، اما مستقیماً به مکان درستدر لیست. متأسفانه ، کاربران تازه کار 1C Enterprise 8 (از جمله حسابداری 1C 8) در ابتدا از قابلیت جستجوی سریع استفاده نمی کنند ، ترجیح می دهند به صورت دستی در لیست اسناد پیمایش کنند (و آنها می توانند بسیاربزرگ) این مقاله به شما کمک می کند نحوه استفاده سریع از جستجوی 1C را بفهمید.

اول از همه ، لازم به ذکر است که در تنظیمات 1C Enterprise 8 ، ساخته شده بر روی فرم های مدیریت شده ، جستجوی سریع متفاوت از نسخه های قبلی 1C بنابراین ، ما به طور جداگانه استفاده از جستجوی سریع را در تجزیه و تحلیل خواهیم کرد فرم های مدیریت شدهو به طور معمول

جستجوی سریع در حسابداری 1C 8.2

در نسخه های حسابداری 1C از 8.0 تا 8.2عملکرد به طور خاص برای در نظر گرفته شده است انتقالبه قسمت دلخواه لیست بروید. به عنوان مثال ، به پنجره نمودار حساب های نشان داده شده در شکل نگاه کنید.


یک خط مشخص در پنجره برجسته شده است. به مثلث ظریف نوارهایی که با فلش قرمز نشان داده شده است توجه کنید. همانند سایر برنامه های ویندوز که لیست وجود دارد (به عنوان مثال در Explorer) ، موقعیت این نشانگر (مثلث) مرتب سازی لیست را به عنوان یک کل تعیین می کند - در کدام ستون نشانگر تنظیم شده است ، کل لیست بر اساس آن ستون مرتب می شود.در شکل ، نشانگر در ستون Code است ، بنابراین حساب های موجود در نمودار حساب ها بر اساس کد مرتب می شوند.

با کلیک بر روی ستون مورد نظر می توان نشانگر را از یک ستون به ستون دیگر منتقل کرد ( روی HEADER ستون!) با ماوس. اگر نشانگر قبلاً در ستون فعلی باشد ، با کلیک کردن ، جهت مرتب سازی به عکس تغییر می کند (یعنی از بزرگتر به کوچکتر یا برعکس). این یک رفتار استاندارد برای هر یک است برنامه های ویندوز... ویژگی این نشانگر در 1C Enterprise چیست و چگونه با جستجوی سریع ارتباط دارد؟

جستجوی سریع در لیست های 1C Enterprise 8 توسط ستونی که نشانگر در آن قرار دارد انجام می شود.در این حالت ، جستجوی سریع در نمودار حساب ها توسط ستون Code انجام می شود.

قسمت مهمی از مقاله وجود داشت ، اما بدون جاوا اسکریپت قابل مشاهده نیست!

چگونه از جستجوی سریع در 1C استفاده کنیم؟به راحتی! فقط شروع به تایپ کردن آنچه می خواهید در این ستون پیدا کنید، یعنی نشانگر کجاست در مثال در تصویر بالا ، شماره حساب باید وارد شود. به عنوان مثال ، شما می خواهید حساب 50 صندوقدار را پیدا کنید. در این حالت ، وارد کنید ( نیازی به کلیک کردن بر روی هر جایی نیست!) شماره 50 از صفحه کلید ، و اگر در این ستون حسابی با این شماره وجود داشته باشد (و البته یک عدد نیز وجود دارد) ، لیست به این خط پیمایش می کند و خود خط مشخص می شود. نتیجه در تصویر نمودار حساب های زیر نشان داده شده است.

سایت اینترنتی_

متنی که فلش به آن اشاره کرده است نیازی به شستن نیست- خودش ناپدید خواهد شد.

اگر در مثال داده شده کلمه "صندوقدار" را وارد کنید ، متن در قسمت پایین پنجره وارد شده و سپس پاک می شود. این اتفاق می افتد زیرا به محض این که شروع کنیدرشته جستجوی سریع وارد شده همزمان با شروع حداقل یک خط در این ستون نیست ، 1C Enterprise نتیجه می گیرد که رشته جستجو پیدا نشده است و به طور خودکار آن را پاک می کند. مربوط به دو قانون وجود دارد که باید بخاطر بسپارید.

در 1C Enterprise 8 ، یک جستجوی سریع در ابتدای خط انجام می شود ، یعنی ستون مطابقت متن وارد شده را با شروع یکی از خطوط این ستون جستجو می کند.
این امر به یک توصیه مهم منجر می شود: هنگام وارد کردن داده ها به فهرست ، عناصر را نام ببرید تا جستجوی آنها با استفاده از جستجوی سریع راحت باشد. به عنوان مثال ، نام طرف مقابل بهتر از "LLC NameFirmy" به عنوان "NameFirm LLC" نوشته شده است. علاوه بر این ، شما نباید از علامت های نقل قول و سایر علائم غیر ضروری در نام استفاده کنید (ما در مورد پر کردن قسمت Name در فرم ها صحبت می کنیم).

اگر شروع به وارد کردن متن کنید و آن پاک شود - آنچه در جستجوی آن هستید در این ستون وجود ندارد!در این حالت ، زبان ورودی و همچنین ستونی را که جستجوی سریع در آن انجام می شود ، بررسی کنید. یک اشتباه رایج این است که ستون اشتباه انتخاب شده است. به عنوان مثال ، مارکر در ستون Code تنظیم می شود و جستجو توسط نام حساب انجام می شود.

جستجوی سریع در حسابداری 1C 8.3

حال بیایید ببینیم تفاوت جستجو در 1C Enterprise 8.3 چقدر سریع است. کاربرد بسیار مشابه 8.2 است ، اما یک تفاوت قابل توجه برای یادآوری وجود دارد.

در حسابداری 1C 8.3 و همچنین در هر پیکربندی دیگر در فرمهای مدیریت شده (همان رابط کاربری جدید) ، مانند یک فیلتر کار می کند. به عبارت ساده ، در نتیجه عملکرد جستجوی سریع ، بخشی از لیست است پنهان کردن.

نحوه استفاده از این ، اکنون با شما خواهیم فهمید. ابتدا به تصویر پنجره نمودار حسابهای 1C 8.3 در زیر نگاه کنید.

سایت اینترنتی_

همانطور که مشاهده می کنید ، همان نشانگر در یکی از ستون ها است. جستجو همچنین توسط ستونی که نشانگر در آن تنظیم شده است انجام می شود. همه اینها بدون تغییر باقی ماند. با این حال ، اگر شروع به وارد کردن متن کنید (در مثال شماره حساب) ، موارد زیر اتفاق می افتد.

سایت اینترنتی_

همانطور که مشاهده می کنید ، جعبه جستجو به طور خودکار باز شد. اگر بر روی دکمه جستجو در نوار ابزار پنجره کلیک کنید (در شکل زیر مشخص شده است) ، همین پنجره باز می شود. در نتیجه ، وقتی روی دکمه Find در پنجره جستجو کلیک می کنید (پشت منوی کشویی موجود در تصویر پنهان شده است) یا فقط Enter ، نتیجه زیر را می گیرید.

سایت اینترنتی_

از این معلوم می شود که جستجوی سریع در حسابداری 1C 8.3 فقط بخشی قابل رویت از لیست را که شرایط جستجو را دارد بر جا می گذارد.در این حالت ، دکمه Find ناپدید می شود ، و به جای آن ، یک لنز با ضربدر ظاهر می شود (در شکل زیر نشان داده شده است) ، وقتی روی آن کلیک می کنید ، لیست به حالت اولیه(در این حالت ، خط پیدا شده در نتیجه جستجوی سریع برجسته باقی مانده است).

ویژگی مهم دیگر جستجوی سریع در حسابداری 1C 8.3- مطابق نسخه 8.2 یک مسابقه در ابتدای خط جستجو نمی شود ، اما جستجو برای یک مسابقه با هر قسمت از خطوط در ستون انجام می شود. بنابراین ، اگر طرف مقابل "NameFirm LLC" نامیده می شود ، و هنگام جستجو شروع به وارد کردن "NameFirm LLC" می کنید ، خط همچنان پیدا خواهد شد!

نتیجه گیری

بنابراین ، جستجوی سریع در حسابداری 1C 8.2 و قبل از آن برای پیمایش لیست به خط مورد نظر در نظر گرفته شده است ، و در حسابداری 1C 8.3 ، یک جستجوی سریع مانند یک فیلتر عادی کار می کند ، بخشی از لیست را که نیازی ندارید پنهان می کند.