среда, 11 мая 2011 г.

Приемы работы с Таблицей Значений

Leave a Comment

Супер каротее с таблицей значений


# Как создать таблицу значений и заполнить ее поля?

ТаблицаЗначений = Новый ТаблицаЗначений;
# Создать нужные колонки.

ТаблицаЗначений.Колонки.Добавить("Фамилия");
ТаблицаЗначений.Колонки.Добавить("Возраст");
# Добавить новую строку и задать значения в колонках таблицы.

НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Фамилия = "Иванов";
НоваяСтрока.Возраст = 23;

# Добавить новую строку и задать значения в колонках таблицы.

НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока["Фамилия"] = "Иванов";
НоваяСтрока["Возраст"] = 23;
# Как найти значение в таблице значений?
НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение);
// ЗДЕСЬ МЫ УКАЗЫВАЕМ В КАКИХ КОЛОНКАХ ИСКАТЬ
НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение, "Поставщик, Покупатель");

# Сформировать структуру отбора.

СтруктураПоиска = Структура("Сотрудник", ИскомоеЗначение);

# Найти строки.

МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска);
## Как перебрать строки таблицы значений?
Для Каждого ТекущаяСтрока Из ТаблицаСотрудников Цикл
        Сообщить(ТекущаяСтрока.Сотрудник);
КонецЦикла;
СтаршийИндекс = ТаблицаСотрудников.Количество() - 1;
Для Сч = 0 по СтаршийИндекс Цикл
        Сообщить(СписокСотрудников[Сч].Сотрудник);
КонецЦикла;
# Как удалить строки (колонки) таблицы значений?
ТаблицаЗначений.Удалить(УдаляемаяСтрока);
ТаблицаЗначений.Удалить(0);
ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка);
ТаблицаЗначений.Колонки.Удалить(0);
СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() - 1;
Индекс = ТаблицаЗначений.Количество() - 1;
Пока Индекс > = 0 Цикл
       Для Сч = 0 По СтаршийИндексКолонок Цикл
               Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип("Число") Тогда
                       ТаблицаЗначений.Удалить(Индекс);
                       Прервать;
               КонецЕсли;
        КонецЦикла;
        Индекс = Индекс - 1;
КонецЦикла;
Как заполнить таблицу значений, если имена колонок содержатся в переменных?
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока[ИмяКолонки] = Значение;
# Как заполнить всю колонку таблицы значений нужным значением?
ТаблицаЗначений.ЗаполнитьЗначения(Ложь, "ФлагФискальногоУчета");
# Таблицу значений "ТаблицаПолучатель" заполнить данными таблицы значений "ИсходнаяТаблица":

ТаблицаПолучатель = ТаблицаИсходная.Скопировать();
Для Каждого СтрокаИсходнойТаблицы Из ИсходнаяТаблица Цикл
        НоваяСтрока = ТаблицаПолучатель.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсходнойТаблицы);
КонецЦикла;
ОдноименныеКолонки = Новый Массив();
Для Каждого Колонка Из ИсходнаяТаблица.Колонки Цикл
        СовпадающаяКолонка = ТаблицаПолучатель.Колонки.Найти(Колонка.Имя);
        Если СовпадающаяКолонка <> Неопределено Тогда
               // Получить свойства колонки.
                Индекс = ТаблицаПолучатель.Колонки.Индекс(СовпадающаяКолонка);
               Имя = Колонка.Имя;
               ТипЗначения = Колонка.ТипЗначения;
               Заголовок = Колонка.Заголовок;
               Ширина = Колонка.Ширина;
               // Заменить колонки в таблице-получаетеле.
                ТаблицаПолучатель.Колонки.Удалить(Индекс);
               ТаблицаПолучатель.Колонки.Вставить(Индекс, Имя, ТипЗначения, Заголовок, Ширина);
               // Добавить очередное имя совпадающих колонок в массив.
                ОдноименныеКолонки.Добавить(Колонка.Имя);
        КонецЕсли;
КонецЦикла;

// Цикл перебора строк исходной таблицы.

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

0 коммент.:

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