Вибір зі списку 1с 8.3 керована програма

Повний синтаксис (натисніть, щоб розкрити)

СписокЗначень

Опис:

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

Елементи колекції: ЕлементСпискаЗначень

Для об'єкта доступний обхід колекції за допомогою оператора Для кожного… З… Цикл. Під час обходу вибираються елементи колекції.

Можливе звернення до елемента колекції за допомогою оператора [...]. Як аргумент передається індекс елемента ( нумерація з 0).

Властивості:

Методи:

Вставити (Індекс, Значення, Подання, Позначка, Картинка)Вставляє новий елементдо списку значень на позицію із зазначеним індексом.ВибратиЕлемент (Заголовок, Елемент)Викликає інтерактивний вибір одного з елементів, що входять до списку значень. Елемент- елемент, на який слід спочатку позиціонувати список значень при інтерактивному виборі. Якщо значення параметра не є елементом списку значень, що входить до цього списку, позиціонування не відбудеться.ВивантажитиЗначення() Створює масив і копіює значення елементів списку значень.Додати (Значення, Подання, Позначка, Картинка) Додає новий елемент до кінця списку значень.ЗавантажитиЗначення(МасивЗначень)Завантажує список значень значень із переданого масиву. При цьому всі попередні елементи списку видаляються.ЗаповнитиПомітки(Примітка)Встановлює позначку всіх елементів списку значень.Індекс (Елемент) Отримує індекс елемента у списку значень. Якщо знайдено, то повертається -1.Кількість () Отримує кількість елементів списку значень.ЗнайтиПоЗначенню(ЗнайденеЗначення)Здійснює пошук значення елемента списку значень. Якщо жоден елемент не зберігає значення, що дорівнює шуканому, то повертається значення НЕ визначено. ЗнайтиПоІдентифікатору(Ідентифікатор)Отримує елемент списку значень щодо ідентифікатора. Якщо елемент не знайдено, то повертається НЕ визначено. Відзначити Елементи(Заголовок) Встановлює або знімає (інтерактивно) позначки у списку значень. Повертає Істина, якщо в діалозі натиснуто кнопку "ОК", Брехня- в іншому випадку.Очистити ()Очищає список значень, видаляючи всі елементи.ПоказатиВибірЕлементу(Опис Оповіщення ОЗакритії, Заголовок, Елемент) Викликає вікно для інтерактивного вибору одного з елементів, що входять до списку значень.ПоказатиПозначкуЕлементів(Опис Оповіщення ОЗакритії, Заголовок) Призначений для інтерактивної установки станів позначок у елементів списку значень.Отримати (Індекс)Отримує значення за індексом. Працює аналогічно оператору.Зсунути (Елемент, Зміщення) Зміщує елемент списку значень на задану кількість позицій уперед або назад.Копіювати () Створює копію списку значень.СортуватиПоЗначенню(Напрямок) Сортує список значень у порядку зростання або спадання значень, що зберігаються елементами. Див. приклад нижче.СортуватиПо уявленню(Напрямок) Сортує список значень за зростанням або за спаданням в алфавітному порядку уявлень значень елементів, що входять до складу списку. Див. приклад нижче.Видалити (Елемент)Видаляє елемент зі списку значень, де Елемент- індекс елемента, що видаляється, або сам елемент.

Конструктори:

Новий СписокЗначень
&На Клієнті Процедура ВиконатиКод(Команда) /// Як створити список значень у 1с 8.3, 8.2Список = Новий СписокЗначень; /// Як додати елемент до списку значень у 1с 8.3, 8.2 // Параметри методу додати:// - значення // - Вистава // - Позначка (необ.) // - картинка (необ.)Перелік. Додати ( 1980 ) // значення елемента "Рік народження Васі"// уявлення); Перелік. Додати(1985 ) "Рік народження Юлі") ; // значення можуть бути різних типів Перелік. Додати("Поліна", "Ім'я дитини"); /// Як вставити елемент до списку значень у 1с 8.3, 8.2 // Вставляємо в позицію №2 (елементи нумеруються з 0) // елемент зі значенням 2010 та поданням // "Рік народження їхньої спільної доньки"Перелік. Вставити(2 , 2010 , "Рік народження їхньої спільної доньки") ; /// Як обійти елементи списку значень 1С 8.3, 8.2Для Кожного Елемент З Список Цикл Повідомити( Елемент. Подання + ": " + Рядок(Елемент. Значення) ) ; КінецьЦикл; /// Як очистити список значень 1с 8.3, 8.2Перелік. Очистити(); Перелік. Додати("Понеділок"); Перелік. Додати("Вівторок"); Перелік. Додати("Середовище"); /// Як дізнатися кількість елементів списку значень, а також /// отримати елемент списку за його індексом 1с 8.3, 8.2 // нумерація з нуляДля Індекс = 0 Список. Кількість() - 1 Цикл Повідомити(Список[ Індекс] ) ; КінецьЦикл; /// Як знайти елемент списку за його значенням 1с 8.3, 8.2Знач Вівторок = Список. ЗнайтиПоЗначению("Вівторок") ; /// Як дізнатися індекс елемента у списку 1с 8.3, 8.2Повідомити(Список. Індекс(ЗначВівторок) ) ; // 1, оскільки нумерація з нуля /// Як відсортувати список за його значеннями 1с 8.3, 8.2 // було: понеділок, вівторок, середаПерелік. СортуватиПоЗначенню(НапрямокСортування. Убувши) ; // стало: середа, понеділок, вівторок /// Як видалити елемент зі списку значень 1С 8.3, 8.2 // видаляємо перший елемент // Параметр: елемент списку // або індекс елемента// можна так Список. Видалити (Список [0]); // або так // Список. Видалити (0); /// Як зрушити елемент списку значень 1с 8.3, 8.2 // зрушуємо нульовий елемент однією позицію вперед // було: понеділок ВівторокПерелік. Зрушити (0, 1); // стало: вівторок понеділок /// Як зробити копію списку в 1с 8КопіяСписку = Список. Копіювати() ; Кольори = Новий СписокЗначень; Кольори. Додати("Червоний") ; Кольори. Додати("Зелений") ; Кольори. Додати("Синій" ) ; /// Як вивантажити значення списку масив в 1с 8.3, 8.2МасивКвітів = Кольори. ВивантажитиЗначення() ; /// Як завантажити значення списку з масиву 1с 8.3, 8.2Кольори. ЗавантажитиЗначення(МасивКвітів) ; КінецьПроцедури /// Як зробити немодальний вибір значення зі списку /// значень 1с 8.3, 8.2&НаКлієнті Процедура ЯкЗробитиНемодальнийВибірЗначення(Команда) Кольори = Новий СписокЗначень; Кольори. Додати("Червоний") ; Кольори. Додати("Зелений") ; Кольори. Додати("Синій" ) ; //Процедура ПісляВиборуЕлементу визначена трохи нижчеОповіщенняПісляВиборуЕлементу = Новий ОписОповіді( "ПісляВиборуЕлементу", цей об'єкт ) ; Кольори. ПоказатиВибірЕлементу( ОповіщенняПісляВиборуЕлементу, "Виберіть улюблений колір"); КінецьПроцедури &НаКлієнті Процедура ПісляВиборуЕлементу(Елемент, Параметри) Експорт Якщо Елемент<>Невизначено Тоді Повідомити(Елемент. Значення) ; КінецьЯкщо ; КінецьПроцедури /// Як зробити немодальну позначку значень зі списку /// значень 1с 8.3, 8.2&НаКлієнті Процедура ЯкЗробитиНемодальнуПозначкуЗначень(Команда) Кольори = Новий СписокЗначень; Кольори. Додати("Червоний") ; Кольори. Додати("Зелений") ; Кольори. Додати("Синій" ) ; //Процедура ПісляВідміткиЕлементів визначена трохи нижчеОповіщенняПісляВідміткиЕлементів = Новий ОписОповіді( "ПісляВідміткиЕлементів", цей об'єкт ) ; Кольори. ПоказатиПозначкуЕлементів( ОповіщенняПісляВідміткиЕлементів, "Виберіть улюблені кольори"); Кольори. ЗаповнитиПомітки(Істина); КінецьПроцедури &НаКлієнті Процедура ПісляВідміткиЕлементів(Елементи, Параметри) Експорт Якщо Елементи<>Невизначено Тоді Для Кожного Колір З Елементи Цикл Якщо Колір. Позначка Тоді Повідомити(Колір. Значення) ; КінецьЯкщо ; КінецьЦикл; КінецьЯкщо ; КінецьПроцедури /// Як зробити модальний вибір значення зі списку 1с 8.3, 8.2&НаКлієнті Процедура ЯкЗробитиМодальнийВибірЗначення(Команда) Кольори = Новий СписокЗначень; Кольори. Додати("Червоний") ; Кольори. Додати("Зелений") ; Кольори. Додати("Синій" ) ; ВибКолір = Кольори. ВибратиЕлемент( "Виберіть улюблений колір"); Якщо ВибКолір<>Невизначено Тоді Повідомити(ВибКолір. Значення) ; КінецьЯкщо ; КінецьПроцедури /// Як зробити модальну позначку значень зі списку /// значень 1с 8.3, 8.2&НаКлієнті Процедура ЯкЗробитиМодальнуВідміткуЗначень(Команда) Кольори = Новий СписокЗначень; Кольори. Додати("Червоний") ; Кольори. Додати("Зелений") ; Кольори. Додати("Синій" ) ; Якщо кольори. Відзначити Елементи( "Виберіть улюблені кольори") Тоді Для Кожного Колір З Колір Цикл Якщо Колір. Позначка Тоді Повідомити(Колір. Значення) ; КінецьЯкщо ; КінецьЦикл; КінецьЯкщо ; // а ось так можна разом встановити всі позначки // Список у певне значенняКольори. ЗаповнитиПомітки(Істина); КінецьПроцедури /// Завантажити та виконати ці приклади на комп'ютері

Дуже часто буває необхідно на формі дати можливість користувачеві вибрати налаштування на формі перед натисканням кнопки «Виконати все». Коли потрібно вибрати одне значення з кількох зумовлених – часто використовується список значень 1С, що випадає, на формі.

Список значень 1С на формі, що випадає, — додайте на форму товстого клієнта поле вибору, уточніть його назву. Щоб користувач не міг змінювати список, зніміть галочку «Редагування тексту» у властивостях поля вибору.

Сам список вибору додамо програмно в обробнику форми «ПріВідкриття». У полі вибору є підпорядкований список значень ЕлементиФорми.ІмяПоляВибору.СписокВибору, а для встановлення значення за замовчуванням, і для визначення вибраного значення ЕлементиФорми.ІмяПоляВибору.Значення:
Процедура ПріВідкриття()

ЕлементиФорми.ВибірЗначення.СписокВибору.Очистити();
ЕлементиФорми.ВибірЗначення.СписокВибору.Додати(0, "Створити документ");
ЕлементиФорми.ВибірЗначення.СписокВибору.Додати(1, "Змінити документ");
ЕлементиФорми.ВибірЗначення.СписокВибору.Додати(2, "Видалити документ");
ЕлементиФорми.ВибірЗначення.Значення = 0;

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

Випадаючий список значень 1С на формі — у тонкому клієнті на форму потрібно створити реквізит форми, в якому зберігатимемо результат, наприклад з типом рядок. Перетягніть його на форму.
Перелік значень 1С на формі — Варіант 1)

  • Увімкнемо кнопку вибору списку
  • У якості «Список вибору» натисніть «…» та введіть варіанти
  • Результат вибору буде збережено у вибраному реквізиті


Перелік значень 1С на формі — Варіант 2)

  • Увімкнемо кнопку вибору списку
  • Додамо обробник «ПочатокВиборуЗСписку»

&На Клієнті
Процедура ВибранеЗначенняПочатокВиборуСписку(Елемент, СтандартнаОбробка)

Елементи.ВибранеЗначення.СписокВибору.Додати("Додати документ");
Елементи.ВибранеЗначення.СписокВибору.Додати("Редагувати документ");
Елементи.ВибранеЗначення.СписокВибору.Додати("Видалити документ");

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

Результат аналогічний. Потрібно, якщо список має бути заповнений посиланнями на довідники/документи, які не є визначеними.

Випадаючий список значень 1С на формі - Варіант 3)

Цей варіант працює аналогічно, але інтерфейсно виглядає інакше.

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

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

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

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

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

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