Знайти елемент у списку значень 1с. Універсальна колекція Структура

Про що ця стаття

Ця стаття продовжує цикл статей "Перші кроки у розробці на 1С". У ньому розглядаються принципи роботи з універсальними колекціями. Прочитавши статтю, ви дізнаєтесь:

  • Що таке універсальні колекції, коли та в яких випадках їх необхідно використовувати?
  • Що спільного в усіх універсальних колекцій? Які прийоми можна використовувати для роботи з ними?
  • Що таке масив, як і коли його використовувати? Які має методи?
  • Навіщо використати структуру? У чому відмінність від масиву?
  • У яких випадках використати список значень? Як відобразити його на формі?
  • Відповідність – що це та коли його використовувати? У чому переваги щодо структури?
  • Навіщо використовується таблиця значень? Як описати її структуру? Як додати/видалити рядки? Як вивести її на форму?
  • Дерево значень – навіщо використовується? Як заповнити та вивести на форму? Як із ним працювати?

Застосовність

У статті розглядається платформа 1С:Підприємство 8.3 актуальної редакції.

Як у 1С працювати з універсальними колекціями

Колекція значень – це якийсь контейнер, у якому може бути зазвичай будь-яка кількість елементів. При цьому будь-яких жорстких обмежень тип даних часто не накладається.

До універсальної колекції можна додавати значення. Усі значення у колекції можна обійти. Ці колекції використовуються в основному для будь-якої обробки в алгоритмах. Тобто. це деякі динамічні структури, які існують тимчасово роботи алгоритму.

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

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

Колекція може створюватися в результаті роботи будь-якої функції (функція повертає як значення універсальну колекцію).

Можна отримати нову колекцію вручну, звернувшись до конструктора та створивши екземпляр класу.

Наприклад: Наш Масив = Новий Масив;

Конструктори для багатьох універсальних колекцій параметризовані.

Так, у конструкторі для можна вказати кількість елементів у відповідних вимірах. Тобто. можна відразу ж оголошувати багатовимірні .

Відповідний опис конструктора є у синтакс-помічнику.

Таким чином, використовуючи параметри конструктора, можна відразу задати бажану поведінку даного об'єкта.

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

Майже будь-яку універсальну колекцію можна створити за допомогою конструктора (винятком є ​​табличні частини, які виступають як об'єкти конфігурації).

Для універсальних колекцій існують такі загальні поняття, як індекс та номер. Кожен елемент колекції має індекс. У цьому індекс починається з нуля.

Для того, щоб звернутися до елемента НашМасив, можна використовувати звернення за індексом, для цього індекс вказується у квадратних дужках.

Наприклад, НашМасив. Зверніть увагу, що в цьому випадку система повертає елемент Масиву з індексом 3, а по порядку це четвертий елемент Масиву.

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

Поняття номера рядка існує далеко не у всіх колекцій, а переважно тих, які можуть відображатися в інтерфейсі користувача.

Для всіх колекцій використовують обхід елементів колекції. Обхід можливий двома способами: циклом Дляі циклом Для кожного з.

Для більшості універсальних колекцій застосовні методи: Кількість, Індекс, Додати, Вставити, Видалити та Знайти.

Кількість – це функція, яка повертає кількість елементів колекції. Вона може використовуватися перед циклом Для, як представлено малюнку.

Метод Індекс існує не у всіх колекцій, а тільки в тих, на які можна послатися. Як приклад можна навести ТаблицюЗначень.

ТаблицяЗначень– це певна колекція рядків, у рядках можуть бути різні колонки з різними типами значень.

Кожен рядок є самостійною сутністю. На неї можна отримати посилання, через цей рядок можна звертатися до значень колонок у цьому рядку.

Метод Індекс дозволяє визначити, який індекс відповідає даному рядку (тобто поточну позицію рядка таблиці). Значення індексу розпочинаються з нуля.

Методи додавання нових значень у цю колекцію існують практично у будь-якої універсальної колекції. На малюнку представлено, як заповнити Масив значеннями від 0 до 10 двома способами.

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

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

Синтаксис: Вставити (,)

Першим параметром вказується індекс, до якого буде вставлено нове значення. Тобто. ми, наприклад, можемо зазначити, що кожне значення потрібно вставляти на початок списку (другий спосіб малюнку вище).

Для видалення елементів із колекції використовується метод видалити. У методі Видалити вказується за індексом, який елемент ми видалятимемо.

Синтаксис: Видалити()
Приклад використання: НашМассив.Видалити(5);

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

Практично всі колекції мають метод пошуку значення – Знайти. До методу передається те значення, яке хочемо знайти. У деяких колекціях можна встановити будь-які обмеження.

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

Якщо значення знайдено, то цей метод повертає індекс чи певний рядок. Якщо значення не знайдено, значення типу повертається НЕ визначено. Щодо Масиву повертається Індекс, або значення НЕ визначено.

Приклад використання: Наша Змінна = Наш Масив. Знайти (8);

Універсальні колекції можна швидко очищати, тобто. видалити всі елементи. Для цього використовується метод Очистити(), який видаляє елементи Масиву, рядки ТаблиціЗначень, або дані інших колекцій.

Додаткові методи для Масиву

Метод ВГраница()повертає кількість елементів мінус один. Тобто. якщо ми використовуємо цикл Для, то замість методу Кількість можемо відразу використовувати метод Кордон().

Зокрема, змінну кількість в масиві можна було визначити інакше:

КількістьВМассиве = НашМассив.ВГраница();
Тоді при описі самого циклу віднімати від цієї змінної одиницю не слід.

Метод Встановити дозволяє присвоїти значення елементу Масиву за індексом.

Синтаксис: Встановити(,)

Приклад: Наш Масив. Встановити (2,8);

Альтернативний варіант: Наш Масив = 8;

Можна для Масиву використовувати метод Отримати, щоб прочитати значення по індексу, не звертаючись до використання квадратних дужок.

Синтаксис: Отримати()

Приклад: Наша Змінна = Наш Масив. Отримати (2);

Альтернативний варіант: Наша Змінна = Наш Масив;

Універсальна колекція Структура

Структура, як і і Масив, може мати необмежену кількість елементів, але зміст елемента відрізняється від Масиву.

Структура є колекцією, кожне значення якої складається з пари. Перший елемент пари називається Ключ. Другий елемент пари – Значення.

Ключ– це строго рядковий тип даних, що визначає значення. Наприклад, Ключу"Код" може відповідати значення 113; Ключу"Ім'я" значення "Вася". На саме значення обмеження типу даних не накладається.

Структуру дуже зручно використовувати, якщо ми хочемо створити список параметрів. Якщо дана Структураназивається Наша Структура, то звертатися до її двох значень ми будемо в такий спосіб: Наша Структура.Код та Наша Структура.Ім'я.

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

Структура робить програмний код читаним (зрозумілим). Структура застосовується досить часто, набагато частіше, ніж Масив.

Вона використовується для опису деяких параметрів, яких найчастіше існує досить велика кількість у всіх алгоритмах.

Крім того, Структура застосовується в тому випадку, якщо процедура і функція містять велику кількість параметрів, що передаються.

Тоді набагато зручніше записати всі параметри в структуру і саме її і передавати. Тобто. відбувається «упаковка» параметрів процедур та функцій.

Окремо слід зазначити, що як Ключау Структурі може виступати не абсолютно будь-який рядок. Накладаються певні обмеження.

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

Допустимо початок Ключаз букв або знак підкреслення. Таким чином, Ключмає задовольняти вимоги до створення ідентифікаторів.

Зазначимо, чим ще Сруктура відрізняється від Масиву. У структурі є метод Вставити, у Массіві є два методи для вставки: Вставити(у певну позицію) та Додати(Наприкінці списку). У Масиві всі елементи є впорядкованими.

Структура – ​​це якесь невпорядковане безліч. Саме тому для структури існує лише метод вставки.

Значення вставляється не так на конкретну позицію, а зазначене безліч. Для Структури неприпустимо звернення за індексом, як інших універсальних колекцій.

До елементів Структури звертаються лише на ім'я Ключа. Тим не менш, цикл для кожного працює і для структури, але спиратися на порядок елементів структури не слід.

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

Як і Масив, конструктор структури може мати параметри. Тобто. можна описати сам зміст Структури, використовуючи конструктор.

На відміну від Масиву, де можна просто вказати кількість елементів для всіх розмірностей, у Структурі можна задавати сам зміст.

Наприклад: Наша Структура = Новий Структура ( "Код, Ім'я", 133, "Вася");

Через кому перераховуються спочатку імена Ключів, а потім, відповідно, у тій же послідовності значення параметрів.

Для додавання до Структури нового значення існує метод Вставити, який вставляє нову пару (Ключ та Значення).

Наприклад: Наша Структура.Вставить(“Членів Сім'ї”,3);

Для структури характерний ще один метод, який використовується досить часто. Це метод Властивість.

За допомогою цього методу можна зрозуміти, а чи є в цій структурі такий елемент, у якого Ключ має таке ім'я.

Якщо існує такий елемент, то система поверне значення Істина, інакше – Брехня.

Наприклад, вираз Наша Структура.Властивість ("Членів Сім'ї")дорівнюватиме значенням Істина. Цей метод застосовується досить часто під час аналізу Структури.

Як і для будь-якої універсальної колекції, припустимо звернення до властивостей структури за індексом. Але індекс для структури – це рядкове значення.

Наприклад: Повідомити(НашаСтруктура[“Членів Сім'ї”]);

Однак слід не забувати, що Структура – ​​це не впорядкована множина об'єктів, саме тому звернення за індексом 0, 1, 2 неприпустимо.

Універсальна колекція Список значень

СписокЗначеньє лінійний список елементів будь-якого типу даних.

Кожен елемент складається з кількох значень. Схематично список значень можна подати у вигляді списку з чотирма колонками.

Перша колонка – Позначка. Вона має булевський тип даних і дозволяє користувачеві або ставити прапорці або їх знімати.

Інша колонка – це картинка, яка може якось візуально зображати цей елемент, тобто. ставити у відповідність даному рядку якусь картинку.

Третя колонка – саме збережене значення, тобто. це будь-який тип даних, причому у різних рядках може бути різним.

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

СписокЗначень– це об'єкт, з яким може візуально працювати користувач. Тобто. СписокЗначеньможна вивести форму.

Користувач може виконувати з ним якісь дії. Крім цього, СписокЗначеньможна вивести незалежно, використовуючи способи, тобто. показати на екран у певній гілці алгоритму (за винятком серверного коду), щоб користувач вибрав якийсь рядок або простовив будь-які галочки.

Знайдемо СписокЗначеньу ситакс-помічнику. Конструктор СпискуЗначеньне параметризоване (не можна задати якісь значення за замовчуванням).

Є такі методи, як:

  • Вставити(,);
  • Додати(,);
  • Кількість ();
  • Індекс().

Є й спеціальні методи, наприклад, ВивантажитиЗначення(). У цьому створюється Масив, куди копіюється список значень. Наприклад:

МасивЕлементів = СписокТипівЦен.ВизрузитьЗначення();

Існує і зворотний метод:
СписокТиповЦен.ЗавантажитиЗначення(МасивЕлементів);

Існують методи пошуку:
ЗнайтиЗначення(); ЗнайтиПоІдентифікатор().

Є метод копіювання:
КопіяСписку = СписокТипівЦен.Скопіювати();
Цей методпризначений для того, щоб зробити якусь модифікацію із копією.

Існують методи:
СортуватиПоЗначенню();
СортуватиПо уявленню().

Методи ВибратиЕлемент(,)і ВідзначитиЕлементи ()викликають модальне діалогове вікно, яке зупиняє виконання алгоритму, доки користувач не закриє вікно.

Для використання цих методів у властивостях конфігурації Режим використання модальностімає бути встановлений на значення Використати.

Приклад коду, що викликається з модуля Керованої програми:

Відображення цього коду в режимі користувача (модальне діалогове вікно).

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

Створюємо нову команду ЗапонитиПодарунки, Переносимо на форму і визначаємо для неї обробник дії.

У режимі користувача, при натисканні у формі обробки кнопки Заповнити подарунки, з'явиться заповнений список.

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

Універсальна колекція Відповідність

Ця колекція дуже схожа зі Структурою. Також, як і Структура, Відповідність є наборами значень, які складаються з ключа і самого значення.

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

Як ключ може бути тип даних, що відрізняються від рядка. Властивості та методи роботи з відповідністю практично такі ж, як у структури.

Конструктор Відповідності, на відміну Структури, немає можливості вказівки параметрів.

Приклад використання:

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

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

Наприклад: НашаВідповідність = Нова Відповідність;
Відповідність = 999;

Тобто. якщо елемент у колекції не був присутній, то за допомогою оператора присвоювання він буде доданий, а якщо був присутній, то буде оновлено.

Це відмінність від Структури.

Універсальна колекція Таблиця значень

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

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

Відмінності ТаблиціЗначеньвід двомірного Масиву:

  • це об'єкт, з яким може працювати користувач (таблицю значень можна вивести на екран, користувач може її заповнювати, надалі введені дані можна читати);
  • побудова індексів швидкого пошуку;
  • клонування, заповнення певним значенням усієї колонки, вивантаження всі колонки в масив.

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

Отже, ТаблицяЗначеньскладається з набору рядків та набору колонок. І рядки, і колонки є колекціями.

Тобто. всередині колекції ТаблицяЗначеньє ще дві колекції. Звернемося до синтаксу-помічника і знайдемо ТаблицюЗначень.

Типи даних, що підтримуються: сама ТаблицяЗначень, Що складається з рядків. Кожен рядок представлений типом даних РядокТаблиціЗначень, яка має свої властивості та свої методи. Є КолекціяКолонок ТаблиціЗначеньтакож має певні властивості.

Важливий момент! Процедура, що формує ТаблицюЗначень, повинна компілюватися & На сервері.

Перш, ніж почати працювати з ТаблицеюЗначеньнеобхідно визначити, які в ній будуть міститися колонки (тобто створити їх). Синтаксис:

Додати(,)
(Необов'язковий)
Тип: Рядок.
(Необов'язковий)
Тип: ОписТипів
(Необов'язковий)
Тип: Рядок.
(Необов'язковий)
Тип: Число.

Наприклад:

Для виклику цієї процедури будемо використовувати команду.

В описі ТаблиціЗначеньяк елементи колекції виступають саме РядкиТаблиціЗначень.

На відміну від колонок, які складаються тільки з властивостей (Ім'я, Тип, Заголовок, Ширина), РядкуТаблиціЗначеньіснують як властивості (звернення на ім'я колонки), так і методи (можна отримувати та встановлювати значення, працювати з власниками).

Щоб додати новий рядок до таблиці потрібно використовувати метод або Додати(), або Вставити(). У другому випадку слід зазначити, яку позицію потрібно виставляти необхідний рядок.

Щоб надати значення колонці, ми через точку звертаємося по імені колонки або за індексом (за допомогою квадратних дужок).

Для заповнення ТаблиціЗначеньможуть використовуватися такі методи:

Очистити()– для видалення всіх рядків з ТаблиціЗначень.

ЗаповнитиЗначення(,)– дозволяє заповнити всі колонки або обрані колонки одним значенням.
ЗавантажитиКолонку(,)- Завантажує колонку з масиву.
ВивантажитиКолонку()- Вивантажує колонку в масив.

Два останніх методи зручно використовувати, коли потрібно перекинути колонку з однієї таблиці значень до іншої.

Копіювати(,)– дозволяє на підставі існуючої таблиці створити нову ТаблицюЗначеньПри цьому вказувати не всі рядки і всі колонки, а лише деякі з них. Значення, що повертається – ТаблицяЗначень.

Можна скопіювати структуру ТаблиціЗначень. І тому існує відповідний метод КопіюватиКолонки(). Ми отримаємо порожню ТаблицюЗначеньіз необхідною структурою.

У ТаблицяЗначеньіснує метод Підсумок(). Можна вказати ту колонку, у якій потрібно підсумувати числові величини. Стосовно раніше показаного коду Табло можна розрахувати значення: ТЗ.Підсумок ("Сума").

У ТаблицяЗначеньіснує можливість згрупувати (згорнути) числові величини за однаковими значеннями певних колонок за допомогою методу Згорнути(,).

Стосовно раніше показаного коду Табло можна розрахувати значення: ТЗ.Згорнути (“День Тижня”, “Сума”).

ТаблицюЗначеньможна показати на екрані користувачащоб з нею можна було здійснювати будь-які дії. Але на відміну від СпискуЗначеньз програмного коду не можна просто викликати таблицю на екран.

Щоб відобразити ТаблицюЗначеньна екрані, створимо реквізит форми та надамо йому тип даних ТаблицяЗначень.

Після чого отриману таблицю слід вивести форму.

У модулі форми наприкінці раніше складеного алгоритму (у Процедурі Створення ТаблиціЗначень) слід дописати:
ЗначенняДані Форми(ТЗ, Таблиця);

Універсальна колекція Дерево значень

універсальна колекція, яка дуже схожа на ТаблицюЗначень. На відміну від таблиці у тому, що рядки дерева може бути підпорядковані одне одному, тобто. може бути утворена якась ієрархія.

Теж може бути відображено на екрані. Дерево значень явно складається з колекції рядків і колекції колонок. У дереві існують такі дві властивості як Рядки та Колонки.

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

Створимо відповідну команду Дерево та її процедуру обробки.

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

Створимо реквізит форми Дерзн(Тип даних - ДеревоЗначень).

Для цього реквізиту створимо колонки Рік та Місяць.

Перемістимо відповідний елемент Дерзнна форму.

В кінці Процедури ДеревоНа Сервері()допишемо:

ЗначенняДані Форми(ДеревоЗн, ДерЗн);

Перевіримо, що вийшло в режимі користувача.

За допомогою кнопки Додатиможна додавати нові рядки. Вони можуть утворювати ієрархію.

Щоб обійти всі елементи дерева значень, потрібно використовувати рекурсію, тобто. виклик процедури самої із себе. Наприклад, обробка дерева значень може виглядати так:

На цьому ми завершуємо наше перше знайомство із універсальними колекціями.

У наступній статті розглянемо за допомогою якого важливого механізму розробник може спростити звернення до елемента довідника з програмного коду.

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

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

Опис:

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

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

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

Можливе звернення до елемента колекції за допомогою оператора [...]. Як аргумент передається індекс елемента ( нумерація з 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С, який називається СписокЗначень.

Список значень- це масив, але з більшими можливостями. А якщо так, то він теж є колекцією даних і в нього можна помістити набір чисел:

// Створили список значень

Список.Додати(23);

Поки що все дуже схоже на масив, чи не так? Але йдемо далі. Щоб тепер вивести ці числа користувачеві, напишемо:

// пробіжимося циклом по кожному елементу списку Для кожного елемента зі списку циклів Повідомити (Елемент.Значення);

// Виводимо значення елемента Кінець циклу;

А ють і першу відмінність. Елементами звичайного масиву є числа. А доступ до поточного значення елемента Спискуми отримуємо за допомогою опції Значення, використовувавши конструкцію Елемент. значення.

Розглянемо деякі додаткові можливостіСяїс/ся значень.

Вміє сортувати

Наприклад, ми легко можемо відсортувати список значень. Список це вміє робити сам:

Список.СортуватиПоЗначенню(НапрямокСортування.Возр); У випадку зі звичайним масивом нам довелося б реалізовувати один із алгоритмів сортування (наприклад, "бульбашка").

Вміє шукати

Список значень вміє шукати свої елементи. Нехай ми хочемо з'ясувати, чи є введене користувачем число в нашому списку:

Ввести Число (Число); // ввели число від користувача ЗнайденийЕлемент = Список. ЗнайтиЗазначенням(Число);

Якщо ЗнайденийЕлемент = Невизначено Тоді ВідкритиЗначення("Число" + Число + "у списку не знайдено!"); Інакше

ВідкритиЗначення("Число" + Число + "присутнє у списку. Ось воно:" + ЗнайденийЕлемент.Значення);

КінецьЯкщо; СписокЗначень

Підтримує вставку та видалення

Список значень, як і масив, підтримує вставку та видалення елементів:

Перелік. Вставити (0, 1000);

// вставляємо тисячу на початок списку Список.Видалити(О); // і відразу видаляємо її зі списку Список. Вставити(Список.Кількість(), 13);

// вставляємо 13 в кінець списку Повідомити(Список[Список.Кількість() - 1]);

// Виводимо останній елемент списку (13)

Підтримує квадратні дужки

Як ви вже зрозуміли, нумерація елементів списку також йде з нуля, і ми можемо звернутися до будь-якого елемента за його індексом, використовуючи квадратні дужки:

Повідомити (Список.Значення); // вивели другий елемент списку Таким чином, ми можемо пробігтися всіма елементами списку ще й так:

Для А = 0 За Список.Кількість() - 1 Цикл Повідомити(Список[А].Значення);

КінецьЦикл;

Вміє створювати свою копію

У списку значень є просто шикарна нагода - він вміє сам створювати свою копію:

КопіяСписку = Список.Скопіювати();

// зробили копію списку // тепер можемо сміливо змінювати Копія Списку // при цьому вихідний список змінюватися не буде Копія Списку. Значення = 123 456;

Вміє перетворюватися на масив

Ну і, нарешті, ви можете будь-якої миті легко вивантажити всі елементи списку в масив:

МасивЧисел = Список. ВивантажитиЗначення();

// Вивантажили в масив

Для А = 0 По МасивЧисел.Кількість() - 1 Цикл

Повідомити(МасивЧисел[А]); // не потрібно вказувати // опцію Значення

КінецьЦикл;

Для відпрацювання та закріплення матеріалу даного юніту рекомендується виконати наступне завдання.

Необхідно ввести від користувача 5 чисел, знайти найбільше та найменше з них та вивести їх користувачеві. У рішенні має використовуватись список значень.

Рішення

Список = Новий СписокЗначень;

// Створили список значень Для А = 1 По 5 Цикл Число = 0;

Ввести Число (Число); // введемо число від користувача Список.Додати(Число); // і додамо його до списку Кінець циклу; // і так 5 разів

// зробимо сортування списку чисел

Перелік. Сортувати ПоЗначенню(НапрямокСортування. Возр);

// після сортування перший елемент списку - і є // найменший елемент, а останній - найбільший ВідкритиЗначення("Найменший елемент" + Список +

", а найбільший" + Список [Список.Кількість () - 1]);




Top