За стомашно-чревни заболявания

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

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

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

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

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

Сега нека помислим избор в полето за въвеждане на управлявана форма в 1C 8.3. Нека намерим във формуляра елемента, който ни интересува, в който ще зададем селекцията, в нашия случай това е полето „Организация“. Намираме събитието „Начало на избора“, кликваме върху лупата и се озоваваме в процедурата. Виждаме параметъра Selection Data; този параметър е от тип ValueList. За да ограничим избора до необходимите елементи, трябва да попълним Списък със стойности. Можем да избираме елементи само на сървъра, така че създаваме процедура с директивата за компилиране &OnServer. При тази процедура попълнете данните за избор.

/
Разработчици /
Конвенции за кодиране

Задаване на опции за избор и асоциации на опции за избор за обекти с метаданни

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

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

Например, конфигурацията съдържа

  • указател служители, който съдържа подробности ОрганизацияИ Тип служител(изброяване със стойности Основен/Непълно работно време);
  • документ Заповед за приемане, който съдържа подп ОрганизацияИ Служител; докато за реквизита Служителдокумент Заповед за приеманепосочена е връзката на параметъра за избор Подбор.Организацияс реквизит Организация.

Изисква се реализиране на възможност за избор само на ключови служители в зависимост от стойността на функционалната опция SelectOnlyFromEmployeesBasics. За това е необходимо

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

(В същото време задайте реквизита Служителдокумент Заповед за приеманевръзка за избор на параметър Избор. Тип служителняма възможност, т. к реквизит Тип служителв документа Заповед за приеманене съществува.)

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

Добър ден.

Днес ще говорим как да отваряме програмно формуляри за избор в новия управляван интерфейс.

Преди това в „обикновено приложение“ писахме така:

форма = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModal();

Между тези оператори можем да променим свойствата на формата, например да зададем селекцията. Можем да посочим конкретна форма по име. Те биха могли да променят външния му вид чрез достъп до свойствата на елементите на формуляра чрез тяхното име чрез точка (form.Button1.Visibility = False;)

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

Така че да започваме.

1. Най-простият случай е, когато не е необходимо да управляваме селекцията (да задаваме селекции, да подаваме параметри към отворената форма за селекция).

Тъй като формулярите могат да се отварят само на клиента, това ще бъде част от кода от страна на клиента. Ще използваме функцията Въведете стойност(<Значение>, <Подсказка>, <Тип>) . Всъщност всичко е ясно от нейното описание. Връща флага дали потребителят е направил избор; в първия параметър предаваме контейнера, в който ще бъде върната стойността на избора, във втория текст, който ще бъде показан в заглавието на прозореца за избор, в третия масив на видове.

Ето пример за използване:

Променлива SelectTMC;

ArrayTypes = Нов масив;

DescriptionofTypesTMC = NewDescriptionofTypes(Array);

Ако EnterValue(Изберете инвентар, „Изберете артикул“, описание на видовете инвентар), тогава

//Обработка на избраната стойност

endIf;

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

2. Понякога, преди да изберем стойност, трябва да зададем някои селекции и параметри за избор. Например трябва да изберем споразумение за контрагент. Първият метод ще ни отвори всички документи, но трябва да изберем по собственик.

Има два метода за отваряне на формуляри: OpenFormИ OpenFormModal. При първия метод ще отворим формуляра и частта от кода, от който сме отворили формуляра, ще продължи да се изпълнява, без да получи резултата от избора. Резултатът от избора, в зависимост от метода на извикване, ще бъде поставен или в полето за въвеждане, или ще бъде получен в предварително зададената процедура "Обработка на избора".

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

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

И така, нека да разгледаме описанието на процедурата, тя има 4 параметъра. В първия посочваме ред с пълния път до формуляра "Директория. Договори на изпълнители. Формуляр за избор". Във втория посочваме параметрите за избор, повече за тях по-долу. В третото - собственикът, това е форма или поле за избор, което ще получи резултата от избора, ние не го попълваме. Четвъртият параметър също не се използва в нашия случай.

Така че, за прост избор, следният ред ще свърши работа:

&На клиент

Процедура Команда1(Команда)

res = OpenFormModal("Директория. Договори на изпълнители. Форма за избор");

Край на процедурата

Но това е пълен аналог на метод №1 и ще видим форма за избор на всички договори, без избор по собственик. Тези. Това може да стане само ако искаме да посочим името на формата за избор.

За да зададем селекцията, вторият параметър ще ни помогне.

Вторият параметър е от тип "Структура". Като структурни елементи можете да посочите параметри на формуляра, добавени в раздела „параметри“ на формуляра за избор. Тяхната обработка трябва да бъде описана в процедурата Когато е създаден на сървърав модула за формуляр за избор. Това не е добре за нас, защото... Трябва да променя конфигурацията. Можете също да подадете структура за избор с ключа „селекция“ в структурата на параметрите. Тогава всички полета от структурата за избор ще бъдат използвани при избора на списъка с елементи и няма да бъдат достъпни за потребителя нито за преглед, нито за промяна.

В моя пример начертах поле за избор в обработката, което се отнася до атрибута на формуляра за обработка "контрагент"с тип данни " DirectoryLink.Контрагенти". и написа следната част от кода:

&На клиент

Процедура Команда1(Команда)

Селекции = Нова структура ("Собственик", Контрагент);

SelectionParameters = New Structure("Selection", Selection);

res = OpenFormModal("Директория. Договори на изпълнители. Формуляр за избор", Параметри за избор);

Край на процедурата

Това обикновено е достатъчно за решаване на повечето проблеми и не изисква намеса в конфигурацията. Въпреки това във формуляра за избор в процедурата „When CreatedOnServer“ вашият избор може да бъде загубен. Ето защо, преди да използвате този метод, прегледайте тази процедура във формуляра за избор, който отваряте. Лошите разработчици там могат лесно да зададат избора си „по подразбиране“, като забравят да проверят дали изборът е преминат в параметрите за отваряне.

Това е всичко за днес, благодаря ви за вниманието.



Ако забележите грешка, изберете част от текста и натиснете Ctrl+Enter
ДЯЛ: