Що таке таблиця в 1С

Що таке таблиця в 1С



Зведені таблиці

Система 1С:Підприємство 8 містить механізм зведених таблиць, який дозволяє представляти багатовимірні дані, наприклад, обсяг продажів у розрізі контрагентів та найменувань номенклатури, як показано на наступному малюнку:

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

У спеціальному вікні "Поля зведеної таблиці", яке відображається, якщо зведена таблиця активна, можна керувати видимістю та розташуванням вимірювань та ресурсів. Якщо воно не виводиться, то клацніть правою кнопкою на комірці зведеної таблиці та в контекстному меню виберіть пункт "Відображати поля". Це вікно можна також увімкнути засобами вбудованої мови, якщо властивості "Відображати Поля" об'єкта "Зведена Таблиця" присвоїти значення Істина.

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

Формування зведених таблиць

Завжди пам'ятаймо, що зведена таблиця розміщується в табличному документі. Додати її до табличного документа можна інтерактивно або програмно. Щоб вставити зведену таблицю в макет у режимі "Конфігуратор", потрібно встановити курсор на комірку макета і вибрати пункт меню "Таблиця => Вбудовані таблиці => Вставити зведену таблицю". Зведену таблицю можна також додати до табличного документа програмно, як, наприклад, у наступному фрагменті:

Щоб звернутися до зведеної таблиці засобами вбудованої мови, потрібно скористатися властивістю-колекцією "Вбудовані Таблиці" об'єкта "ТаблічнийДокумент", наприклад:
ТабДок Найголовніша властивість зведеної таблиці - це властивість "ДжерелоДаних", яке приймає значення типу "Результат Запиту" або "ПобудовачЗвіту". Ця властивість визначає, звідки зведена таблиця братиме дані для відображення. Підсумки запиту стають ресурсами (відображаються в області даних), а поля для групування, за якими вони підраховуються, стають вимірюваннями.

Наступний фрагмент програми був використаний для формування наведеної вище зведеної таблиці:

Запит ЗвідТаб

Управління зведеною таблицею із вбудованої мови

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

Наступний фрагмент включає вимір "Номенклатура" (по рядках), вимір "Підрозділ Компанії" (по колонках) та ресурс "СумаПродажі" (область даних):

ЗвідТабТут ми скористалися наступними властивостями-колекціями об'єкту "ЗведенаТаблиця":

Колекція всіх доступних полів зведеної таблиці, включаючи всі виміри та ресурси (у тому числі вимкнені). Ця колекція заповнюється під час призначення джерела даних на основі підсумків у запиті. Функції з пропозиції ПІДСУМКИ стають ресурсами, а групувальні поля, за якими вони підраховуються, стають вимірами.

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

Рядки Колекція полів зведеної таблиці, що відображаються, розташованих у рядках (згори вниз). Колонки Колекція полів зведеної таблиці, що відображаються, розташованих у колонках (зліва направо). Дані Колекція полів зведеної таблиці, що відображаються, розташованих в області даних.

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

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

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

  • ВідображатиПідписиПідсумків (відображати рядок типу "Відділ роздрібної торгівлі Підсумок")
  • ПоложенняІтоговРядок (зверху або знизу)
  • ПоложенняПідсумківКолонок (ліворуч або праворуч)
  • Автофіксація (фіксація назв рядків і колонок під час прокручування)

Ці властивості можна також редагувати інтерактивно через палітру властивостей:

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

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

Розглянемо і останній метод об'єкта "Зведена Таблиця" - це метод ОтриматиЗначення. Даний метод приймає як параметр область осередків, а повертає структуру, що містить дані зведеної таблиці, розташовані в цій галузі, наприклад:

СтруктураДаних При цьому ключі структури будуть містити імена полів (вимірювань та ресурсів), а значення структури - значення вимірювань та ресурсів, як показано на наступному малюнку:

Резюме

  • Система 1С:Підприємство 8 містить механізм зведених таблиць, який дозволяє представляти багатовимірні дані.
  • У спеціальному вікні "Поля зведеної таблиці" можна керувати видимістю та розташуванням вимірювань та ресурсів. Також підтримуються операції перетягування вимірювань та ресурсів (drag-n-drop).
  • Якщо якесь значення вимірювання є угрупуванням, двічі клацнувши на ньому, користувач може розгорнути або згорнути це угруповання.
  • Властивість "ДжерелоДаних" зведеної таблиці приймає значення типу "Результат Запиту" або "ПобудовачЗвіту".
  • Підсумки запиту стають ресурсами (відображаються в області даних), а поля для групування, за якими вони підраховуються, стають вимірюваннями.
  • Засоби вбудованої мови дозволяють керувати структурою та зовнішнім виглядом зведеної таблиці

Що таке таблиця в 1С?

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

Для кожного рядку З Товари Цикл

Отримати потрібний рядок можна за індексом.Індекси у таблиці значень починається з 0 (нуля).

Рядок = ТаблицяЗначень[0];

Приклади використання властивості та методів об'єкта "Таблиця значень"

Створити таблицю значень

ТаблицяТоварів = Новий ТаблицяЗначень;

далі додавання колонок, додавання рядків.

- Вивантаження результату запиту в таблицю значень

- або вивантаження із табличної частини документа

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

ТаблицяТоварів.Колонки.Додати("Товар", Новий ОписТипів("ДовідникПосилання.Номенклатура")); Таблиця Товарів.Колонки.Додати("Ціна", Новий ОписТипів("Кількість"));

Після створення колонок додамо кілька нових рядків та заповнимо колонки

НоваРядок.Номенклатура = Довідники.Номенклатура.ЗнайтиПо Найменуванню("Помідори жовті");

Додамо ще одну колонку:

ТаблицяТоварів.Колонки.Додати("ТовГрупа", Новий ОписТипів("Рядок"));

Заповнити колонку у таблиці перебором рядків

Для кожного рядку З ТаблицяТоварів.ТовГрупа Цикл Рядок.ТовГрупа = "Овочі"; КінецьЦикл;

Заповнити колонку однаковим значенням

Таблиця Товарів. Заповнити Значення ("Овочі", "ТовГрупа");

ЗаповнитиЗначення(, )

якщо колонки не вказані, то будуть заповнені всі колонки

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

Повідомити (Таблиця Товарів [0]. Товар);

Копіювати рядок таблиці значень, наприклад — перший

ЗаповнитиЗначенняВластивостей(ТаблицяТоварів.Додати(), ТаблицяТоваров[0]);

Пошук у таблиці значень із ціною за допомогою структури

(якщо на вхід подавати готові структури?)

МасивРядок = Таблиця Товарів.ЗнайтиРядки(Новий Структура("Ціна", 54));

Сортування рядків таблиці за вибраним полем

Таблиця Товарів. Сортувати ("Ціна");

Отримати кількість рядків у таблиці

ВсьогоРядок = Таблиця Товарів.Кількість ();

Вивантажити колонку таблиці значень у масив

Таблиця Товарів. Вивантажити Колонку ("Товар");

Щоб видалити рядок у таблиці значень, потрібно передати сам рядок або індекс у метод "Видалити".

/ / По рядку Таблиця Товарів. Видалити (Таблиця Товарів [Всього Рядок - 1]); / / За індексом Таблиця Товарів. Видалити (Всього Рядок - 1);

Повністю скопіювати таблицю значень можна так:

Нова Таблиця Товарів = Таблиця Товарів. Скопіювати ();

Підсумувати результат по колонці таблиці значень:

СумаЦен = Таблиця Товарів.Підсумок ( "Ціна");

Згорнути таблицю можна так:

При цьому в таблиці залишаться лише різні значення з колонки «Товар» із сумованими полями «Ціна».

ТаблицяЦен.Згорнути("Товар, Валюта", "Ціна");

Очистимо всі рядки таблиці значень

Таблиця Товарів. Очистити ();
Таблиця Товарів.Колонки.Очистити();

Застосування таблиць значень

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

Результат запиту можна вивантажити до таблиці значень

Табличну частину документа можна вивантажити до таблиці значень

Таблицю значень можна вивантажити до табличної частини документа

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

книга Мова запитів у 1С / Використання таблиці значень як джерело тимчасової таблиці

Приклади із документації 1С (синтакс-помічник)

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

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

Методи:

Вставити (Insert) вставити рядок у таблицю значень

Додати (Add) - додає рядок

ЗавантажитиКолонку (LoadColumn) — завантажує значення з масиву до колонки таблиці

Підсумок (Total) - виводить підсумок обраної колонки

Знайти (Find) – пошук рядка в таблиці, що містять значення. Ефективно для пошуку унікальних значень

ЗнайтиРядки (FindRows)- виводимо масив рядків (посилання на рядки), що відповідають умовам.

Отримати (Get) - отримує значення за індексом

Зрушити (Move) - зсувається рядки всередині таблиці

ТаблицяЗначень (ValueTable)

// Створення таблиці значень

ТаблицяЗначень = Новий ТаблицяЗначень;
// додамо до таблиці значень три колонки

// додамо рядок
Стр=ТаблицяЗначень.Додати();
Стр.Отдел = "Відділ 1";
Стр.Сотрудник="Іванов";
Стр.Оклад = 5600;

// додамо нову колонку
ТаблицяЗначень.Колонки.Додати("Стаж",,"Стаж роботи");

// введення нового рядка та даних по рядку
ТекСтр = ТаблицяЗначень.Додати();
ТекСтр.Отдел = "Відділ 2"; ТекСтр.Сотрудник = "Петрів";
ТекСтр.Оклад = 6700; ТекСтр.Стаж = 22;

Приклад пошук рядка за значенням:
Знайдена Рядок = ТаблицяЦен.Найти(ВибТовар, "Товар");
Якщо ЗнайденийРядок = Невизначено Тоді
Попередження(НСтр("ua = 'Товар не знайдено!';"
+ "en = 'Article not found!'"));
Інакше
ЦінаТовара = ЗнайденаРядок.Ціна;
КінецьЯкщо;

Приклад пошуку всіх рядків, що містять значення
// Список Працівників – реквізит форми для подання інформації

// Про працівників (тип ТаблицяЗначень).

// У формі розташоване табличне поле Список Працівників, в якому

// Показуються дані Список Працівників.

// За допомогою запиту вибирається інформація про працівників.

Запит = Новий Запит;
Текст Запиту =
"ВИБРАТИ
// текст запиту
// .
";
Запит. Текст = Текст Запиту;
Список Працівників = Запит.Виконати().Вивантажити();

Відбір = Новий Структура();
Відбір.Вставити("ФізОбличчя",Довідники.ФізичніОсоби.ПустаПосилання());

Рядки = Список Працівників.ЗнайтиРядки(Відбір);
Якщо рядки.Кількість() > 0 Тоді
Елементи Форми. Список Працівників. Поточна Рядок = Рядки [0];
КінецьЯкщо;

Див 30.04.23

У таблицю значень не можна додати колонку з типом Бульово (щоб використовувати як прапорець, позначку у формах)?

ТЗ.Колонки.Додати("Прізвище", Новий ОписТипів("Рядок"),"Прізвище");

ТЗ.Колонки.Додати("Прапор", Новий ОписТипів("Булево"),"Прапор")

Дивись

//Перевірка що є колонка Товар

Якщо ТаблицяДокументів.Колонки.Знайти("Товар") <> Невизначено Тоді

До рядків таблиці значень можна звертатись через оператор індексації [ ].

Індексація рядків починається з нуля, щоб змінити значення у першому рядку потрібно використовувати індекс 0:

//Змінюємо значення в першому рядку в колонці Товар
Стр[0].Товар = "Телевізор";

Розписують два способи перебору таблиці значень та вибіркового видалення рядків

- Переглядати таблицю значень з кінця;

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

- був варіант через "Знайти Рядки" (він описаний на інших сайтах).

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

Пошук у таблиці значень

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

Метод Знайти поверне перший рядок із знайденим значенням, тобто якщо у таблиці 2 рядки з таким значенням, то буде знайдено лише перший із них.

Метод ЗнайтиРядки повертає масив знайдених рядків та може використовуватись для пошуку неунікальних значень.

Додавання індексів до таблиць значень (якщо сотні тисяч і мільйони рядків, то індекси потрібні).

/ додавання індексів
ТаблицяДокументів.Індекси.Додати("Това р");
ТаблицяДокументів.Індекси.Додати("Сумма");
//будуть створені 2 індекси
//при пошуку по колонці Товар або колонці Сума
// використовуватиметься індекс
//якщо здійснити пошук відразу по двох колонках
//методом ЗнайтиРядки, то індекс не використовуватиметься
//Для цього потрібен складовий індекс
ТаблицяДокументів.Індекси.Додати("Това р, Сума");

РСА: В обробці Управління Касами, де контроль заповнення МРЦ, приклад хитрого відбору, застосованого до таблиці значень

НульовіРядки = ТаблицяТоваров.НайтиРядки(Новий Структура("ОзнакаНепотрібноїРядки", 1));
Для кожного рядка Таблиці З нульових рядків Цикл
Таблиця Товарів. Видалити (Рядок Таблиці);
КінецьЦикл;

Таблиця значень 1с. Опис та приклади використання

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

Таблиці складаються з рядків і колонок. Рядки розташовуються вниз по вертикалі, а колонки - праворуч по горизонталі. Рядки та колонки мають індекси, за якими до них можна звертатися безпосередньо (починаються з 0). Крім цього, до колонок можна звертатися за ідентифікатором.

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

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

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

Створення таблиці значень

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

тз  =
Новий ТаблицяЗначень;

Колонки таблиці значень

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

  1. Ім'я — ідентифікатор колонки (може містити лише алфавітні символи, цифри та знаки підкреслення. Причому, починатися ім'я колонки може лише з літери чи символу підкреслення);
  2. Заголовок — представлення колонки у діалогах (може містити довільні символи);
  3. ТипЗначення — тип значення вмісту осередків у цій колонці. Якщо тип не заданий, у комірці можна зберігати значення довільного типу;
  4. Ширина - ширина колонки у діалогах;

Доступ до колонок здійснюється через властивість Колонки об'єкта ТаблицяЗначень. Для додавання нової колонки використовується метод Додати():

тз.Колонки.Додати("Найменування",
Новий ОписТипів("Рядок")); тз.Колонки.Додати("Кількість",
Новий ОписТипів("Число")); тз.Колонки.Додати("Властивість");//можна зберігати довільні дані

Для того, щоб визначити наявність колонки з потрібним ім'ям, використовується метод Знайти():

знайдКолонка  = тз.Колонки.Знайти("Найменування");
Якщо знайдКолонка  =
Невизначено
Тоді Повідомити("Колонку не знайдено!");
КінецьЯкщо;

Перебір колонок виконується так:

Для
кожного Колонка  З тз.Колонки  Цикл Повідомити(Колонка.Ім'я);
КінецьЦикл;

Для видалення колонки використовується метод Видалити():

знайдКолонка  = тз.Колонки.Знайти("Властивість");
Якщо
НЕ знайдКолонка  =
Невизначено
Тоді тз.Колонки.Видалити(знайдКолонка);
КінецьЯкщо;

Властивості колонки таблиці значень

Ім'я Тип Опис
Ім'я Рядок символьний ідентифікатор колонки, яким до неї можна звертатися з коду
Заголовок Рядок рядкове подання колонки на формі
ТипЗначення ОписТипів властивість організовує простір доступних значень, які можна вказати в цій колонці
Ширина Число ширина колонки на формі (виражається у кількості символів)

Методи колекції колонок таблиці значень

Вставити() Вставляє нову колонку у вказану позицію колекції
Додати() Додає нову колонку до кінця колекції.
Кількість() Повертає кількість колонок у колекції
Знайти() Шукає колонку в колекції на ім'я
Очистити() Видаляє всі колонки з колекції
Зрушити() Зсуває колонку вліво чи вправо
Видалити() Видаляє колонку з колекції

Рядки таблиці значень

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

Додавання та видалення рядків

Для додавання нового рядка використовується метод Додати() об'єкта ТаблицяЗначень. Метод повертає об'єкт РядокТаблиціЗначень, з яким доступні подальші маніпуляції:

РядокТЧ  = тз.Додати();

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

РядокТЧ.Найменування =
"Стілець дерев'яний"; РядокТЧ.Кількість =
1; РядокТЧ.Властивість = ПоточнаДата();

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

тз = РядокТЧ.Власник();

Для видалення рядка використовується метод Видалити об'єкта ТаблицяЗначень . Рядок можна видалити або передавши методу безпосередньо рядок, або його індекс:

//безпосереднє видалення рядка тз.Видалити(РядокТЧ);
//видалення рядка за індексом тз.Видалити(тз.Індекс(РядокТЧ));

Перебір рядків таблиці значень

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

Для
кожного РядокТЧ З тз Цикл ІндРядки = тз.Індекс(РядокТЧ);
КінецьЦикл;
//в окремих випадках
Для ІндРядки =
0
за тз.Кількість()
-
1
Цикл РядокТЧ = тз.Отримати(ІндСтроки);
КінецьЦикл;

Пошук рядків

На відміну від платформи 1С: Підприємство 7.7 у 8-ці розширено функціонал роботи з таблицею значень. Пошук можна виконувати не тільки за значенням у колонці (у цьому випадку буде повернено перший знайдений рядок), але й за набором властивостей (у цьому випадку повертається масив рядків):

//Пошук першого рядка НайдРядок = тз.Знайти(Номенклатура,
"Номенклатура");
//Пошук набору рядків ПараметриПошуку =
Новий Структура("Номенклатура", Номенклатура); мНайдРядки = тз.ЗнайтиРядки(ПараметриПошуку);

Усі методи таблиці значень:

Вставити() Вставляє рядок на вказане місце
ВибратиРядок() Дозволяє інтерактивно вибрати рядок у діалоговому вікні
ВивантажитиКолонку() Вивантажує значення осередків зазначеної колонки в масив значень
Додати() Додасть новий рядок до таблиці значень
ЗавантажитиКолонку() Завантажує значення у комірки зазначеної колонки з масиву
ЗаповнитиЗначення() Заповнює осередки зазначених колонок певним значенням
Індекс() Повертає індекс рядка таблиці значень
Підсумок() Повертає підсумований підсумок по колонці таблиці значень
Кількість() Повертає кількість рядків у таблиці значень
Знайти() Виконує пошук рядка за значенням
ЗнайтиРядки() Виконує пошук рядків за вказаними параметрами
Очистити() Очищує рядки таблиці значень
Отримати() Повертає рядок за його індексом
Згорнути() Виконує стиснення рядків та колонок таблиці значень
Зрушити() Зсув рядка вгору або вниз за таблицею
Копіювати() Створює нову таблицю значень копіюванням поточної
КопіюватиКолонки() Створює нову порожню таблицю значень шляхом копіювання колонок поточної таблиці
Сортувати() Виконує сортування рядків таблиці значень за вказаними колонками
Видалити() Видаляє рядок таблиці значень

Ієрархію властивостей та типів значень, пов'язаних із таблицею значень, схематично можна представити у вигляді дерева:

Читайте також:

Схожі статті

  • Що таке таблиця об'єкт об'єкт
  • Що таке Кастер у підвісці
  • Що таке соус Шою
  • Що таке МСФЗ простими словами
  • Що таке сорт м'яса
  • Що таке Фасадна панель для посудомийної машини
  • Що таке джунглі історія 5 клас
  • Що таке обсяг простими словами
  • Недавні статті

  • Чому взуття скрипить при ходьбі
  • Коли день народження у стрічці
  • Чи можна кішці їсти сіль
  • Варіанти планування ділянки 15 соток прямокутної форми
  • Що означає півмісяця знак
  • Рейсмусовий верстат для чого
  • У якому віці парують свиней
  • У чому полягає принцип нарахування та у яких випадках він застосовується