Как работать с таблицей значений 1С 8.3, 1С 8.2 Таблица значений 1С 8.3, 1С 8.2 Примеры для разработчика 1С
Рассмотрим основные приемы работы с таблицей значений при помощи встроенного языка 1С. Примеры будем ориентировать на потребность программиста 1С применять эти способы и приемы в версиях 1С 8.3 и 1С 8.2
Как известно, таблица значений чрезвычайно удобный инструмент для оперирования с наборами данных.
Рассматривать будем начиная с самого простого, постепенно усложняя примеры работы с таблицей значений.
Создание таблицы значений 1С. Как создать таблицу значений в 1С 8.3, 1С 8.2
1 |
ТЗ = Новый ТаблицаЗначений; |
Добавление колонок в таблицу значений 1С. Как добавить колонки в таблицу значений в 1С 8.3, 1С 8.2
1 2 3 |
ТЗ.Колонки.Добавить("НазваниеКолонки1"); ТЗ.Колонки.Добавить("НазваниеКолонки2"); ТЗ.Колонки.Добавить("НазваниеКолонки3"); |
Во многих случаях, если не во всех, нужно указывать тип данных помещаемых в колонку таблицы. Указание типа данных добавит корректности при дальнейшей работе с таблицей значений.
1 2 3 |
ТЗ.Колонки.Добавить("НазваниеКолонки1", Новый ОписаниеТипов("Строка")); ТЗ.Колонки.Добавить("НазваниеКолонки2", Новый ОписаниеТипов("Число")); ТЗ.Колонки.Добавить("НазваниеКолонки3", Новый ОписаниеТипов("СправочникСсылка.Цены")); |
Добавление строк в таблицу значений 1С. Как добавить строки в таблицу значений в 1С 8.3, 1С 8.2
1 2 3 4 |
Строка= ТЗ.Добавить(); Строка.НазваниеКолонки1= "ДанныеСтроки1"; Строка.НазваниеКолонки2= "ВеличинаЧисла1"; Строка.НазваниеКолонки3= "ЦенаИзСправочникаЦен1"; |
В результате такого действия будет добавлена первая строка. Добавление второй строки полностью аналогично добавлению первой.
1 2 3 4 |
Строка= ТЗ.Добавить(); Строка.НазваниеКолонки1= "ДанныеСтроки2"; Строка.НазваниеКолонки2= "ВеличинаЧисла2"; Строка.НазваниеКолонки3= "ЦенаИзСправочникаЦен2"; |
И так далее.
Наиболее удобно применять заполнение таблицы в цикле. Например:
1 2 3 4 5 6 |
Для Каждого Строка Из ТЗ Цикл Строка= ТЗ.Добавить(); Строка.НазваниеКолонки1= "ДанныеСтроки#"; Строка.НазваниеКолонки2= "ВеличинаЧисла#"; Строка.НазваниеКолонки3= "ЦенаИзСправочникаЦен#"; КонецЦикла; |
Или заполнение в цикле для вывода результата SQL-запроса
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ТЗ = Новый ТаблицаЗначений(); ТЗ.Колонки.Добавить("НазваниеКолонки1", Новый ОписаниеТипов("Строка")); ТЗ.Колонки.Добавить("НазваниеКолонки2", Новый ОписаниеТипов("Число")); Запрос=новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РегистрЗатрат.НазваниеСтроки, | РегистрЗатрат.ВеличинаЧисла, |ИЗ | РегистрНакопления.РегистрЗатрат КАК РегистрЗатрат |СГРУППИРОВАТЬ ПО | РегистрЗатрат.НазваниеСтроки, | РегистрЗатрат.ВеличинаЧисла |УПОРЯДОЧИТЬ ПО | ВеличинаЧисла Убыв"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Строка= ТЗ.Добавить(); Строка.НазваниеКолонки1= Результат.НазваниеСтроки; Строка.НазваниеКолонки2= Результат.ВеличинаЧисла; КонецЦикла; |
Удаление строки из таблицы значений в 1с 8.3, 8.2
1 |
ТЗ.Удалить(5); |
Цифра, в данном случае, обозначает индекс удаляемой строки. Т.е. будет удалена шестая строка, т.к. у первой строки индекс нулевой.
Перечисление строк таблицы значений. Как перебрать строки в таблице значений в 1С 8.3, 1С 8.2
1 2 3 4 5 |
Для Каждого Строка Из ТЗ Цикл Сообщить("НазваниеКолонки1 - " + Строка.НазваниеКолонки1 + ";"); Сообщить("НазваниеКолонки2 - " + Строка.НазваниеКолонки2 + ";"); Сообщить("НазваниеКолонки3 - " + Строка.НазваниеКолонки3 + ";"); КонецЦикла; |
Перечисление колонок таблицы значений Как вывести имена колонок в таблице значений в 1С 8.3, 1С 8.2
1 2 3 |
Для Каждого Колонка Из ТЗ.Колонки Цикл Сообщить("Имя Колонки - " + Колонка.Имя + ";"); КонецЦикла; |
Записать данные таблицу значений, если имя колонки находится в переменной?
1 2 |
НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока[ИмяКолонки] = Значение; |
Выборка строки из таблицы значений через отдельное окно. Как установить курсор на нужной строке из таблицы значений 1С 8.3, 1С 8.2
1 |
ТЗ.ВыбратьСтроку("ЗаголовокОкна", "НомерСтрокиПозиционирования") |
или, для примера:
1 |
Книга= ТЗКниг.ВыбратьСтроку("Выберите нужную книгу", 1); |
Выгрузка и загрузка колонки из таблицы значений. Как выгрузить или загрузить колонку таблицы значений 1с 8.3, 1С 8.2
1 2 |
НашМассивЗначений = ТЗ.ВыгрузитьКолонку("НазваниеКолонки1"); ТЗ.ЗагрузитьКолонку(НашМассивЗначений, "НазваниеКолонки1"); |
Пакетное заполнение значения в колонке таблицы значений. Как заполнить всю колонку таблицы значений в 1С 8.3, 1С 8.2
-Заполнение нулями
1 |
ТЗ.ЗаполнитьЗначения(0, "НазваниеКолонки2"); // Заполнение нулями |
-Заполнение предопределенными значениями
1 2 3 |
ТЗ[0].НазваниеКолонки2= 15; ТЗ[1].НазваниеКолонки2= 31; ТЗ[2].НазваниеКолонки2= 19; |
Поиск определенной строки по значению. Как найти строку в таблице значений по известному значению в 1С 8.3, 1С 8.2
— поиск по известному значению
Например нам знакома одна из величин в колонке «НазваниеКолонки2», пусть это будет значение 31 из примера номер 9. Тогда поиск позиционирует нас на строку с порядковым индексом 1.
1 |
НомерСтроки= ТЗ.Найти(31); |
— поиск по колонкам
Также, если мы планируем выполнить поиск по известной колонке, можно указать ее название. Или названия нескольких колонок.
1 2 |
НомерСтроки= ТЗ.Найти(31, "НазваниеКолонки2"); НомерСтроки= ТЗ.Найти(31, "НазваниеКолонки2, НазваниеКолонки4"); |
— поиск всех вхождений значения
Можно найти все вхождения значения при помощи структуры. Пример выводит в сообщение значение всех строк первой колонки, для которых найдено нужное значение (31) во второй колонке.
1 2 3 4 5 6 |
НаборЗначений= Новый Структура; НаборЗначений.Вставить("НазваниеКолонки2", 31); Значения= ТЗ.НайтиСтроки(НаборЗначений); Для Каждого Строка Из Значения Цикл Сообщить(Строка.НазваниеКолонки1); КонецЦикла; |
Копирование таблицы значений Как скопировать таблицу значений в 1С 8.3, 1С 8.2
— копирование таблицы один к одному
1 |
ТЗКопия= ТЗ.Скопировать(); |
— копированиме в новую таблицу только нужных колонок
1 |
ТЗКопия= ТЗ.СкопироватьКолонки("НазваниеКолонки1, НазваниеКолонки2"); |
— копирование по отбору
1 2 3 |
НаборЗначений= Новый Структура; НаборЗначений.Вставить("НазваниеКолонки2", 31); ТЗКопия= ТЗ.Скопировать(НаборЗначений); |
Будет скопирована только строчка со значеним отбора. Или копирование отбора для колонок.
1 |
ТЗКопия=ТЗ.Скопировать(НаборЗначений, "НазваниеКолонки2, НазваниеКолонки4"); |
Сворачивание таблицы значений. Как свернуть таблицу по колонке в 1С 8.3, 1С 8.2
— группирование по двум колонкам, суммирование по одной
1 |
ТЗ.Свернуть("НазваниеКолонки1, НазваниеКолонки3", "НазваниеКолонки2"); |
Сортировка таблицы значений. Как в 1С 8.3, 1С 8.2 отсортировать таблицу значений по колонке
— по убыванию
1 |
ТЗ.Сортировать("НазваниеКолонки2 Убыв"); |
— по возрастанию
1 |
ТЗ.Сортировать("НазваниеКолонки2 Возр"); |
Причем стоит отметить, сортировка может быть как по числовому полю, так и по строковому или по дате.
— по нескольким колонкам
1 |
ТЗ.Сортировать("НазваниеКолонки1 Убыв, НазваниеКолонки2 Возр"); |
Сдвиг в таблице значений. Как в таблице значений в 1с 8.3, 1С 8.2 сдвинуть строку
— сдвиг первой строки на одну позицию по индексу вверх
1 |
ТЗ.Сдвинуть(0, 1); |
— сдвиг второй строки на одну позицию по индексу вниз
1 |
ТЗ.Сдвинуть(1, -1); |
Как выгрузить таблицу значений в табличную часть
1 |
ТабличнаяЧасть.Загрузить(ТЗ); |
Описание таблицы на форме интерфейса 1С. Как таблицу значений вывести на форме в 1С 8.3, 1С 8.2
1 2 3 4 5 6 7 8 9 10 |
ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "ТЗ", Истина); ЭлементыФормы.ТЗ.Ширина = 500; ЭлементыФормы.ТЗ.Высота = 350; ЭлементыФормы.ТЗ.Лево = 20; ЭлементыФормы.ТЗ.Верх = 20; ЭлементыФормы.ТЗ.Значение = Таб; ЭлементыФормы.ТЗ.СоздатьКолонки(); ЭлементыФормы.ТЗ.Колонки[0].Ширина = 20; |
Если у Вас появились вопросы по статье или остались нерешенные проблемы обсудить их Вы можете на Форуме 1С Вопросы и ответы
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.