Таблиця значень 1с - 3 частина
Таблиця значень 1С - 3 частина. Метадані. Перебір колонок таблиці значень
Дві попередні статті:
Для пояснення матеріалу і для того, щоб можна було запустити наші приклади програмного коду "в живу", нам необхідна якась тестова таблиця значень 1С. Частина наших прикладів буде отримувати дані з таблиці значень, тому ми зробимо таблицю з трьома колонками "Прізвище", "Ім'я", "По батькові" і внесемо в неї невелика кількість даних - аж цілих 3 рядки :)
Отже, створимо тестову таблицю значень 1С і заповнимо її:
Наша тестова таблиця складається з трьох колонок: Ім'я, Прізвище, По батькові; і має три заповнених рядки з прізвищами героїв Громадянської війни.
Перший зразок коду - перебір колонок таблиці значень 1С як колекції.
Наш цикл виведе у вікно повідомлень 1С все імена колонок:
Ми бачимо, що для перебору колонок застосовується спеціальний цикл перебору колекції, схожий на цикл перебору рядків (в минулій статті). МояТЗ.Колонкі - це колекція колонок таблиці значень 1С "МояТЗ". Колекція містить в собі об'єкти типу "КолонкаТабліциЗначеній" Кожен об'єкт цього типу і є колонкою таблиці значень, і містить властивості та методи. Звертаючись до цих властивостей і методів ми отримуємо потрібні відомості про одну колонці або виробляємо якісь інші дії з нею.
Наприклад, звертаючись до властивості "Ім'я" (Колонка.Імя) ми отримуємо ім'я поточної колонки.
Хочу звернути вашу увагу на заголовок циклу: "Для Кожного Колонка З МояТЗ.Колонкі Цикл" Змінна з ім'ям "Колонка" придумана нами. Необов'язково використовувати таке ж ім'я. Можна назвати цю змінну як завгодно, наприклад "МояТекущаяКолонка" Тоді приклад вище буде виглядати таким чином:
Коли виконуюча підсистема 1С зустрічає цикл такого вигляду, при кожному проході циклу вона привласнює змінної з вказаним ім'ям один елемент з нашої колекції, в даному випадку - один елемент колекції колонок таблиці значень МояТЗ.Колонкі А далі ми звертаємося до змінної, яка містить в собі поточну колонку, і використовуємо властивість "Ім'я".
Пропоную поруч з ім'ям колонки вивести ще й номер кожної колонки в колекції колонок:
У вікно повідомлень 1С буде виведений текст:
Звернемо увагу на те, що колонки в таблиці значень 1С нумеруються починаючи з нуля, так само, як і рядки таблиці значень.
Кількість колонок в таблиці значень 1С
Щоб дізнатися кількість колонок в таблиці значень, ми використовуємо метод "Кількість ()" у колекції колонок.
На екрані буде виведена цифра "3". Дійсно, в нашій таблиці три колонки: "Прізвище", "Ім'я", "По батькові"
Отримання об'єкта-колонки по її номеру (індексу) і перебір колонок за допомогою індексу колонок
Зробимо цикл перебору всіх колонок таблиці значень за допомогою індексів колонок (номерів). Пам'ятаємо, що нумерація колонок починається з нуля. Тому лічильник циклу "Сч" ми повинні нарощувати від нуля до числа, рівного кількості колонок мінус один.
На екрані ми отримаємо наступне
Думаю, що цей приклад був зрозумілий. Ми звернулися до методу Кількість () колекції колонок "МояТЗ.Колонкі.Колічество ()", отримали кількість колонок, і запустили цикл з лічильником від нуля до кількість колонок мінус один. Всередині циклу ми отримуємо кожну колонку з колекції колонок і присвоюємо поточний об'єкт-колонку в змінну ТекущаяКолонка Далі, у змінної ТекущаяКолонка ми звертаємося до властивості Ім'я та виводимо значення цієї властивості на екран: Повідомити (ТекущаяКолонка.Імя);
Важливо ніколи не плутати властивість об'єкта і метод об'єкта.
Властивість - це якась статична величина і звернення до нього пишеться без дужок, наприклад ТекущаяКолонка.Імя. А метод - це по суті, процедура або функція об'єкта, а виклики процедур і функцій завжди пишуться з дужками (навіть якщо немає вхідних параметрів). Наприклад: МояТЗ.Колонкі.Колічество ()
Якщо ми звернемося до методу, забувши написати дужки - інтерпретатор 1С видасть нам повідомлення про помилку і не запустить код на виконання. Так як інтерпретатор буде вважати, що ми звертаємося не до методу, а до властивості - тому що немає дужок. А властивості з таким ім'ям знайти не зможе (бо з таким ім'ям є тільки метод) - про що і буде сказано в повідомленні про помилку.
Ось що напише інтерпретатор, якщо я забуду поставить дужки у виклику методу таким неправильним способом МояТЗ.Колонкі.Колічество (без дужок після "Кількість ()"):
Поле об'єкта не виявлено (Кількість)
В даному випадку "поле" і "властивість" слід розуміти як синоніми, або неточність термінології розробників 1С. Вони використовують обидва цих слова для позначення одного і того ж поняття. Хоча в інших мовах програмування ці терміни можуть означати різні поняття.
Отримання даних з таблиці значень 1С за допомогою номерів колонок
Пропоную вам, для початку, простий приклад отримання даних з першого рядка нашої таблиці. Зверніть увагу, що ми використовуємо заздалегідь заповнену таблицю з початку статті. Ми точно знаємо, що в таблиці є перший рядок, і є хоча б одна колонка. Якщо ми застосуємо цей приклад до незаповненою таблиці, то станеться помилка. Отже:
На екран буде виведено:
Спочатку ми отримали об'єкт-рядок таблиці значень, звернувшись до таблиці значень за допомогою оператора [. ]. (Якщо забули, як це робиться, можна подивитися попередні статті) Всередину оператора ми передали аргумент "0". Це індекс першого рядка таблиці значень. ПерваяСтрока = МояТЗ [0];
Далі, до об'єкта-рядку ми теж маємо право звернутися за допомогою оператора [. ]. Всередину цього оператори ми передали номер стовпця таблиці значень, в даному випадку теж "0". І, таким чином, ми отримали значення стовпця з номером "0" для поточного рядка таблиці під номером "0". Це значення ми вивели на екран і воно являє собою рядок "Чапаєв".
Трохи ускладнити наш приклад:
Тепер ми вивели на екран значення з усіх трьох стовпців першого рядка нашої таблиці значень:
Тепер я ще модифікує цей приклад, щоб нам обійтися без змінної "ПерваяСтрока"
На екрані буде те ж саме
Ми побачили в прикладі вище, що для звернення до значення, що знаходиться в конкретному рядку і конкретному стовпчику таблиці значень ми можемо використовувати послідовний виклик двох операторів [. ] В такій формі: ТабліцаЗначеній [ІндексСтрокі] [ІндексКолонкі]
Значить, ми готові до того, щоб створити цикл перебору і отримати дані всіх рядків і всіх стовпців за допомогою індексів рядків і стовпців:
На екран буде виведено наступне:
Пропоную, на закінчення, трохи змінити наш приклад, щоб він замість номерів колонок виводив на екран їх назви. І додатково зроблю більш презентабельне оформлення видачі вмісту на екран.
Зараз, на нашому екрані інформація стала виглядати більш представницький:
Так, мало не забув. При використанні поспіль двох операторів [. ] [. ], Ми можемо замість індексу колонки передавати ім'я цієї колонки: ТабліцаЗначеній [ІндексСтрокі] [ІмяКолонкі]
Зверніть увагу на рядок, зазначену стрілочкою "
- Про проект "Старт в 1С"
- Захищено: День 1 і 2 міні-курс ...
- Ви успішно додані до групи ...