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

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

Содержание

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

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

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

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

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

// Добавление колонок в таблицу значений без указания типа ТабЗнач.Колонки.Добавить(«Сотрудник»); ТабЗнач.Колонки.Добавить(«Должность»); ТабЗнач.Колонки.Добавить(«Оклад»);// Добавление колонки с явным указанием типа значения и заголовком ОписаниеПремия = Новый ОписаниеТипов(«Число», Новый КвалификаторыЧисла( 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 не будет опубликован. Обязательные поля помечены *

тринадцать − 12 =

К НАЧАЛУ