Таблица значений в 1С 8.3 на примерах

Таблица значений в 1С 8.3 позволяет строить динамические наборы значений. При этом каких-либо жестких ограничений на тип данных не накладывается. Таблица значений создается в памяти и не сохраняется в базе данных, имеет множество полезных возможностей и работает очень быстро.

Свойствами таблиц значений являются:

  • индексы (коллекция индексов таблицы значений)
  • колонки (коллекция колонок таблицы значений).

Элементом коллекции является строка таблицы значений. Но необходимо учитывать тот факт, что с таблицей значений можно работать только на сервере.

Работа с таблицей значений в 1С 8.3 на примерах

Создать новую таблицу значений

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

Добавить колонку в таблицу значений

ТЗ.Колонки.Добавить("Автомобиль");
ТЗ.Колонки.Добавить("Цвет");
ТЗ.Колонки.Добавить("Класс");

Добавить колонку с описанием типа

// Необходимо, чтобы колонка таблицы значения была строго типизировано
ОписаниеВеса = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0));
ТЗ.Колонки.Добавить("ВесАвтомобиля", ОписаниеВеса, "Вес Автомобиля");

Добавить строку в таблицу значений

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Автомобиль = "Mitsubishi ";
НоваяСтрока.Цвет = "Синий";
НоваяСтрока.Класс = "C класс";
НоваяСтрока.Вес = 1500;

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Автомобиль = "KIA";
НоваяСтрока.Цвет = "Зелёный";
НоваяСтрока.Класс = "A класс";
НоваяСтрока.Вес = 1800;

НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Автомобиль = "BMW";
НоваяСтрока.Цвет = "Зелёный";
НоваяСтрока.Класс = "E класс";
НоваяСтрока.Вес = 2100;

Заполнить строку значениями

//ДанныеДляЗаполнения - структура, стройка другой таблицы и т.п.
//Метод сопоставляет имена свойств и заполнят по ним значение
ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), ДанныеДляЗаполнения);

Вставить строку

//Метод вставляет в таблицу значения новую строку 
НоваяСтрока = ТЗ.Вставить(0);  
// Если нужно изменить значения не всех колонок, то можно использовать НоваяСтрока = ТЗ[0]
НоваяСтрока.Автомобиль = "Mitsubishi ";
НоваяСтрока.Цвет = "Белый";
НоваяСтрока.Класс = "C класс";
НоваяСтрока.Вес = 1500;

Сортировка

//Сортирует таблицу значение по нужным колонкам и направлению сортировки
ТЗ.Сортировать(«Цвет Убыв, Вес Возр»);

Получить значение

//Предположим что в строке №1 хранится информация об автомобиле БМВ.
//А цвет храниться в колонке №2 с именем "Цвет" 
//Задача - получить значение цвета из таблицы значений
//
//Если мы знаем номер строки и название свойства:
ЦветБМВ = ТЗ[0].Цвет;
//Если мы значем номер строки и колонки
ЦветБМВ = ТЗ[0][1];
// * отсчет номера строк и колонок начинается с 0

Удалить строку

//Удаляем строку №1 из таблицы значений
ТЗ.Удалить(ТЗ[0]);
//Удалить строки по условию можно с помощью перебора (см. Обход таблицы значений)

Найти одну строку

//Позволяет найти одну строку в таблице значений.
//Искать можно как по всем колонкам таблице
ИскомаяСтрока = ТЗ.Найти("Синий");
//Так и по определенной колонке:
ИскомаяСтрока = ТЗ.Найти("Синий", "Цвет");
//*Метод находит первую попавшуюся строку, если их несколько
//Если строка не найдена, то вернет "Неопределено"

Найти несколько строк

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

Свернуть таблицу значений

//Позволяет "свернуть" таблицу значений:
//1С оставляет указанные колонки в первом параметре и суммирует по колонкам из второго параметра
ТЗ.Свернуть("Товар", "Вес"); 

Скопировать таблицу

//Позволяет получить копию таблицы значений. 
НоваяТЗ = ТЗ.Скопировать();
//Если нужны только некоторые строки - нужно вставить массив таких строк в 1-ый параметр
//Если нужны только некоторые колонки - нужно вставить их имена через запятую в 2-ый параметр

Скопировать таблицу без данных

//Делает копию таблицы, но без строк. Только колонки
НоваяТЗ = ТЗ.СкопироватьКолонки();

Узнать количество строк

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!

КоличествоСтрокТЗ = ТЗ.Количество();

Очистить

//Очищает таблицу значений от строк
ТЗ.Очистить();

Обход таблицы значения

Обход коллекции с выбором элемента осуществляется с помощью цикла <<Для>>, где оператор цикла Для предназначен для циклического повторения операторов, находящихся внутри конструкции, в данном случае таблицы значений. Так же можно обращаться к элементу коллекции посредством оператора [ ] ([аргумент]), где аргументом является индекс строки. Нумерация индексов строк начинается с нуля [0].

Прямой обход

Для Каждого Стр Из ТаблицаЗначений Цикл

Сообщить(Стр.Номенклатура); 

КонецЦикла;

Обратный обход таблицы (снизу вверх)

Чаще всего применяется для удаления строк в таблице.

//Товары - таблица значений, где необходимо удалить строки с "Сумма = 0"
Сч=0;
Пока Сч<Товары.Количество() Цикл
       ТекущаяСтрока=Товары[Сч];
       Если ТекущаяСтрока.Сумма=0 Тогда
              Товары.Удалить(ТекущаяСтрока);
              Сч=Сч-1;  
       КонецЕсли;
       Сч=Сч+1;
КонецЦикла;

Обход колонок

Можно перечислить все колонки в таблице значений в 1с 8.3 с помощю цикла <<Для>>:

Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл

Сообщить(Колонка.Имя);

КонецЦикла;

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

//Есть структура:
СтруктураЛогинПароль = Новый Структура;
СтруктураЛогинПароль.Вставить("Логин", "root");
СтруктураЛогинПароль.Вставить("Пароль", "1s83.info");

//Создаем таблицу значений:
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Логин");
ТЗ.Колонки.Добавить("Пароль");

//"Превращаем" структуру в таблицу значений:
Для Каждого ТекущийЭлемент из СтруктураЛогинПароль Цикл
	НовСтр=ТЗ.Добавить();
	НовСтр.Логин = ТекущийЭлемент.Ключ;
	НовСтр.Пароль = ТекущийЭлемент.Значение;                          
КонецЦикла;

Поделиться

Оцените статью

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Загрузка...

Подпишитесь на наш YouTube канал

YouTube

Подписаться

Комментировать