Эта универсальная таблица значений

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

И только таблица значений:

  • Способна напрямую заполнять табличные части документов, справочников и обработок;
  • Является результатом выполнения запроса;
  • Легко читается и наглядно формируется;
  • и многое, многое другое.

В этой статье мы постарались дать общее представление о таком сложном и универсальном объекте, как таблица значений.

Из чего состоят таблицы значений

Все начинающие разработчики четко знают, что у таблицы значений есть:

  1. Колонки, описывающие структуру таблицы;
  2. Строки, наполняющие таблицу информацией.

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

Но обо всем по порядку.

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

Рис.1

Как видно из примера, колонок у таблицы 5, не считая номера строки по порядку.

В большинстве случаев нет необходимости указывать тип данных колонки и её ширину, достаточно определить наименование столбца, но в некоторых случаях без этого просто не обойтись (допустим, при выгрузке таблицы в файл формата dbf).

Если в дальнейшем планируется использование таблицы значений в качестве источника данных для запроса, указание типа данных необходимо (Рис.2).

Рис.2

Добавление строки происходит методом Добавить(), с присвоением имени новой строки.

Индексы таблицы значений

Поиск по таблице значений осуществляется двумя методами:

  • Найти (возвращает первый найденный элемент по определенным параметрам, в противном случае значение Неопределено);
  • НайтиСтроки (возвращает массив строк таблицы, удовлетворяющих определенным условиям).

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

В первом случае поиск происходит по одному значению и одной колонке, именно её и надо передавать в индексы (Рис.3)

Рис.3

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

В случае, приведенном на примере, вторая строка указывает на одновременный поиск строк, содержащих определенное значение Номенклатуры и ее характеристики, а третьей строкой указано, что к параметрам поиска может быть добавлен документ «Заказ на производство».

Копирование, выгрузка, загрузка и очистка ТЗ

При работе с различными объектами метаданных конфигураций, а также отчетами и обработками нередко возникает ситуация, когда необходимо совершить некоторые действия с их табличными частями. Работать напрямую с элементами формы или табличными частями документов не всегда удобно.

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

  1. Полностью повторить структуру таблицы документа, с сохранением всей возможной информации;
  2. Определить только те колонки и строки, которые необходимы для дальнейшей работы, и вывести их.

Обратное действие (заполнение табличной части) происходит методом Загрузить(), единственным параметром которого является имя выводимой таблицы.

Следует отметить, что сопоставление колонок табличной части и ТЗ происходит по именам.

Полностью скопировать одну ТЗ в другую, а также определить, какие строки и колонки будут перенесены можно методом Скопировать().

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

Рис.4

При этом будут сохранены колонки таблицы, а информация и строки из дубликата будут удалены.

Таблица значений и запрос

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

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

Рис.5

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

Ошибка при выполнении запроса (Рис.5) «Тип не может быть обработан в запросе», говорит о том, что разработчик забыл выполнить часть кода Рис.2 и не типизировал колонки.

Таблица значений и циклы

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

Рис.6

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



Глава Минкомсвязи признал неэффективность блокировки незаконного контента
Глава Министерства связи и массовых коммуникаций РФ Николай Никифоров, в рамках своего выступления на правительственном часе в Госдуме, назвал блокировку ...
В Петербурге построят аналог «Сколково» за 41 млрд рублей
Дмитрий Медведев подписал распоряжение о создании под Санкт-Петербургом инновационного кластера с научными центрами, лабораториями, учебными зданиями, жилыми и производственными комплексами ...
Материальная помощь бывшему сотруднику
Организация может оказывать материальную помощь сотрудникам, бывшим сотрудникам, а также членам их семей при возникновении особых обстоятельств. Например, в связи ...
Учет по договору на информационно-технологическое сопровождение "1С:ИТС"
Официальное информационно-технологическое сопровождение (ИТС) включает в себя сервисы и услуги, которые предоставляются фирмой "1С" и ее сертифицированными партнерами. О том, ...
Новый релиз Управление небольшой фирмой, редакция 1.6
Текущая версия конфигурации "Управление нашей фирмой" предназначена для использования с версией системы 1С:Предприятие 8.3 не ниже 8.3.10.2168. Обновление предназначено для ...
Тест 1С:Зарплата и управление персоналом 8 (Ред. 3.1)  - 10 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Зарплата и управление персоналом 8 (Ред. 3.1)". Пройди тест! Всего 10 вопросов:В документе Начисление ...
Тест 1С:Управление производственным предприятием 8  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Управление производственным предприятием 8". Пройди тест! Всего 5 вопросов:Каким документом регистрируются невыходы работников организации, ...
Тест 1С:Бухгалтерия 8.3  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Бухгалтерия 8.3". Пройди тест! Всего 5 вопросов:В программе 1С:Бухгалтерия 8 для оформления платежа в ...
Тест Платформа 1С:Предприятия 8  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "Платформа 1С:Предприятия 8". Пройди тест! Всего 5 вопросов:Текст запроса, который будет фактически исполняться системой ...
Тест 1С:Управление нашей фирмой 8  - 7 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Управление нашей фирмой 8". Пройди тест! Всего 7 вопросов:Можно ли запланировать загрузку ресурса на ...
Тест 1С:Управление торговлей 8 (ред. 11.2)  - 10 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Управление торговлей 8 (ред. 11.2)". Пройди тест! Всего 10 вопросов:Какие варианты назначения скидок в ...
Тест 1С:Документооборот 8 (Ред. 2.0)  - 5 вопросов от 20.10.2017
Проверь свои профессиональные навыки по программе "1С:Документооборот 8 (Ред. 2.0)". Пройди тест! Всего 5 вопросов:Могут два и более пользователя открыть ...
Перенос выходных дней в 2018 году
Утвержден перенос выходных дней в 2018 году Постановление от 14 октября 2014 года № 1250 ...
Форма статистического наблюдения № 4-инновации за 2017 год (2)
Внесены изменения в форму статистического наблюдения № 4-инновация "Сведения об инновационной деятельности организации", утвержденную приказом Росстата от 30.08.2017 № 563 ...
«Альфа-банк» представил протез с чипом для бесконтактных платежей
Тренд с «вживлением» NFC-чипов для бесконтактной оплаты в различные устройства все больше набирает обороты. В этот раз свою разработку в ...