1с у параметрах вибору встановити ім'я групи. Встановлення параметрів вибору та зв'язків параметрів вибору об'єктів метаданих. Опис Типів ТМЦ = Новий Опис Типів (Масив)

Для того щоб відкрити форму вибору з відбором 1с 8.2(Звичайні форми), нам потрібно виконати деякі дії. Спершу ми її отримаємо. Після цього виставимо відбір і програмно відкриємо, ось приклад коду:

Відбір на формі у полі введення 1С 8.2 з кількома значеннями

У прикладі вище ми розглянули як встановлювати відбір на формі виборуза конкретним значенням. Тепер давайте розглянемо ситуацію коли потрібно підставити кілька значень, це може бути, наприклад, як масив, так і вивантаження з результату запиту. Це відбір у полі введення 1сз кількома значеннями.

Для початку отримуємо форму вибору, у параметрах передаємо "Елемент" (власника), встановлюємо прапор режиму вибору. Потім створюємо список значень і масив, відзначаємо що як відбір коли встановлюється вид порівняння у списку, може бути об'єкт тільки з типом СписокЗначень. Додаємо елементи в масив, потім цей масив завантажуємо в СписокЗначень, який у результаті ми встановлюємо у відборі. Також не забуваємо увімкнути прапор використання даного відбору, та встановити ВидПорівняння.

Встановлення відбору в полі введення на формі 1С 8.3, подія ПочатокВибору

Тепер розглянемо відбір у полі введення на керованій формів 1С 8.3. Знайдемо на формі елемент, що цікавить нас, в якому ми будемо встановлювати відбір, у нашому випадку це поле «Організація». Знаходимо подію «Початок Вибору», клацаємо на лупу і опиняємось у процедурі. Ми бачимо параметр Дані Вибору, цей параметр має тип СписокЗначень. Для того, щоб обмежити вибір необхідними елементами, нам необхідно заповнити СписокЗначень. Елементи вибрати можемо тільки на сервері, тому створюємо процедуру з директивою компіляції &На сервері. У цій процедурі заповнюємо Дані Вибору.

/
Розробникам /
Угоди під час написання коду

Встановлення параметрів вибору та зв'язків параметрів вибору для об'єктів метаданих

1. Як правило, такі обмеження бізнес-логіки як обмеження вибору мають бути однаковими для всіх форм, в яких редагується той чи інший об'єкт. Тому задавати параметри вибору та зв'язку параметрів вибору рекомендується у властивостях об'єктів метаданих – у реквізитах довідників, документів тощо.

2. Однак можуть бути випадки, коли обмеження вибору можуть залежати від конкретного сценарію роботи. У разі параметри вибору можуть бути уточнені за місцем, у конкретній формі.

Наприклад, у конфігурації є

  • довідник Співробітники, в якому є реквізити Організаціяі Вид Співробітника(перерахування зі значеннями Основний/Сумісник);
  • документ Наказ, в якому є реквізит Організаціяі Співробітник; при цьому для реквізиту Співробітникдокумента Наказзаданий зв'язок параметра вибору Відбір. Організаціяз реквізитом Організація.

Потрібно реалізувати можливість вибору лише основних співробітників залежно від значення функціональної опції ВибратиТількиЗОсновнихСпівробітників. Для цього необхідно

  • у формі документа Наказреалізувати додатковий реквізит форми Види Співробітників,
  • після чого для поля форми Співробітникможе бути встановлений зв'язок параметра вибору Відбір.Від Співробітниказ реквізитом форми Види Співробітників,
  • при цьому реквізит форми Види Співробітниківзаповнюється виходячи з аналізу функціональної опції.

(При цьому встановити для реквізиту Співробітникдокумента Наказзв'язок для параметра вибору Відбір.Від Співробітниканемає можливості, т.к. реквізиту Вид Співробітникау документі Наказне існує.)

Тоді встановлення зв'язку для параметра Відбір. Організаціяу властивостях реквізиту Співробітникдокумента Наказта зв'язку для параметра Відбір.Від Співробітникау полі форми документа Наказпризведе до того, що в режимі 1С:Підприємствабудуть працювати обидва зв'язки параметра вибору. Таким чином, при виборі співробітника у формі наказу про прийом відбір у списку співробітників буде встановлений як за організацією, заповненою в документі, так і за видом співробітника, який буде визначений на підставі функціональної опції.

Добридень.

Сьогодні ми поговоримо про те, як програмно відкривати форми вибору у новому керованому інтерфейсі.

Раніше в " звичайному додатку" ми писали так:

форма = Довідник.номенклатура.ОтриматиФормуВибору();

результатВибору = форма.відкритиМодальНО();

Між цими операторами ми могли змінити властивості форми, наприклад, задати відбір. Ми могли вказати конкретну форму на ім'я. Могли змінювати її зовнішній вигляд, звертаючись до властивостей елемента форми по їх імені через точку (форма. Кнопка1. Видимість = Брехня;)

Тепер ми маємо керований інтерфейс і тут все інакше. Засідка у розділенні коду на серверну частину та клієнтську. Звертатися до об'єктів і їх метаданим ми можемо лише з сервері, а відкривати форми маємо клієнта.

Тож приступимо.

1. Найпростіший випадок, коли нам не потрібно керувати вибором (налаштовувати відбори, передавати параметри в форму вибору).

Оскільки форми можна відкривати тільки на клієнті, це буде клієнтський шматок коду. Користуватися будемо функцією ВвестиЗначення(<Значение>, <Подсказка>, <Тип>) . Власне, з її опису зрозуміло. Повертає вона прапор того, чи був виконаний користувачем вибір, перший параметр ми передаємо контейнер, в який повернеться значення вибору, в другий текст, який відобразиться в заголовку вікна вибору, в третій масив типів.

Ось приклад використання:

Перем ВибТМЦ;

Масив Типів = Новий Масив;

Опис Типів ТМЦ = Новий Опис Типів (Масив);

Якщо ВвестиЗначення(ВибТМЦ, "Виберіть номенклатуру", ОписТипівТМЦ) Тоді

//Обробка обраного значення

КінецьЯкщо;

Додам, що якщо перед вибором присвоїти нашій змінній контейнеру якесь значення, то це буде як значення за замовчуванням. При цьому, можна не формувати масив типів, тип буде взятий зі значення, що лежить в контейнері.

2. Іноді, перед вибором значення, нам потрібно встановити будь-які відбори та параметри вибору. Наприклад, нам потрібно вибрати договір контрагента. Перший спосіб нам відкриє всі догвоори, а нам потрібно з відбором по власнику.

Є два методи для відкриття форм: ВідкритиФормуі ВідкритиФормуМодально. У першому методі ми відкриємо форму і шматок коду, з якого відкрили форму, продовжить виконуватися, не отримавши результату вибору. Результат вибору в залежності від способу дзвінка буде поміщений або в полі введення або отриманий у визначеній процедурі "Обробка Вибору".

У нашому випадку нам потрібно отримати обране значення в якусь змінну і продовжити обробку з урахуванням обраного значення, не передаючи управління в інші процедури. Тому нам підійде ВідкритиФормуМодально.

Відразу зазначу, що це поганий шлях для web-інтерфейсу, т.к. модальні вікна відкриваються у новому вікні браузера, які зазвичай заблоковані. Але якщо користувачеві заздалегідь роз'яснити, що до чого, то я думаю він впорається з цією проблемою))

Отже, дивимося опис процедури, має 4 параметри. У першому ми вказуємо рядок з повним шляхом до форми "Довідник. Договори Контрагентів. Форма Вибору". У другому ми вказуємо параметри вибору, про них трохи нижче. У третій - власника, це форма або поле вибору, яке отримає результат вибору, ми його не заповнюємо. Четвертий параметр у нашому ліку теж не використовується.

Отже, для простого вибору нам підійде рядок:

&На Клієнті

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

рез = ВідкритиФормуМодально("Довідник.ДоговориКонтрагентів.ФормаВибору");

КінецьПроцедури

Але це повний аналог медода №1, і ми побачимо форму вибору всіх договорів без відбору за власником. Тобто. так робити можна тільки якщо ми хочемо конкретизувати ім'я форми вибору.

Щоб встановити вибір, нам допоможе другий параметр.

Другий параметр має тип "Структура". Як елементи структури можна вказувати параметри форми, додані на закладці "параметри" у форми вибору. Їх обробка має бути описана у процедурі При створенні на серверіу модулі форми вибору. Це не годиться, т.к. вимагає доопрацювання конфігурації. Так само у структурі параметрів можна передати структуру відбору з ключем "відбір". Тоді всі поля структури відбору будуть використані у відборі списку елементів і не доступні користувачеві ні для перегляду, ні для зміни.

У моєму прикладі я намалював в обробці поле вибору, яке посилається на реквізит форми обробки "контрагент"з типом даних ДовідникПосилання.Контрагенти". і написав наступний шматок коду:

&На Клієнті

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

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

ПараметриВибору = Новий Структура("Отбор", Відбори);

рез = ВідкритиФормуМодально("Довідник.ДоговориКонтрагентів.ФормаВибору",ПараметриВибору);

КінецьПроцедури

Зазвичай цього достатньо для вирішення більшості проблем і не потребує втручання у конфігурацію. Однак у формі вибору в процедурі "При створенні на сервері" ваш відбір можуть похерити. Тому, перш ніж використовувати цей метод, продивіться цю процедуру у формі вибору, що відкривається вами. Криві розробники там можуть запросто встановити свій відбір "за замовчуванням", забувши перевірити, що відбір переданий у параметрах відкриття.

На сьогодні все, дякую за увагу.




Top