1c как да отворите формуляр с селекция. Как да отворя списък със списък с някакъв избор? Можете да отворите списък без параметри

Как да отворя списък със списък с някакъв избор?

Има няколко начина за отваряне на формуляр със списък с някакъв предварително зададен избор. Нека ги разгледаме по ред:

1. Първият начин е, че когато отваряте формуляра, можете да зададете параметъра на формуляра Selection и да отворите списъка с този параметър. Параметърът за избор е структура. Имената на елементите съответстват на имената на полетата, чрез които се прави селекцията, а стойностите съдържат стойностите на селекцията. Това е опция за управлявано разширение на формуляр динамичен списък. Тоест съществува за форми, чийто основен атрибут е атрибут на типа Динамичен списък, като например списъчни формуляри и избрани формуляри.

В процеса на отваряне на формуляра филтърът ще бъде зададен за посоченото поле. Например, следният пример отваря списък с разписки, филтрирани по полето Номер, което е 333.

SelectionValue = Нова структура ("Число", "333");

SelectionParameters = Нова структура ("Selection", SelectionValue);

OpenForm("Document.Invoice.ListForm",ChoiceParameters);

2. Можете да отворите списъка без параметри:

OpenForm("Document.Invoice.ListForm");

И след това в манипулатора на събития на формуляра за списък с разписки OnCreateOnServerнапишете код, който създава селекция в динамичен списък, който е основният атрибут на формата:

&На сървъра

Процедура при CreationOnServer(Failure, StandardProcessing)

Елемент за избор = Списък. Избор. Елементи. Добавяне(Тип("Елемент за избор на състав на данни"));

SelectionElement.LeftValue = New DataCompositionField("Число");

SelectionItem.ComparisonType = DataCompositionComparisonType.More;

SelectionItem.Use = true;

SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;

SelectionItem.RightValue = "000000001";

EndProcedure

Предимства този методв това, че Типът сравнение на селекцията може да бъде зададен не само Равно на, както в първия случай, но и Повече, По-малко и т.н.

Но този метод има много съществен недостатък: с този избор формулярът винаги ще се отваря. Откъдето и да я повикат. Следователно тази форма не трябва да се определя като основна. И ако все пак е основният, тогава преди да зададете селекцията, е необходимо да предоставите някакъв вид анализ откъде се отваря тази форма. Например чрез разбор на параметри на формуляра.

3. И накрая, условието за избор може да бъде поставено в произволна заявка, която избира данни за динамичен списък. Например, трябва да отворим списък с входящи фактури, които съдържат артикул, избран в списъка с артикули.

За да направите това, под формата на списък с елементи, ще създадем команда и бутон, съответстващ на нея Приходни фактури.

Попълнете манипулатора за изпълнение за тази команда, както следва:

&При клиент

Процедура за фактуриране (команда)

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

ListForm.FilterByItem = Items.List.CurrentRow;

ListForm.Open();

EndProcedure

В този манипулатор получаваме формата на списъка с входящи фактури и предаваме връзка към текущия артикул в списъка с артикули към параметъра на формуляра FilterByItem и отваряме формуляра с този параметър.

След това ще създадем формуляр за списък с документи Фактура за покупкаи създайте атрибут на формуляр FilterByProduct, който ще използваме като параметър на формуляр, когато се отвори. Сега нека отворим палитрата със свойства на основния атрибут на формата List. Да поставим знамето ArbitaryRequestи на линия Персонализиране на списъкащракнете върху Отвори.

В полето Заявка въведете следния текст на заявката:

ИЗБИРАМ

DocumentInvoice Invoice.Number,

ДокументВходяща фактура.Дата

ОТ

Document.Incoming Invoice КАТО DocumentIncoming Invoice

КЪДЕТО

DocumentReceipt Invoice.Goods.Item = &Артикул

В заявката използваме параметъра Product, на който ще бъде предадена връзка към текущия ред в списъка с артикули, съдържащ се в параметъра на формуляра на списъка с входящи фактури FilterByItem. За да направите това, в манипулатора на събития на формуляра за списък OnOpen напишете кода, за да зададете стойността на параметъра на заявката Продукт:

&При клиент

Процедура при отваряне (неуспех)

List.Parameters.SetParameterValue("Елемент", FilterByItem);

EndProcedure

Тук Списък.Параметрие списък с параметри на заявка за динамичен списък за атрибута List. Стойността на параметъра Item е зададена равна на стойността на параметъра на формуляра FilterByItem.

В резултат на това при натискане на бутона Приходни фактурипод формата на списък с артикули ще получим списък само с онези входящи фактури, които съдържат артикула, който в момента е избран в списъка с артикули.

Демонстрация за 3-та опция се намира в директорията 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Примерът се изпълнява на платформа версия 8.2.9.356.

Код 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Прието";
DirectoryList.Selection.Status.Set();

За 1C 8.2:
Има няколко начина за отваряне на формуляр със списък с някакъв предварително зададен избор. Нека ги разгледаме по ред:

1. Първият начин е, че при отваряне на формуляра можете да зададете параметъра на формуляра Избор и да отворите формата на списъка с този параметър. Параметърът за избор е структура. Имената на елементите съответстват на имената на полетата, чрез които се прави селекцията, а стойностите съдържат стойностите на селекцията. Това е опция за разширение на формуляр, управляван от динамичен списък. Тоест съществува за формуляри, чийто основен атрибут е атрибут от типа динамичен списък, например за списъчни формуляри и формуляри за избор.

В процеса на отваряне на формуляра филтърът ще бъде зададен за посоченото поле.
Код 1C v 8.2 UE // Например в следващия пример се отваря списък с входящи фактури с селекция от полето Номер, равно на 333.
SelectionValue = Нова структура ("Число", "333");
SelectionParameters = Нова структура ("Selection", SelectionValue);

OpenForm("Document.Invoice.ListForm",ChoiceParameters);

// Например, следният пример отваря списък с фактури
// с селекция от полето Контрагент, равно на "АД Рога и Копита".
SelectionValue \u003d Нова структура („Контрагент“, „JSC Horns and Hooves“);
SelectionParameters = Нова структура ("Selection", SelectionValue);
OpenForm("Document.Invoice.ListForm",параметри за избор);

2. Можете да отворите списъка без параметри:
Код 1C v 8.2 UE OpenForm("Document.Invoice.ListForm");

И след това, в манипулатора на събития на формуляра на списъка с входящи фактури, когато е създаден на сървъра, напишете кода, който създава селекция в динамичния списък, който е основният атрибут на формуляра:
Код 1C v 8.2 UE &OnServer

Елемент за избор = Списък. Избор. Елементи. Добавяне(Тип("Елемент за избор на състав на данни"));
SelectionElement.LeftValue = New DataCompositionField("Число");

SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;
SelectionItem.RightValue = "000000001";
EndProcedure

&На сървъра
Процедура при CreationOnServer(Failure, StandardProcessing)
ElementFilter = List.Filter.Items.Add(Тип
("Елемент за избор на композиция на данни");
SelectionElement.LeftValue = New DataCompositionField ("DocumentAmount");
SelectionItem.ComparisonType = DataCompositionComparisonType.More;
SelectionItem.Use = true;
Selection Element.RightValue = 150000;
EndProcedure

Предимството на този метод е, че ComparisonTypeизборът може да бъде зададен не само Equal, както в първия случай, но и More, Less и т.н.

Но този метод има много съществен недостатък: с този избор формулярът винаги ще се отваря. Откъдето и да я повикат. Следователно тази форма не трябва да се определя като основна. И ако все пак е основният, тогава преди да зададете селекцията, е необходимо да предоставите някакъв вид анализ откъде се отваря тази форма. Например чрез разбор на параметри на формуляра.

3. И накрая, условието за избор може да бъде поставено в произволна заявка, която избира данни за динамичен списък. Например, трябва да отворим списък с входящи фактури, които съдържат артикул, избран в списъка с артикули.

За целта във формата на списъка с артикули ще създадем команда и съответния бутон Входящи фактури.

Попълнете манипулатора за изпълнение за тази команда, както следва:
Код 1C v 8.2 UE & OnClient
Процедура за фактуриране (команда)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByItem = Items.List.CurrentRow;
ListForm.Open();

EndProcedure

В този манипулатор получаваме формата на списъка с входящи фактури и предаваме връзка към текущия артикул в списъка с артикули към параметъра на формуляра FilterByItem и отваряме формуляра с този параметър.

След това ще създадем формуляр за списък с документи Входяща фактура и ще създадем атрибут на формуляра FilterByProduct, който ще използваме като параметър на формуляра, когато бъде отворен. Сега нека отворим палитрата със свойства на основния атрибут на формата List. Задайте флага ArbitraryRequestи щракнете върху реда за настройки на списъка Отворете.

В полето Заявка въведете следния текст на заявката:
Код 1C v 8.2 UE SELECT
DocumentInvoice Invoice.Number,
ДокументВходяща фактура.Дата
ОТ
Document.Incoming Invoice КАТО DocumentIncoming Invoice
КЪДЕТО
DocumentReceipt Invoice.Goods.Item = &Артикул

В заявката използваме параметъра Продукт, на който ще бъде предадена връзка към текущия ред в списъка с продукти, съдържащ се в параметъра на формуляра на списъка с входящи фактури FilterBy Product. За да направите това, в манипулатора на събитието на формуляра за списък OnOpening напишете кода, за да зададете стойността на параметъра за заявка за продукт:
Код 1C v 8.2 UP
&При клиент
Процедура при отваряне (неуспех)

List.Parameters.SetParameterValue("Елемент", FilterByItem);

EndProcedure

Тук Списък.Параметрие списък с параметри на заявка за динамичен списък за атрибута List. Стойността на параметъра Item е зададена равна на стойността на параметъра на формуляра FilterByItem.

В резултат на това чрез натискане на бутона Фактури във формата за списък с артикули ще получим списък само с тези входящи фактури, които съдържат артикула, избран в момента в списъка с артикули.

Информацията е взета от сайта

Има няколко начина за отваряне на формуляр със списък с някакъв предварително зададен избор. Помислете за тях:

  1. Първи начине, че когато отваряте формуляра, можете да зададете параметъра на формуляра Избори отворете формуляр със списък с този параметър. Параметър Изборе структура. Имената на елементите съответстват на имената на полетата, чрез които се прави изборът, а стойностите съдържат стойностите
    селекция. Това е опция за разширение на формуляр, управляван от динамичен списък. Тоест съществува за форми, чийто основен атрибут е атрибут на типа Динамичен списък, като например списъчни формуляри и избрани формуляри.

В процеса на отваряне на формуляра филтърът ще бъде зададен за посоченото поле. Например, в следващия пример се отваря списък с изходящи фактури с селекция от полето Контрагент, равно на „АД Рога и Копита“.

Стойност на избор = Нова структура („Изпълнител“ , "АД Рога и Копита");
Опции за избор= Нова структура ("Филтър", FilterValue);
OpenForm ("Документ. Фактура. Формуляр за списък", Опции за избор);

2. Можете да отворите списъка без параметри:

OpenForm("Document.Invoice.ListForm");

И след това в манипулатора на събития на формуляра за списък с разписки OnCreateOnServer напишете код, който създава селекция в динамичен списък, който е основният атрибут на формата:

&На сървъра
Процедура OnCreateOnServer(Отказ, Стандартна обработка)
SelectionItem = Списък. Избор. Елементи . Добавяне (тип
("Елемент за избор на композиция на данни");
SelectionItem .LeftValue = Нов DataCompositionField(„Сума на документа“);
Избор на елементи. Сравнение на типове = ViewComparisonCompositionData. Повече ▼ ;
Избор на елементи. използване = вярно;
Избор на елементи. RightValue = 150000;
EndProcedure

Предимствата на този метод са, че KindComparisonизборът може да бъде зададен не само Се равнява, както в първия случай, и | Повече ▼, По-малкои т.н.

Но този метод има много съществен недостатък: с този избор формулярът винаги ще се отваря. Откъдето и да я повикат. Следователно тази форма не трябва да се определя като основна. И ако все пак е основният, тогава преди да зададете селекцията, е необходимо да предоставите някакъв вид анализ откъде се отваря тази форма. Например чрез разбор на параметри на формуляра.

3. И накрая, условието за избор може да бъде поставено в произволна заявка A, който избира данни за динамичния списък. Например, трябва да отворим списък с фактури, които съдържат артикул, избран в списъка с артикули.

За да направите това, под формата на списък с елементи, ще създадем команда и бутон, съответстващ на нея Фактури за консумативи

Попълнете манипулатора за изпълнение за тази команда, както следва:

&При клиент
Процедура Фактури за консумативи(Отбор)
ListForm = GetForm("Document.Invoice.ListForm");
FormList. FilterByProduct = Артикули. списък . CurrentLine ;
FormList. отворено();
EndProcedure

В този манипулатор получаваме формата на списъка с входящи фактури и го предаваме на параметъра на формуляра FilterByProductвръзка към текущия елемент в списъка с артикули и отваряне на формуляра с този параметър.
След това ще създадем формуляр за списък с документи Фактураи създайте подпори за формуляри FilterByProduct, който ще използваме като параметър на формуляра, когато се отвори. Сега нека отворим палитрата със свойства на основния атрибут на формуляра списък. Да поставим знамето ArbitaryRequestи в
линия Персонализиране на списъкаНатиснете Отворете.

В полето Заявкавъведете следния текст на заявката:

ИЗБИРАМ

DocumentInvoice Invoice.Number,
ДокументВходяща фактура.Дата
ОТ
Document.Incoming Invoice КАТО DocumentIncoming Invoice
КЪДЕТО
DocumentReceipt Invoice.Goods.Item = &Артикул

В заявката използваме параметъра Продукт, в който ще бъде прехвърлена връзката към текущия ред в списъка с артикули, съдържащ се в атрибута на формата на списъка с товарителници FilterByProduct. За да направите това, в манипулатора на събитието на формуляра за списък На откриванетоНека напишем кода, за да зададем стойността на параметъра за заявка за продукт:

&При клиент
Процедура при отваряне (неуспех)
списък . Настроики . SetParameterValue(„Продукт“, FilterByProduct);
EndProcedure

Тук Списък.Параметрие списък с параметри на заявка за динамичен списък за атрибута List. Стойност на параметъра Продуктзададен на стойността на параметъра на формуляра FilterByProduct. В резултат на това при натискане на бутона Разходни фактурипод формата на списък с артикули ще получим списък само с онези входящи фактури, които съдържат артикула, който в момента е избран в списъка с артикули.

е списък с параметри на заявка за динамичен списък за атрибута List.

Този код ви позволява да отворите списък с документи със зададен филтър, можете също да отворите списък с елементи на директория с желания филтър

Код 1C v 8.2 UE Form = OpenForm("Document.Invoice.Form.ListForm"); //Отворете формата
FilterOwner =Form.List.Filter.Items.Add(Type("DataCompositionFilterItem")); //Добавяне на селекция
SelectionOwner.ComparisonType = DataCompositionComparisonType.Equal; //Как ще сравним
SelectionOwner.Use = true; // Поставете отметка в квадратчето за използване на New DataCompositionField("Номенклатура")
SelectionOwner.LeftValue = Ново поле за съставяне на данни ("Акаунт"); //По кои реквизити ще направим селекция
SelectionOwner.RightValue = Object.Account; // И самата стойност за избор

Да се отворете списък със списък с предварително зададен изборизползвайте следните методи:

Първи начинсе крие във факта, че когато отваряте формуляра, можете да зададете параметъра на формуляра Selection и да отворите списъка с този параметър.

Параметърът за избор е структура. Имената на елементите съответстват на имената на полетата, чрез които се прави селекцията, а стойностите съдържат стойностите на селекцията. Това е опция за разширение на формуляр, управляван от динамичен списък. Тоест съществува за формуляри, чийто основен атрибут е атрибут от типа DynamicList, например списъчни форми и форми за избор.

Например, следният пример отваря списък с разписки, филтрирани по полето Номер, което е 333.

Код 1C v 8.2 UE SelectionValue = Нова структура ("Номер", "333");
SelectionParameters = Нова структура ("Selection", SelectionValue);
OpenForm("Document.Invoice.ListForm",ChoiceParameters);

Втори начин

Можете да отворите формуляр със списък без параметри:

Код 1C v 8.2 UE OpenForm("Document.Invoice.ListForm");

И след това, в манипулатора на събития на формуляра на списъка с входящи фактури, когато е създаден на сървъра, напишете кода, който създава селекция в динамичния списък, който е основният атрибут на формуляра:

Код 1C v 8.2 UE &OnServer
Процедура при CreationOnServer(Failure, StandardProcessing)
Елемент за избор = Списък. Избор. Елементи. Добавяне(Тип("Елемент за избор на състав на данни"));
SelectionElement.LeftValue = New DataCompositionField("Число");
SelectionItem.ComparisonType = DataCompositionComparisonType.More;
SelectionItem.Use = true;
SelectionItem.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;
SelectionItem.RightValue = "000000001";
EndProcedure

Предимствата на този метод са, че Типът сравнение на селекцията може да бъде зададен не само Равно, както в първия случай, но и По-голямо, По-малко и т.н.

Но този метод има много съществен недостатък: с този избор формулярът винаги ще се отваря. Откъдето и да я повикат. Следователно тази форма не трябва да се определя като основна. И ако все пак е основният, тогава преди да зададете селекцията, е необходимо да предоставите някакъв вид анализ откъде се отваря тази форма. Например чрез разбор на параметри на формуляра.

Трети начин

И накрая, условието за избор може да бъде поставено в произволна заявка, която избира данни за динамичен списък.

Например, трябва да отворим списък с входящи фактури, които съдържат артикул, избран в списъка с артикули.

За целта във формата на списъка с артикули ще създадем команда и съответния бутон Входящи фактури.

Попълнете манипулатора за изпълнение за тази команда, както следва:

Код 1C v 8.2 UE & OnClient
Процедура за фактуриране (команда)
ChoiceParameters = Нова структура ("FilterByItem", Items.List.CurrentLine);
OpenForm("Document.Invoice.ListForm",ChoiceParameters);
EndProcedure

В този манипулатор отваряме формуляра за списъка с входящи фактури, като предаваме връзка към текущия артикул в списъка с артикули към параметъра на формуляра FilterByItem.

След това ще създадем формуляра за списък с документи за фактура и ще създадем параметъра за формуляр FilterByItem, който ще използваме, за да отворим формуляра с необходимия избор.

Сега нека отворим палитрата със свойства на основния атрибут на формата List. Задайте флага CustomRequest и щракнете върху Отваряне в реда за настройки на списъка.

В полето Заявка въведете следния текст на заявката:

Код 1C v 8.2 UE SELECT
DocumentInvoice Invoice.Number,
ДокументВходяща фактура.Дата
ОТ
Document.Incoming Invoice КАТО DocumentIncoming Invoice
КЪДЕТО
DocumentReceipt Invoice.Goods.Item = &Артикул

В заявката използваме параметъра Продукт, на който ще бъде предадена връзка към текущия ред в списъка с продукти, съдържащ се в параметъра на формуляра на списъка с входящи фактури FilterBy Product.

За да направите това, в манипулатора на събития на формуляра за списък OnCreateAtServer напишете кода, за да зададете стойността на параметъра за заявка за продукт:

Код 1C v 8.2 UE & OnClient
Процедура при отваряне (неуспех)
List.Parameters.SetParameterValue("Product", Parameters.FilterByProduct);
EndProcedure

Тук List.Parameters е списък с параметри на заявка за динамичен списък за атрибута List. Стойността на параметъра Item е зададена равна на стойността на параметъра на формуляра FilterByItem.

В резултат на това чрез натискане на бутона Фактури във формата за списък с артикули ще получим списък само с тези входящи фактури, които съдържат артикула, избран в момента в списъка с артикули.

Да се отворете формуляр за избор с избор в 1s 8.2 (редовни форми), трябва да извършим някои действия. Ще го вземем първи. След това ще зададем селекцията и ще я отворим програмно, ето примерен код:

Избор във формуляра в полето за въвеждане 1C 8.2 с няколко стойности

В горния пример разгледахме как да зададете избор във формуляра за изборпо конкретна стойност. Сега нека разгледаме ситуация, в която трябва да замените няколко стойности, например, може да бъде както масив, така и разтоварване от резултат от заявка. Това е избор в полето за въвеждане 1sс множество значения.

Първо получаваме формуляра за избор, предаваме "Елемента" (собственик) в параметрите, задаваме флага за режим на избор. След това създаваме списък със стойности и масив, отбелязваме, че като селекция, когато е зададен тип сравнение в списъка, може да има само обект с типа Списък със стойности. Добавяме елементи към масива, след което зареждаме този масив в списъка със стойности, който в резултат задаваме в селекцията. Освен това не забравяйте да активирате флага за използване на тази селекция и да зададете Тип сравнение.

Задаване на избора в полето за въвеждане на формуляра в 1C 8.3, събитието StartChoice

Сега помислете избор в полето за въвеждане на управлявана формав 1C 8.3. Нека намерим във формата елемента, който ни интересува, в който ще зададем селекцията, в нашия случай това е полето "Организация". Намираме събитието "StartChoice", кликваме върху лупата и се озоваваме в процедурата. Виждаме параметъра ChoiceData, този параметър е от тип ValueList. За да ограничим избора до необходимите елементи, трябва да попълним Списък със стойности. Можем да избираме елементи само на сървъра, така че създаваме процедура с директивата за компилиране &AtServer. В тази процедура ние попълваме данните за избор.