Только на сервере
Создание Таблицы значений:
|
1 |
Таб = Новый ТаблицаЗначений; |
|
1 |
Таб.Колонки.Добавить("НаименованиеКолонки"); |
|
1 2 |
Стр = Таб.Добавить(); Стр.НаименованиеКолонки= "Строка"; |
|
1 2 3 |
Число = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(N, C)); //N-Длина числа, C-Точность (количество символов после запятой) Ссылка = Новый ОписаниеТипов("СправочникСсылка.НаименованиеСправочника"); Дата = Новый ОписаниеТипов("Дата"); |
|
1 |
Таб.Колонки.Добавить("НаименованиеКолонки", Число, "Представление колонки"); |
|
1 |
Таб.Колонки.Добавить("НаименованиеКолонки", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(N, C)), "Представление колонки"); |
|
1 2 3 4 5 |
// выгрузка Массив = Таб.ВыгрузитьКолонку("НаименованиеКолонки"); // загрузка Таб.ЗагрузитьКолонку(Массив, "НаименованиеКолонки"); |
|
1 |
Таб.ЗаполнитьЗначения(0, "НаименованиеКолонки"); |
|
1 2 3 |
Таб[0].НаименованиеКолонки= 100; Таб[1].НаименованиеКолонки= 200; Таб[2].НаименованиеКолонки= 300; |
|
1 |
Сообщить(Таб.Итог("НаименованиеКолонки")); // 600 |
|
1 2 3 4 5 |
НайденнаяСтрока = Таб.Найти( "Значение" ); Если НайденнаяСтрока <> Неопределено Тогда КонецЕсли; |
|
1 2 3 4 |
НайденнаяСтрока = Таб.Найти("Значение", "НаименованиеКолонки1, НаименованиеКолонки2"); Если НайденнаяСтрока <> Неопределено Тогда КонецЕсли; |
|
1 2 3 4 5 6 |
Отбор = Новый Структура; Отбор.Вставить("НаименованиеКолонки", "Значение"); Строки = Таб.НайтиСтроки(Отбор); Для Каждого Стр Из Строки Цикл КонецЦикла; |
|
1 2 3 4 5 6 7 |
// сдвигаем первую строку на одну позицию вперёд Индекс=0; Таб.Сдвинуть(Индекс, 1); // и возвращаем обратно Индекс=1; Таб.Сдвинуть(Индекс, -1); |
|
1 2 3 4 5 |
// полная копия КопияТаб = Таб.Скопировать(); // только две колонки НаименованиеКолонки1 и НаименованиеКолонки2 КопияТаб = Таб.СкопироватьКолонки("НаименованиеКолонки1, НаименованиеКолонки2"); |
|
1 2 3 4 5 6 7 8 |
Отбор = Новый Структура; Отбор.Вставить("НаименованиеКолонки1", "Значение"); // таблица будет содержать только строчку с Значением КопияТаб = Таб.Скопировать(Отбор); // таблица будет содержать данные из колонок НаименованиеКолонки2 и НаименованиеКолонки3 КопияТаб = Таб.Скопировать(Отбор, "НаименованиеКолонки2 , НаименованиеКолонки3"); |
|
1 |
Таб.Свернуть("НаименованиеКолонки1, НаименованиеКолонки2", "НаименованиеКолонки3, НаименованиеКолонки4"); |
|
1 |
Таб.Сортировать("НаименованиеКолонки1 Возр"); |
|
1 |
Таб.Сортировать("НаименованиеКолонки1 Возр, НаименованиеКолонки2 Убыв"); |
Очистить колонки таблицы:
|
1 |
Таб.Колонки.Очистить(); |
|
1 |
Таб.Очистить(); |
|
1 |
Таб.Удалить(0); |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
// см. примеры использования этой функции ниже // ТабВКоде - таблица значений, созданная программно // ТабРеквизит - имя реквизита формы типа ТаблицаЗначений // ТабНаФорме - имя элемента формы, связанного с ТабРеквизит &НаСервере Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, ТабРеквизит, ТабНаФорме) // реквизит ТабРеквизит и соответствующий // ему элемент формы ТабНаФорме уже созданы // нами в визуальном режиме // 1. добавляем колонки из ТабВкоде в реквизит ТабРеквизит НовыеРеквизиты = Новый Массив; Для Каждого Колонка Из ТабВКоде.Колонки Цикл НовыеРеквизиты.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,ТабРеквизит)); КонецЦикла; ИзменитьРеквизиты(НовыеРеквизиты); // 2. добавляем колонки из ТабВКоде в элемент ТабНаФорме Для Каждого Колонка Из ТабВКоде.Колонки Цикл НовыйЭлемент = Элементы.Добавить(ТабРеквизит + "_" + Колонка.Имя, Тип("ПолеФормы"), Элементы[ТабНаФорме]); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = ТабРеквизит + "." + Колонка.Имя; КонецЦикла; // 3. наконец, передаём данные из ТабВКоде в ТабРеквизит ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит); // готово! КонецПроцедуры &НаСервере Процедура СоздатьТаблицуНаФормеНаСервере() // программно создаём таблицу значений ТабВКоде ТабВКоде = Новый ТаблицаЗначений; ОписаниеСтроки = Новый ОписаниеТипов("Строка"); ОписаниеВеса = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(12, 3)); ТабВКоде.Колонки.Добавить("Фрукт", ОписаниеСтроки, "Имя фрукта"); ТабВКоде.Колонки.Добавить("Цвет", ОписаниеСтроки, "Цвет фрукта"); ТабВКоде.Колонки.Добавить("Вес", ОписаниеВеса, "Вес фрукта"); Стр = ТабВКоде.Добавить(); Стр.Фрукт = "Яблоко"; Стр.Цвет = "Зелёный"; Стр.Вес = 200; Стр = ТабВКоде.Добавить(); Стр.Фрукт = "Банан"; Стр.Цвет = "Желтый"; Стр.Вес = 150; ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит1", "ТабНаФорме1"); КонецПроцедуры |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
&НаСервере Процедура ВывестиНаФормуРезультатЗапросаНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Товары.Ссылка, | Товары.ВерсияДанных, | Товары.ПометкаУдаления, | Товары.Код, | Товары.Наименование, | Товары.Цвет, | Товары.ЕдиницаИзмерений, | Товары.Предопределенный, | Товары.ИмяПредопределенныхДанных |ИЗ | Справочник.Товары КАК Товары"; РезультатЗапроса = Запрос.Выполнить(); ТабВКоде = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой); // функция ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме определена выше ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит2", "ТабНаФорме2"); КонецПроцедуры |