Інтернет Windows Android

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

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

СпісокЗначеній

опис:

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

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

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

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

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

методи:

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

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

новий СпісокЗначеній
& НаКліенте Процедура ВиполнітьКод (Команда) /// Як створити список значень в 1с 8.3, 8.2 Список \u003d Новий СпісокЗначеній; /// Як додати елемент до списку значень в 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 Перелік. Очистити (); Перелік. Додати ( "Понедельник"); Перелік. Додати ( "Вiвторок"); Перелік. Додати ( "Среда"); /// Як дізнатися кількість елементів списку значень, а також /// отримати елемент списку за його індексом в 1с 8.3, 8.2 // нумерація з нуля Для Індекс \u003d 0 За Список. Кількість () - 1 Цикл Повідомити (Список [Індекс]); КонецЦікла; /// Як знайти елемент списку по його значенню в 1с 8.3, 8.2 ЗначВторнік \u003d Список. НайтіПоЗначенію ( "Вiвторок"); /// Як дізнатися індекс елементу в списку в 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 КопіяСпіска \u003d Список. Скопіювати (); Кольори \u003d Новий СпісокЗначеній; Кольору. Додати ( "Червоний"); Кольору. Додати ( "Зелений"); Кольору. Додати ( "Синій"); /// Як вивантажити значення списку в масив в 1с 8.3, 8.2 МассівЦветов \u003d Кольори. ВигрузітьЗначенія (); /// Як завантажити значення списку з масиву в 1с 8.3, 8.2 Кольору. ЗагрузітьЗначенія (МассівЦветов); КонецПроцедури /// Як зробити Немодальний вибір значення зі списку /// значень в 1с 8.3, 8.2 & НаКліенте Процедура КакСделатьНемодальнийВиборЗначенія (Команда) Кольори \u003d Новий СпісокЗначеній; Кольору. Додати ( "Червоний"); Кольору. Додати ( "Зелений"); Кольору. Додати ( "Синій"); // процедура ПослеВибораЕлемента визначена трохи нижче ОповещеніеПослеВибораЕлемента \u003d Новий ОпісаніеОповещенія ( "ПослеВибораЕлемента", ЕтотОб'ект); Кольору. ПоказатьВиборЕлемента (ОповещеніеПослеВибораЕлемента, "Виберіть улюблений колір" ); КонецПроцедури & НаКліенте Процедура ПослеВибораЕлемента (Елемент, Параметри) Експорт Якщо Елемент<> Не визначено Тоді Повідомити (Елемент. Значення); КонецЕсли; КонецПроцедури /// Як зробити немодального позначку значень зі списку /// значень в 1с 8.3, 8.2 & НаКліенте Процедура КакСделатьНемодальнуюОтметкуЗначеній (Команда) Кольори \u003d Новий СпісокЗначеній; Кольору. Додати ( "Червоний"); Кольору. Додати ( "Зелений"); Кольору. Додати ( "Синій"); // процедура ПослеОтметкіЕлементов визначена трохи нижче ОповещеніеПослеОтметкіЕлементов \u003d Новий ОпісаніеОповещенія ( "ПослеОтметкіЕлементов", ЕтотОб'ект); Кольору. ПоказатьОтметкуЕлементов (ОповещеніеПослеОтметкіЕлементов, "Виберіть улюблені кольори" ); Кольору. ЗаполнітьПометкі (Істина); КонецПроцедури & НаКліенте Процедура ПослеОтметкіЕлементов (Елементи, Параметри) Експорт Якщо Елементи<> Не визначено Тоді Для Кожного Колір З Елементи Цикл Якщо Колір. Позначка Тоді Повідомити (Колір. Значення); КонецЕсли; КонецЦікла; КонецЕсли; КонецПроцедури /// Як зробити модальний вибір значення зі списку в 1с 8.3, 8.2 & НаКліенте Процедура КакСделатьМодальнийВиборЗначенія (Команда) Кольори \u003d Новий СпісокЗначеній; Кольору. Додати ( "Червоний"); Кольору. Додати ( "Зелений"); Кольору. Додати ( "Синій"); ВибЦвет \u003d Кольори. ВибратьЕлемент ( "Виберіть улюблений колір"); якщо ВибЦвет<> Не визначено Тоді Повідомити (ВибЦвет. Значення); КонецЕсли; КонецПроцедури /// Як зробити модальну оцінку значень зі списку /// значень в 1с 8.3, 8.2 & НаКліенте Процедура КакСделатьМодальнуюОтметкуЗначеній (Команда) Кольори \u003d Новий СпісокЗначеній; Кольору. Додати ( "Червоний"); Кольору. Додати ( "Зелений"); Кольору. Додати ( "Синій"); Якщо Кольори. ОтметітьЕлементи ( "Виберіть улюблені кольори") Тоді Для Кожного Колір З Кольори Цикл Якщо Колір. Позначка Тоді Повідомити (Колір. Значення); КонецЕсли; КонецЦікла; КонецЕсли; // а ось так можна разом встановити всі позначки // списку в певне значення Кольору. ЗаполнітьПометкі (Істина); КонецПроцедури /// Завантажити і виконати ці приклади на комп'ютері

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

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

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

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

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

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

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

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

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

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

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

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

наприклад: НашМассів \u003d Новий Масив;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

синтаксис: Вилучити()
Приклад використання: НашМассів.Удаліть (5);

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

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

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

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

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

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

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

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

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

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

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

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

приклад: НашМассів.Установіть (2,8);

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

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

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

приклад: НашаПеременная \u003d НашМассів.Получіть (2);

Альтернативний варіант: НашаПеременная \u003d НашМассів;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

наприклад: НашеСоответствіе \u003d Новий Відповідність;
Відповідність \u003d 999;

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

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

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

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

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

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

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

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

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

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

Підтримувані типи даних: сама ТабліцаЗначеній, Яка складається з рядків. Кожен рядок представлена \u200b\u200bтипом даних СтрокаТабліциЗначеній, У якій є свої властивості і свої методи. є КоллекціяКолонок ТабліциЗначенійтакож має певні властивості.

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

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

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

наприклад:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В даному юніте ми познайомимося з новим типом даних мови 1С, який називається СписокЗначеній.

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

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

Спісок.Добавіть (23);

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

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

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

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

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

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

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

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

вміє шукати

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

ВвестіЧісло (Число); // ввели число від користувача НайденнийЕлемент \u003d Список. НайтіПоЗначенію (Число);

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

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

КонецЕсли; СпісокЗначеній

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

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

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

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

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

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

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

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

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

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

КонецЦікла;

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

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

КопіяСпіска \u003d Спісок.Скопіровать ();

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

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

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

МассівЧісел \u003d Список. ВигрузітьЗначенія ();

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

Для А \u003d 0 За МассівЧісел.Колічество () - 1 Цикл

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

КонецЦікла;

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

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

Рішення

Список \u003d Новий СпісокЗначеній;

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

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

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

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

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

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