Katalog ro'yxati formasida tanlash qanday o'rnatiladi? Ba'zi tanlov bilan ro'yxat shaklini qanday ochish mumkin? 1c tanlov shaklida tanlovni o'rnating.

Code 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.O'z ichiga oladi;
DirectoryList.Selection.Status.Value="Qabul qilingan";
DirectoryList.Selection.Status.Set();

1C 8.2 uchun:
Oldindan o'rnatilgan tanlov bilan ro'yxat shaklini ochishning bir necha yo'li mavjud. Keling, ularni tartibda ko'rib chiqaylik:

1. Birinchi usul - formani ochishda Tanlash formasi parametrini o'rnatishingiz va ushbu parametr bilan ro'yxat shaklini ochishingiz mumkin. Tanlash parametri strukturani ifodalaydi. Elementlarning nomlari tanlov amalga oshiriladigan maydonlarning nomlariga mos keladi va qiymatlar tanlov qiymatlarini o'z ichiga oladi. Bu dinamik roʻyxat boshqariladigan shakl kengaytmasi variantidir. Ya'ni, u asosiy atributi Dinamik ro'yxat tipidagi atribut bo'lgan shakllar uchun mavjud, masalan, ro'yxat shakllari va tanlash shakllari.

Shaklni ochishda ko'rsatilgan maydon asosida tanlov amalga oshiriladi.
Kod 1C v 8.2 UP // Masalan, quyidagi misolda schyot-fakturalar ro'yxati Raqam maydonida 333 ga teng tanlangan holda ochiladi.
Tanlash qiymati = Yangi tuzilma ("Raqam", "333");
SelectionParameters = Yangi tuzilma ("Tanlash", SelectionValue);

OpenForm("Hujjat. Qabul qilingan faktura. Ro'yxat shakli", Tanlash imkoniyatlari);

// Masalan, quyidagi misol hisob-fakturalar ro'yxatini ochadi
// “Shoxlar va tuyoqlar” OAJ maydoniga Pudratchi tomonidan tanlash bilan.
Tanlash qiymati = Yangi tuzilma ("Qarshi tomon", "OAJ Shoxlari va Tuyoqlari");
SelectionParameters = Yangi tuzilma ("Tanlash", SelectionValue);
OpenForm("Hujjat. Qabul qilingan faktura. Ro'yxat shakli", Tanlash imkoniyatlari);

2. Roʻyxat shaklini parametrlarsiz ochishingiz mumkin:
Code 1C v 8.2 UP OpenForm("Hujjat. Qabul qilingan faktura. Ro'yxat shakli");

Va keyin, schyot-fakturalar ro'yxati uchun shakl hodisasi ishlovchisida CreatedOnServer qachon, shaklning asosiy atributi bo'lgan dinamik ro'yxatda tanlov yaratadigan kodni yozing:
Kod 1C v 8.2 UP &OnServer

Tanlash elementi = List.Selection.Elements.Add(Type("DataComposition Tanlash Elementi"));
SelectionElement.LeftValue = NewDataCompositionField("Raqam");


SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
EndProcedure

&Serverda
OnServerda yaratilgan protsedura (muvaffaqiyatsizlik, standart ishlov berish)
Tanlash elementi = List.Selection.Elements.Add(Type
(“DataCompositionSelectionElement”));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = rost;
SelectionElement.RightValue = 150000;
EndProcedure

Ushbu usulning afzalliklari taqqoslash ko'rinishidir tanlash uchun, birinchi holatda bo'lgani kabi, nafaqat Teng, balki Ko'proq, Kamroq va hokazolarni ham o'rnatishingiz mumkin.

Ammo bu usul ham juda muhim kamchilikka ega: bu tanlov bilan forma har doim ochiladi. Uni qayerdan chaqirishsa. Shuning uchun bu shakl asosiy sifatida belgilanmasligi kerak. Va agar, shunga qaramay, bu asosiy bo'lsa, tanlovni o'rnatishdan oldin, ushbu shakl qaerdan ochilishini tahlil qilish kerak. Masalan, shakl parametrlarini tahlil qilish.

3. Nihoyat, tanlash sharti dinamik ro'yxat uchun ma'lumotlarni tanlaydigan maxsus so'rovga joylashtirilishi mumkin. Misol uchun, biz elementlar ro'yxatida ta'kidlangan elementni o'z ichiga olgan hisob-fakturalar ro'yxatini ochishimiz kerak.

Buning uchun elementlar ro'yxati shaklida buyruq va tegishli tugmani yarating.

Keling, ushbu buyruq uchun ijro ishlovchisini quyidagicha to'ldiramiz:
Kod 1C v 8.2 UP &OnClient
Protsessual tushumlar hisob-fakturalar (buyruq)

ListForm = GetForm ("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

EndProcedure

Ushbu ishlov beruvchida biz hisob-fakturalar ro'yxati uchun shaklni olamiz va elementlar ro'yxatidagi joriy elementga havolani FilterByProduct forma parametriga o'tkazamiz va ushbu parametr bilan shaklni ochamiz.

Keyin hujjatlar ro'yxati uchun forma yaratamiz: Kvitansiya hisob-fakturasi va FilterBy Product forma atributini yaratamiz, biz uni ochishda shakl parametri sifatida foydalanamiz. Endi List formasining asosiy atributining xossalar palitrasini ochamiz. ArbitraryRequest bayrog'ini o'rnating va ro'yxat sozlamalari qatorida bosing Ochiq.

So'rov maydoniga quyidagi so'rov matnini kiriting:
Kod 1C v 8.2 UP SELECT
Hujjatni qabul qilish raqami,
Hujjatni qabul qilish hisob-fakturasi.Sana
FROM
Document.ReceiptInvoice DocumentReceiptInvoice AS
QAYERDA
Hujjatni qabul qilish Invoice.Mahsulotlar.Mahsulot = &Mahsulot

So'rovda biz FilterBy Item hisob-faktura ro'yxati shakli parametridagi elementlar ro'yxatidagi joriy qatorga havolani oladigan element parametridan foydalanamiz. Buni amalga oshirish uchun OnOpen list formasi hodisasi ishlovchisida Mahsulot so‘rovi parametrining qiymatini belgilash uchun kod yozamiz:
Kod 1C v 8.2 UP
&OnClient
Ochilish tartibi (muvaffaqiyatsizlik)

List.Parameters.SetParameterValue("Mahsulot", FilterByMahsulot);

EndProcedure

Bu yerga Roʻyxat. Variantlar List atributi uchun dinamik roʻyxat soʻrovi parametrlari roʻyxati. Mahsulot parametrining qiymati FilterByProduct forma parametrining qiymatiga teng o'rnatiladi.

Natijada, ob'ektlar ro'yxati formasidagi "Kvitansiyalarni qabul qilish" tugmasini bosish orqali biz faqat ob'ektlar ro'yxatida tanlangan elementni o'z ichiga olgan hisob-fakturalar ro'yxatini olamiz.

Ba'zi tanlov bilan ro'yxat shaklini qanday ochish mumkin?

Oldindan o'rnatilgan tanlov bilan ro'yxat shaklini ochishning bir necha yo'li mavjud. Keling, ularni tartibda ko'rib chiqaylik:

1. Birinchi usul - formani ochishda Tanlash formasi parametrini o'rnatishingiz mumkin va bu parametr bilan ro'yxat shaklini ochishingiz mumkin. Tanlash parametri strukturani ifodalaydi. Elementlarning nomlari tanlov amalga oshiriladigan maydonlarning nomlariga mos keladi va qiymatlar tanlov qiymatlarini o'z ichiga oladi. Bu dinamik roʻyxat boshqariladigan shakl kengaytmasi variantidir. Ya'ni, asosiy atributi tip atributi bo'lgan shakllar uchun mavjud Dinamik ro'yxat, masalan, ro'yxat shakllari va tanlash shakllari.

Shaklni ochishda ko'rsatilgan maydon asosida tanlov amalga oshiriladi. Masalan, quyidagi misolda hisob-fakturalar ro'yxati Raqam maydoni bo'yicha tanlab ochiladi, 333 ga teng.

Tanlash qiymati = Yangi tuzilma ("Raqam", "333");

SelectionParameters = Yangi tuzilma ("Tanlash", SelectionValue);

OpenForm("Hujjat. Qabul qilingan faktura. Ro'yxat shakli", Tanlash imkoniyatlari);

2. Roʻyxat shaklini parametrlarsiz ochishingiz mumkin:

OpenForm("Hujjat.Invoice.ListForm");

Va keyin, faktura ro'yxati shaklining voqea ishlov beruvchisida Qachon CreatedOnServer shaklning asosiy atributi bo'lgan dinamik ro'yxatda tanlov yaratadigan kodni yozing:

&Serverda

OnServerda yaratilgan protsedura (muvaffaqiyatsizlik, standart ishlov berish)

Tanlash elementi = List.Selection.Elements.Add(Type("DataComposition Tanlash Elementi"));

SelectionElement.LeftValue = NewDataCompositionField("Raqam");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = rost;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

EndProcedure

Ushbu usulning afzalliklari shundaki, tanlov uchun Taqqoslash turi birinchi holatda bo'lgani kabi nafaqat Teng, balki Ko'proq, Kamroq va boshqalarni ham o'rnatishi mumkin.

Ammo bu usul ham juda muhim kamchilikka ega: bu tanlov bilan forma har doim ochiladi. Uni qayerdan chaqirishsa. Shuning uchun bu shakl asosiy sifatida belgilanmasligi kerak. Va agar, shunga qaramay, bu asosiy bo'lsa, tanlovni o'rnatishdan oldin, ushbu shakl qaerdan ochilishini tahlil qilish kerak. Masalan, shakl parametrlarini tahlil qilish.

3. Nihoyat, tanlash sharti dinamik ro'yxat uchun ma'lumotlarni tanlaydigan maxsus so'rovga joylashtirilishi mumkin. Misol uchun, biz elementlar ro'yxatida ta'kidlangan elementni o'z ichiga olgan hisob-fakturalar ro'yxatini ochishimiz kerak.

Buning uchun elementlar ro'yxati ko'rinishida buyruq va tegishli tugmani yarating Qabul qilingan fakturalar.

Keling, ushbu buyruq uchun ijro ishlovchisini quyidagicha to'ldiramiz:

&OnClient

Protsessual tushumlar hisob-fakturalar (buyruq)

ListForm = GetForm ("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

EndProcedure

Ushbu ishlov beruvchida biz hisob-fakturalar ro'yxati uchun shaklni olamiz va elementlar ro'yxatidagi joriy elementga havolani FilterByProduct forma parametriga o'tkazamiz va ushbu parametr bilan shaklni ochamiz.

Keyin hujjatlar ro'yxati shaklini yaratamiz Sotib olish fakturasi va FilterByProduct forma atributini yarating, biz uni ochishda forma parametri sifatida foydalanamiz. Endi List formasining asosiy atributining xossalar palitrasini ochamiz. Keling, bayroqni o'rnatamiz CustomRequest va qatorda Ro'yxatni sozlash Ochish-ni bosing.

So'rov maydoniga quyidagi so'rov matnini kiriting:

TANLANG

Hujjatni qabul qilish raqami,

Hujjatni qabul qilish hisob-fakturasi.Sana

FROM

Document.ReceiptInvoice DocumentReceiptInvoice AS

QAYERDA

Hujjatni qabul qilish Invoice.Mahsulotlar.Mahsulot = &Mahsulot

So'rovda biz FilterBy Item hisob-faktura ro'yxati shakli parametridagi elementlar ro'yxatidagi joriy qatorga havolani oladigan element parametridan foydalanamiz. Buni amalga oshirish uchun OnOpen list formasi hodisasi ishlovchisida Mahsulot so‘rovi parametrining qiymatini belgilash uchun kod yozamiz:

&OnClient

Ochilish tartibi (muvaffaqiyatsizlik)

List.Parameters.SetParameterValue("Mahsulot", FilterByMahsulot);

EndProcedure

Bu yerga Roʻyxat. Variantlar List atributi uchun dinamik roʻyxat soʻrovi parametrlari roʻyxati. Mahsulot parametrining qiymati FilterByProduct forma parametrining qiymatiga teng o'rnatiladi.

Natijada, bir tugmani bosish orqali Qabul qilingan fakturalar ob'ektlar ro'yxati shaklida biz faqat ro'yxatda hozirda tanlangan elementni o'z ichiga olgan hisob-fakturalar ro'yxatini olamiz.

3-variantning demo namunasi 1CITS/EXE/FAQ/OpenFormWithSelection.dt katalogida joylashgan. Misol 8.2.9.356 platforma versiyasida bajarildi.

Oldindan o'rnatilgan tanlov bilan ro'yxat shaklini ochishning bir necha yo'li mavjud. Keling, ularni ko'rib chiqaylik:

  1. Birinchi yo'l ya'ni formani ochishda siz forma parametrini o'rnatishingiz mumkin Tanlash, va ushbu parametr bilan ro'yxat shaklini oching. Parametr Tanlash strukturani ifodalaydi. Elementlarning nomlari tanlov qilingan maydonlarning nomlariga mos keladi va qiymatlar qiymatlarni o'z ichiga oladi.
    tanlash Bu dinamik roʻyxat boshqariladigan shakl kengaytmasi variantidir. Ya'ni, asosiy atributi tip atributi bo'lgan shakllar uchun mavjud Dinamik ro'yxat, masalan, ro'yxat shakllari va tanlash shakllari.

Shaklni ochishda ko'rsatilgan maydon asosida tanlov amalga oshiriladi. Masalan, quyidagi misolda hisob-fakturalar ro'yxati "OAJ Shoxlar va Tuyoqlar" ga teng kontragent maydonini tanlash bilan ochiladi.

Tanlov qiymati = Yangi tuzilma (“Qarshi tomon” , "Shoxlar va tuyoqlar" OAJ);
Tanlash opsiyalari= Yangi tuzilma ("Tanlash", SelectionValue);
OpenForm (“Hujjat. Kvitansiya hisob-fakturasi. Roʻyxat shakli”, Tanlash opsiyalari);

2. Roʻyxat shaklini parametrlarsiz ochishingiz mumkin:

OpenForm (“Hujjat. Kvitansiya hisob-fakturasi. Roʻyxat shakli”);

Va keyin, faktura ro'yxati shaklining voqea ishlov beruvchisida Qachon CreatedOnServer shaklning asosiy atributi bo'lgan dinamik ro'yxatda tanlov yaratadigan kodni yozing:

&Serverda
Jarayon Qachon CreatedOnServer(Rad etish, Standart ishlov berish)
Tanlash elementi = Ro'yxat. Tanlash. Elementlar. Qo'shish (turi
(“DataCompositionSelectionElement”));
Tanlash elementi .LeftValue = Yangi Ma'lumotlar joylashuvi maydoni("Hujjat summasi");
Tanlash elementi. Taqqoslash ko'rinishi = Taqqoslash ViewData Layout. Ko'proq ;
Tanlash elementi. foydalanish = rost;
Tanlash elementi. RightValue = 150000;
EndProcedure

Ushbu usulning afzalliklari shundaki Taqqoslash tanlash nafaqat o'rnatilishi mumkin Teng, birinchi holatda bo'lgani kabi, va Ko'proq, Ozroq va h.k.

Ammo bu usul ham juda muhim kamchilikka ega: bu tanlov bilan forma har doim ochiladi. Uni qayerdan chaqirishsa. Shuning uchun bu shakl asosiy sifatida belgilanmasligi kerak. Va agar, shunga qaramay, bu asosiy bo'lsa, tanlovni o'rnatishdan oldin, ushbu shakl qaerdan ochilishini tahlil qilish kerak. Masalan, shakl parametrlarini tahlil qilish.

3. Va nihoyat, tanlov sharti maxsus so'rovga joylashtirilishi mumkin, bu dinamik ro'yxat uchun ma'lumotlarni tanlaydi. Misol uchun, biz elementlar ro'yxatida ta'kidlangan elementni o'z ichiga olgan hisob-fakturalar ro'yxatini ochishimiz kerak.

Buning uchun elementlar ro'yxati ko'rinishida buyruq va tegishli tugmani yarating Sarf materiallari hisob-fakturalari

Keling, ushbu buyruq uchun ijro ishlovchisini quyidagicha to'ldiramiz:

&OnClient
Jarayon Sarf materiallari hisob-fakturalari(jamoa)
ListForm = GetForm ("Document.Invoice.ListForm");
Ro'yxat shakli. FilterByProduct = Elementlar. Ro'yxat. CurrentRow;
Ro'yxat shakli. Ochiq();
EndProcedure

Ushbu ishlov beruvchida biz hisob-fakturalar ro'yxati shaklini olamiz va uni forma parametriga o'tkazamiz Mahsulot bo'yicha filtrlash ob'ektlar ro'yxatidagi joriy elementga havola qiling va ushbu parametr bilan shaklni oching.
Keyin hujjatlar ro'yxati shaklini yaratamiz Sotish hisob-fakturasi va shakl atributlarini yarating Mahsulot bo'yicha filtrlash, biz uni ochishda forma parametri sifatida foydalanamiz. Endi asosiy forma atributlarining xossalar palitrasini ochamiz Roʻyxat. Keling, bayroqni o'rnatamiz CustomRequest va ichida
chiziq Ro'yxatni sozlash bosamiz Ochiq.

Dalada So'rov Quyidagi so'rov matnini kiritamiz:

TANLANG

Hujjatni qabul qilish raqami,
Hujjatni qabul qilish hisob-fakturasi.Sana
FROM
Document.ReceiptInvoice DocumentReceiptInvoice AS
QAYERDA
Hujjatni qabul qilish Invoice.Mahsulotlar.Mahsulot = &Mahsulot

So'rovda biz parametrdan foydalanamiz Mahsulot, unga schyot-fakturalar ro'yxati shakli atributida joylashgan elementlar ro'yxatidagi joriy qatorga havola yuboriladi Mahsulot bo'yicha filtrlash. Buning uchun ro'yxat formasida hodisa ishlov beruvchisi Ochilishda Mahsulot so'rovi parametrining qiymatini belgilash uchun kodni yozamiz:

&OnClient
Ochilish tartibi (muvaffaqiyatsizlik)
Ro'yxat. Variantlar. SetParameterValue("Mahsulot", FilterByProduct);
EndProcedure

Bu yerga Roʻyxat. Variantlar— bu List atributi uchun dinamik roʻyxat soʻrovi parametrlari roʻyxati. Parametr qiymati Mahsulot forma parametrining qiymatiga teng o'rnatiladi Mahsulot bo'yicha filtrlash. Natijada, bir tugmani bosish orqali Hisob-fakturalar ob'ektlar ro'yxati shaklida biz faqat ro'yxatda hozirda tanlangan elementni o'z ichiga olgan hisob-fakturalar ro'yxatini olamiz.

— bu List atributi uchun dinamik roʻyxat soʻrovi parametrlari roʻyxati.

Uchun 1s 8.2 da tanlov bilan tanlov shaklini oching(muntazam shakllar), biz ba'zi harakatlarni bajarishimiz kerak. Biz birinchi bo'lib olamiz. Shundan so'ng biz tanlovni o'rnatamiz va uni dasturiy ravishda ochamiz, bu erda kod misoli:

Bir nechta qiymatlar bilan 1C 8.2 kiritish maydonidagi shaklda tanlash

Yuqoridagi misolda biz ko'rib chiqdik tanlov formasida tanlovni qanday o'rnatish kerak muayyan qiymat bo'yicha. Keling, bir nechta qiymatlarni almashtirishingiz kerak bo'lgan vaziyatni ko'rib chiqaylik, bu, masalan, massiv yoki so'rov natijasidan tushirilgan bo'lishi mumkin. Bu 1c kiritish maydonidagi tanlovdir ko'p ma'noga ega.

Birinchidan, biz tanlov shaklini olamiz, parametrlarda "Element" (egasi) ni o'tkazamiz, tanlash rejimi bayrog'ini o'rnatamiz. Keyin biz qiymatlar ro'yxatini va massivni yaratamiz, shuni ta'kidlaymizki, ro'yxatda taqqoslash turini o'rnatishda tanlov sifatida ob'ekt faqat turga ega bo'lishi mumkin. ListValues. Biz massivga elementlar qo'shamiz, so'ngra ushbu massivni keyinchalik tanlovda o'rnatadigan Qiymatlar ro'yxatiga yuklaymiz. Shuningdek, ushbu tanlovdan foydalanish uchun bayroqni yoqishni va Taqqoslash turini o'rnatishni unutmang.

1C 8.3 da shakldagi kiritish maydonida tanlovni o'rnatish, Tanlashning boshlanishi

Endi ko'rib chiqaylik 1C 8.3 da boshqariladigan shaklda kiritish maydonida tanlash. Shaklda bizni qiziqtirgan elementni topamiz, unda biz tanlovni o'rnatamiz, bizning holatlarimizda bu "Tashkilot" maydoni. Biz "Tanlovning boshlanishi" hodisasini topamiz, kattalashtiruvchi oynani bosing va o'zimizni protsedurada topamiz. Tanlov ma'lumotlari parametrini ko'ramiz, bu parametr ValueList turiga tegishli. Tanlovni kerakli elementlar bilan cheklash uchun biz qiymatlar ro'yxatini to'ldirishimiz kerak. Biz elementlarni faqat serverda tanlashimiz mumkin, shuning uchun biz &OnServer kompilyatsiya direktivasi bilan protsedura yaratamiz. Ushbu protsedurada Tanlash ma'lumotlarini to'ldiring.