О таблице значений 1С - что это такое и ее создать.

таблица значений 1С
(Эта статья относится к циклу статей 1С с нуля; программирование 1с с нуля; таблица значений 1с)

Виртуальная структура-хранилище данных в табличной форме - вот что такое таблица значений 1С

Таблица значений не является постоянным объектом базы данных 1С, и не сохраняется между сеансами запуска.

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

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

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

Новый ТаблицаЗначений;

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

Сразу приведу простой пример.

//
МояТЗ = Новый ТаблицаЗначений;     // создаем новую таблицу значений, хранящуюся в переменной "МояТЗ"
МояТЗ.Колонки.Добавить("Фамилия"); // создаем колонку "Фамилия"
МояТЗ.Колонки.Добавить("Имя");     // создаем колонку "Имя"
Сообщить(МояТЗ);                   // вывести значение переменной МояТЗ
//

Я создал таблицу значений 1С, с двумя колонками: "Фамилия", "Имя". Процедура Сообщить(МояТЗ) выведет в окно сообщений тип переменной МояТЗ: ТаблицаЗначений

Наша таблица значений пока пустая. Добавим в нее пару строк, с именами и фамилиями.

// заполняем таблицу значений
 
// добавляем первую строку в нашу таблицу значений
НоваяСтрока = МояТЗ.Добавить();
НоваяСтрока.Фамилия = "Сидоров";
НоваяСтрока.Имя     = "Вася";
// добавляем вторую строку в нашу таблицу значений
НоваяСтрока = МояТЗ.Добавить();
НоваяСтрока.Фамилия = "Иванов";
НоваяСтрока.Имя     = "Петя";

Мы получили таблица такого вида:

Сидоров Вася
Иванов Петя

Это были "чистые" данные, содержащиеся в таблице значений МояТЗ. А сейчас покажу дополнительную служебную информация, чтобы было еще понятнее. Приведу "шапку" нашей таблицы значений и номера строк.

Номер строки Фамилия Имя
0 Сидоров Вася
1 Иванов Петя

Нужно запомнить: номера строк в таблице значений начинаются с нуля

Для чего нам вообще нужны номера строк? А для того, чтобы мы могли обратиться к отдельной строке таблицы значений, например, взять и вывести эту строку на экран.

// *** выводим значений нулевой строки на экран *** (в быту мы обычно нумеруем вещи с единицы, а здесь - с нуля)
 
  // получаем нулевую строку нашей таблицы при помощи индекса строки в квадратных скобках
  НашаНулеваяСтрока = МояТЗ[0];
  // теперь вся нулевая строка содержится в переменной "НашаПерваяСтрока"
  Сообщить(НашаНулеваяСтрока.Фамилия); // выводим на экран значение столбца "Фамилия", хранящееся в нулевой строке
  Сообщить(НашаНулеваяСтрока.Имя);     // выводим на экран значение столбца "Имя", из этой же строки

В результате на экран будет выведено:

Сидоров
Вася

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

// обращаемся к содержимому ячейки напрямую, без лишних переменных
  Сообщить(МояТЗ[0].Фамилия); // выводим на экран значение столбца "Фамилия" нулевой строки
  Сообщить(МояТЗ[0].Имя);     // выводим на экран значение столбца "Имя" из этой же строки

Чтобы вывести значение ячеек из второй строки (не забываем, что строка вторая, но индекс этой строки равен единица, так нумерация начинается с нуля)

// обращаемся к содержимому ячейки напрямую, без лишних переменных
  Сообщить(МояТЗ[1].Фамилия); // выводим на экран значение столбца "Фамилия" первой строки
  Сообщить(МояТЗ[1].Имя);     // выводим на экран значение столбца "Имя" из первой строки

Наконец, заключительный момент в этой статье. Я показал вам пример обращения к отдельной строке таблицы значений по индексу (номеру строки). Универсальная форма для чтения или присвоения содержимого ячейки такова: "МояТаблицыЗначений[НомерСтроки].ИмяКолонки"

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

//
  // цикл перебора и вывода всех строк нашей таблицы значений
  //
  Для НомерСтроки = 0 По МояТЗ.Количество() - 1 Цикл
    Сообщить(МояТЗ[НомерСтроки].Фамилия); // выводим на экран значение столбца "Фамилия"
    Сообщить(МояТЗ[НомерСтроки].Имя);     // выводим на экран значение столбца "Имя"
  КонецЦикла;

В результате запуска этого цикла на экран будет выведено:

Сидоров
Вася
Иванов
Петя

Здесь я рассказал самые азы в работе с таблицей значений 1С. Эти сведения применимы к 1С 8.0, 8.1, 8.2 На этом интересные подробности о объекте "таблица значений 1с" не заканчиваются. Этот объект обладает огромными возможностями для удобной работы с данными. Я расскажу об этом с следующих статьях.

Дегтярев Роман.

Как научиться программировать в 1С с нуля

Как работать программистом 1С и получать до 150 000 рублей в месяц?

ЗАПИШИСЬ НА БЕСПЛАТНЫЙ 2-НЕДЕЛЬНЫЙ МИНИ-КУРС

ПРОГРАММИРОВАНИЕ в 1С

ДЛЯ НОВИЧКОВ !

Курс придет на электронную почту. Стань программистом, выполняя пошаговые задания.

Для участия нужен только компьютер и интернет

Бесплатный доступ на курс:



Комментарии для тех, кто VKontakte


8 комментариев: Таблица значений 1С – 1 часть. Основы. Создание таблицы.

  • Светлана говорит:

    Пардон,
    все работает, видимо просто какой-то латинский символ попал
    переписала строку Добавить - заработало

  • admin говорит:

    Хорошо. А вообще, рекомендую, если есть возможность - приводить пример сделанного кода, чтобы другие могли взять ваш опыт "на вооружение" :)

  • Ози говорит:

    Очень помогла ваша статья. Поставил себе задачку, во внешней обработке есть реквизит типа дата, чтобы при нажатии на кнопку возвращалось значение дня недели в буквенном варианте. Значения заполнял в ТЗ. Помогло, спасибо!

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Интернет-курс "Программирование в 1С с нуля"

Учись программировать и зарабатывать до
150 000 руб. в месяц! ТОЛЬКО СЕГОДНЯ - БЕСПЛАТНЫЙ ДОСТУП К КУРСУ!

Присоединяйся, тут все свои!