Получить консультацию

Таблица значений в 1С 8.3 – примеры работы

Содержание

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

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

Создание таблицы значений

// Создание таблицы значений ТабЗнач = Новый ТаблицаЗначений;

Добавление колонок

// Добавление колонок в таблицу значений без указания типа ТабЗнач.Колонки.Добавить(“Сотрудник”); ТабЗнач.Колонки.Добавить(“Должность”); ТабЗнач.Колонки.Добавить(“Оклад”); // Добавление колонки с явным указанием типа значения и заголовком ОписаниеПремия = Новый ОписаниеТипов(“Число”, Новый КвалификаторыЧисла( 10 , 2)); ТабЗнач.Колонки.Добавить(“ПроцентПремии”, ОписаниеПремия, “Процент премии”); ТабЗнач.Колонки.Добавить(“Премия”, ОписаниеПремия, “Премия”);

Добавление новой строки, заполнение реквизитов

// Добавление новой строки в таблицу значений СтрокаТЗ = ТабЗнач.Добавить(); // Заполнение строки по именам реквизитов СтрокаТЗ.Сотрудник = “Иванов Иван”; СтрокаТЗ.Должность = “Программист 1С”; СтрокаТЗ.Оклад = 100000; СтрокаТЗ = ТабЗнач.Добавить(); // Заполнение строки таблицы значений по индексам колонок СтрокаТЗ[0] = “Петров Петр”; СтрокаТЗ[1] = “Тестировщик”; СтрокаТЗ[2] = 80000;

Обращение к строке таблицы значений по индексу

ТабЗнач.Добавить(); // Обращение к строке таблицы значений по индексу ТабЗнач[2].Сотрудник = “Федоров Василий”; // Работа с таблицей как с двумерным массивом ТабЗнач[2][1] = “Программист 1С”; // Обращение к строке таблицы значений при помощи метода Получить ТабЗнач.Получить(2).Оклад = 90000;

Вставить новую строку в нужное место и заполнить значения этой строки

// Вставить новую строку в указанную позицию в таблицу значений ВставленнаяСтрока = ТабЗнач.Вставить(1); // Заполнить строку значениями // В качестве источника данных заполнения могут быть объекты с именованными свойствами // – Структура, строка таблицы значений, объект, и т.п. // метод производит сопоставление свойств по именам, // и заполняет значения у совпавших свойств приемника – в нашем случае строки таблицы значений ЗаполнитьЗначенияСвойств(ВставленнаяСтрока, СтрокаТЗ); ВставленнаяСтрока.Сотрудник = “Сидоров Александр”;

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

// Заполнение колонки для всех строк таблицы значений ТабЗнач.ЗаполнитьЗначения(10.5, “ПроцентПремии”);

Перебор строк и колонок таблицы значений

// Коллекция строк и коллекция колонок по своему поведению похожи на массивы,
// и работать с ними можно схожим образом // Перебрать все колонки таблицы значений и вывести заголовки,
// а если не заполнен заголовок – то имя колонки
Для Каждого Колонка из ТабЗнач.Колонки Цикл Сообщить(?(ЗначениеЗаполнено(Колонка.Заголовок),Колонка.Заголовок, Колонка.Имя)); КонецЦикла; // Перебрать все строки и произвести какие-то вычисления,
// например, посчитать премию, как Оклад * процент премии /100
Для Каждого СтрокаТЗ из ТабЗнач Цикл СтрокаТЗ.Премия = СтрокаТЗ.Оклад * СтрокаТЗ.ПроцентПремии / 100; КонецЦикла;

Копирование таблицы значений в 1С - примеры

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

Сортировка таблицы значений в 1С 8. Как упорядочить таблицу значений.

// Сортировать таблицу значений по колонке в 1С 8 КопияТЗ.Сортировать(“Оклад”); // Сортировать таблицу значений по нескольким колонкам в 1С 8 КопияТЗ.Сортировать(“Должность Убыв, Оклад Возр”);

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

// Просуммировать значения в одних колонках, свернув таблицу значений в разрезе других колонок // При использовании метода Свернуть, все не использованные в методе колонки удалятся! // Первым параметром идет список колонок через запятую, по которым мы хотим получить группировки // Вторым параметром идет список колонок, значения в которых нужно просуммировать // В этом примере в таблице значений КопияТЗ останутся только колонки Должность и Оклад КопияТЗ.Свернуть(“Должность”, “Оклад”);

Удаление строк из таблицы по условию. Обратный обход таблицы значений снизу вверх

// Удаление строк из таблицы значений по условию. Обратный перебор таблицы значений в 1С КопияДляУдаления = ТабЗнач.Скопировать();ВсегоСтрок = КопияДляУдаления.Количество() 1; Для Сч = ВсегоСтрок по 0 Цикл Если КопияДляУдаления[-Сч].Оклад > 80000 Тогда // Удаление строки таблицы значений. // В качестве параметра может быть как конкретная строка таблицы значений, так и индекс строки. КопияДляУдаления.Удалить(-Сч); КонецЕсли; КонецЦикла; // В результате останутся только строки, где оклад меньше или равен 80000 // Обратный перебор таблицы значений – второй вариант КопияДляУдаленияВариант2 = ТабЗнач.Скопировать(); Сч = КопияДляУдаленияВариант2.Количество() 1; Пока Сч >= 0 Цикл Если КопияДляУдаленияВариант2[Сч].Должность = “Тестировщик” Тогда КопияДляУдаленияВариант2.Удалить(Сч); КонецЕсли; Сч = Сч 1; КонецЦикла; // В результате останутся только строки, где должность не равна “Тестировщик”

Поиск строк в таблице значений 1С

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

Удалить все строки из таблицы значений

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

Получить навыки разработки в 1С, и составить целостное представление о платформе 1С Предприятие 8 вы можете, пройдя мой курс “Разработчик 1С с нуля”.

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

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

четыре − один =

К НАЧАЛУ