1c во параметрите за избор, наведете го името на групата. Поставете опции за избор и врски со опции за избор за објекти на метаподатоци. ItemTypeDescription = Нов типопис (низа)

Со цел да се отворете форма за избор со избор во 1s 8.2(редовни форми), треба да извршиме некои дејства. Прво ќе го добиеме. После тоа, ќе го поставиме изборот и ќе го отвориме програмски, еве пример за код:

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

Во примерот погоре, разгледавме како да го поставите изборот на формуларот за изборпо специфична вредност. Сега да ја разгледаме ситуацијата кога треба да замените неколку вредности, на пример, тоа може да биде и низа и истоварување од резултат на барањето. Ова е избор во полето за внесување 1sсо повеќе значења.

Прво, ја добиваме формата за избор, го пренесуваме „Елементот“ (сопственикот) во параметрите, го поставуваме знамето за режим на избор. Потоа создаваме листа на вредности и низа, забележуваме дека како избор кога е поставен типот на споредба во списокот, може да има само објект со типот Список на вредности. Додаваме елементи во низата, а потоа ја вчитуваме оваа низа во Листата на вредности, која, како резултат, ја поставивме во изборот. Исто така, не заборавајте да го овозможите знамето за користење на овој избор и да го поставите Типот на споредба.

Поставување на изборот во полето за внесување на формуларот во 1C 8.3, настанот StartChoice

Сега размислете избор во полето за внесување вклучено управувана формаво 1C 8.3. Ајде да го најдеме на формуларот елементот од нас, во кој ќе го поставиме изборот, во нашиот случај ова е полето "Организација". Го наоѓаме настанот „StartChoice“, кликнуваме на лупата и се наоѓаме во процедурата. Го гледаме параметарот ChoiceData, овој параметар е од типот ValueList. За да го ограничиме изборот на потребните елементи, треба да го пополниме списокот со вредности. Можеме да избереме елементи само на серверот, па креираме процедура со директивата за компилација &AtServer. Во оваа постапка ги пополнуваме Изборните податоци.

/
програмери /
Код конвенции

Поставување параметри за избор и односи на параметри за избор за објекти на метаподатоци

1. Како по правило, ограничувањата за деловна логика како ограничувања за избор треба да бидат исти за сите форми во кои се уредува овој или оној објект. Затоа, се препорачува да се постават параметри за избор и поврзување на параметрите за селекција во својствата на објектите на метаподатоци - во деталите за директориумите, документите итн.

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

На пример, конфигурацијата има

  • директориум Вработените, кој содржи детали ОрганизацијаИ TypeEmployee(набројување со вредности Основни/работник со скратено работно време);
  • документ Нарачајте за прием, кој има реквизити ОрганизацијаИ Вработен; додека за реквизити Вработендокумент Нарачајте за приеммножество однос на параметрите за избор Избор.Организацијасо реквизити Организација.

Потребно е да се имплементира способноста да се изберат само главните вработени, во зависност од вредноста на функционалната опција Изберете Само од основните вработени. За ова е неопходно

  • во форма на документ Нарачајте за приемимплементирајте дополнителни реквизити за форма KindsEmployees,
  • потоа за полето за форма Вработенможе да се воспостави врска со параметар за избор Избор.TypeEmployeeсо реквизити за форма KindsEmployees,
  • додека формата реквизити KindsEmployeesсе пополнува врз основа на анализа на функционалната опција.

(Додека е поставено за реквизити Вработендокумент Нарачајте за приемлинк за параметар за избор Избор.TypeEmployeeнема можност, бидејќи реквизити TypeEmployeeво документ Нарачајте за приемне постои.)

Потоа поставете ја врската за параметарот Избор.Организацијаво својствата на реквизитите Вработендокумент Нарачајте за приеми врски за параметарот Избор.TypeEmployeeво полето за форма на документ Нарачајте за приемќе доведе до фактот дека во 1C: Претпријатиедвете врски со параметрите за избор ќе работат. Така, при изборот на вработен во форма на приемен налог, изборот во списокот на вработени ќе го постави и организацијата пополнета во документот и според типот на вработен, што ќе се определи врз основа на функционалната опција.

Добар ден.

Денес ќе разговараме за тоа како програмски да ги отвориме избраните форми во новиот управуван интерфејс.

Претходно во „редовната апликација“ пишувавме вака:

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

Резултат на избор = form.openModal();

Помеѓу овие изјави, можеме да ги промениме својствата на формата, на пример, да поставиме избор. Можеме да наведеме одредена форма по име. Може да го промени изглед, што се однесува на својствата на елементот во формата со нивното име одделено со точка (form.Button1.Visibility = False;)

Сега имаме управуван интерфејс и сè е поинаку овде. Заседата е во поделбата на кодот на серверски дел и клиентски дел. Можеме да пристапиме до објектите и нивните метаподатоци само на серверот и мора да отвориме формулари на клиентот.

Па ајде да започнеме.

1. Наједноставниот случај е кога не треба да управуваме со изборот (поставување селекции, префрлете ги параметрите во формата за избор што се отвора).

Бидејќи формуларите може да се отворат само на клиентот, ова ќе биде дел од кодот на клиентот. Ќе ја користиме функцијата EnterValue(<Значение>, <Подсказка>, <Тип>) . Всушност, сè е јасно од нејзиниот опис. Враќа знаме дали изборот го направил корисникот, во првиот параметар го пренесуваме контејнерот во кој ќе се врати вредноста на изборот, во вториот текст, кој ќе биде прикажан во насловот на прозорецот за избор, во трета низа типови.

Еве пример за употреба:

Променлива Изберете TMC;

ArrayTypes = Нова низа;

ItemTypeDescription = New TypeDescription(Array);

Ако EnterValue (Избрани стоки и материјали, „Избери ставка“, Опис на видови на стоки и материјали) Потоа

//Обработка на избраната вредност

EndIf;

Ќе додадам дека ако и доделиме вредност на нашата променлива за контејнер пред да ја избереме, тогаш ова ќе биде стандардната вредност. Во овој случај, не можете да формирате низа од типови, типот ќе се земе од вредноста во контејнерот.

2. Понекогаш, пред да избереме вредност, треба да поставиме некои филтри и параметри за избор. На пример, треба да избереме договор за договорна страна. Првиот начин ќе ни ги отвори сите договори, но ние треба да избереме по сопственикот.

Постојат два начина за отворање обрасци: OpenFormИ OpenFormModal. Во првиот метод, ќе ја отвориме формата и кодот од кој го отворивме формуларот ќе продолжи да работи без да го добиеме резултатот од изборот. Резултатот од изборот, во зависност од начинот на повикот, ќе биде сместен или во полето за внесување, или ќе се добие во однапред дефинираната постапка „Обработка на изборот“.

Во нашиот случај, треба да ја внесеме избраната вредност во некоја променлива и да продолжиме со обработката, земајќи ја предвид избраната вредност, без да ја префрлиме контролата на други процедури. Затоа, ни одговара OpenFormModal.

Веднаш ќе направам резервација дека ова е лош начин за веб-интерфејс, затоа што модалните прозорци се отвораат во нов прозорец на прелистувачот кој вообичаено е блокиран. Но, ако на корисникот однапред му се објасни што е што, тогаш мислам дека ќе се справи со овој проблем))

Значи, го гледаме описот на постапката, има 4 параметри. Во првиот, ние одредуваме низа со целосна патека до формата "Директориум. Договори на договори. Формулар за избор". Во втората, ги наведуваме параметрите за избор, за нив подолу. Во третото - сопственикот, ова е формулар или поле за избор што ќе го добие резултатот од изборот, ние не го пополнуваме. Четвртиот параметар исто така не се користи во нашиот случај.

Значи, за едноставен избор, линијата ќе ни одговара:

&Клиент

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

cut = OpenFormModally("Directory.Contracts of Counterparties.ChoiceForm");

Крајна процедура

Но, ова е комплетен аналог на методот #1, и ќе го видиме формуларот за избор на сите договори, без избор од сопственикот. Оние. можеме да го направиме ова само ако сакаме да го наведеме името на избраната форма.

За да го поставите изборот, вториот параметар ќе ни помогне.

Вториот параметар е од типот „Структура“. Како елементи на структурата, можете да ги наведете параметрите на формата додадени на јазичето „параметри“ на формуларот за избор. Нивното ракување треба да се опише во постапката OnCreateOnServerво модулот изберете форма. Ова не е добро за нас, бидејќи. треба да ја измените конфигурацијата. Можете исто така да поминете структура за избор со копчето „избор“ во структурата на параметрите. Тогаш сите полиња од структурата за избор ќе се користат при изборот на списокот на елементи и не се достапни за корисникот ниту за прегледување, ниту за уредување.

Во мојот пример, нацртав поле за избор во обработката, повикувајќи се на реквизит за формуларот за обработка "изведувач"со тип на податок " DirectoryLink.Изведувачи". и го напиша следниов дел од кодот:

&Клиент

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

Избори = Нова структура ("Сопственик", Контрапартија);

SelectionParameters = Нова структура ("Избор", Избори);

cut = OpenFormModally("Directory.Agreements of Counterparties.ChoiceForm",ChoiceParameters);

Крајна процедура

Ова е обично доволно за да се решат повеќето проблеми и не бара интервенција во конфигурацијата. Но, во формуларот за избор во процедурата „OnCreateOnServer“ може да ти се заеба изборот. Затоа, пред да го користите овој метод, прегледајте ја оваа постапка во формуларот за избор што ќе го отворите. Кривите програмери таму можат лесно да го постават својот избор „стандардно“, заборавајќи да проверат дали изборот е пренесен во параметрите за отворање.

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




Врв