Таблиця значень в 1с

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

І тільки таблиця значень:

  • Здатна безпосередньо заповнювати табличні частини документів, довідників і обробок;
  • Є результатом виконання запиту;
  • Легко читається і наочно формується;
  • і багато багато іншого.

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

З чого складаються таблиці значень

Всі початківці розробники чітко знають, що у таблиці значень є:

  1. Колонки, що описують структуру таблиці;
  2. Рядки, що наповнюють таблицю інформацією.

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

Але про все по порядку.

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

Як видно з прикладу, колонок у таблиці 5, за винятком номера рядка за порядком.

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

Якщо в подальшому планується використання таблиці значень в якості джерела даних для запиту, вказівка ​​типу даних необхідно (Рис.2).

Додавання рядка відбувається методом Додати (), з присвоєнням імені нового рядка.

Індекси таблиці значень

Пошук по таблиці значень здійснюється двома методами:

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

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

У першому випадку пошук відбувається по одному значенню і одній колонці, саме її і треба передавати в індекси (Рис.3)

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

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

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

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

  1. Повністю повторити структуру таблиці документа, зі збереженням всієї можливої ​​інформації;
  2. Визначити тільки ті колонки і рядки, які необхідні для подальшої роботи, і вивести їх.

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

Слід зазначити, що зіставлення колонок табличній частині і ТЗ відбувається за іменами.

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

Коли необхідно зберегти тільки структуру таблиці, можна скористатися кодом (Рис.4)

При цьому будуть збережені колонки таблиці, а інформація і рядки з дубліката будуть видалені.

Таблиця значень і запит

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

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

Замінивши «*» на найменування колонок (рядок виду ТЗ.Номенклатура) можна зменшити обсяг вивантажується інформації.

Помилка при виконанні запиту (Рис.5) «Тип не може бути оброблений в запиті», говорить про те, що розробник забув виконати частину коду Рис.2 і не типізував колонки.

Таблиця значень і цикли

При переборі рядків таблиці значень методом містить лічильник (Рис. 6). важливо пам'ятати, що початкове значення індексу рядків - 0, а кінцеве значення ітератора повинно бути на 1 менше кількості рядків в таблиці. В іншому випадку є 100% ймовірність виникнення помилки «Значення індексу виходить за межі діапазону»

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

Схожі статті