1с как найти колонку по наименованию

Выполняет поиск колонки таблицы значений по имени.

Синтаксис

Метод Найти() имеет следующий синтаксис:

КолонкаТаблицыЗначений Найти(ИмяКолонки)

А также альтернативный англоязычный синтаксис:

ValueTableColumn Find(ColumnName)

Параметры

Описание параметров метода Найти():

Имя параметра* Тип Описание
ИмяКолонки Строка Наименование колонки таблицы значений.
*Жирным шрифтом выделены обязательные параметры

Возвращаемое значение

КолонкаТаблицыЗначений или Неопределено

Описание

Метод Найти() выполняет поиск колонки в коллекции колонок по имени. Если указанная колонка существует, метод возвращает ее в точку вызова. Если колонка не найдена, возвращает Неопределено.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Найти():

Колонка = тз.Колонки.Найти("Комментарий");
Если НЕ Колонка = Неопределено Тогда
	тз.Колонки.Удалить(Колонка);
КонецЕсли;

Читайте также:

  1. Таблица значений 1с. Описание и примеры использования

Поделиться страницей в соц.сетях

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

&НаСервере
Процедура ВыполнитьКодНаСервере()
 
    /// Как создать таблицу значений в 1с 8.3, 8.2
 
    // с таблицей значений можно работать только на сервере 
    Таб = Новый ТаблицаЗначений;    
 
    /// Как добавить колонки в таблицу значений в 1с 8.3, 8.2
 
    Таб.Колонки.Добавить("Фрукт");
    Таб.Колонки.Добавить("Цвет");
    Таб.Колонки.Добавить("Вкус");
 
    /// Как добавить строки в таблицу значений в 1с 8.3, 8.2
 
    Стр = Таб.Добавить();
    Стр.Фрукт = "Яблоко";
    Стр.Цвет = "Зелёный";
    Стр.Вкус = "Кислый";
 
    Стр = Таб.Добавить();
    Стр.Фрукт = "Банан";
    Стр.Цвет = "Желтый";
    Стр.Вкус = "Сладкий";
 
    Стр = Таб.Добавить();
    Стр.Фрукт = "Слива";
    Стр.Цвет = "Синий";
    Стр.Вкус = "Терпкий"; 
 
    /// Как добавить в таблицу значений колонку с
    /// описанием типа и заголовка в 1с 8.3, 8.2
 
    ОписаниеВеса = Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(12, 3));
 
    Таб.Колонки.Добавить("ВесФрукта", ОписаниеВеса, "Вес фрукта");
    Таб[0].ВесФрукта = 100.005;
    Таб[1].ВесФрукта = 60.010;
    Таб[2].ВесФрукта = 25.000;
 
    /// Как перечислить все строки в таблице значений в 1с 8.3, 8.2
 
    Для Каждого Стр Из Таб Цикл
        Сообщить(Стр.Фрукт + " " + Стр.Цвет + " " + Стр.Вкус +
            " " + Стр.ВесФрукта);
    КонецЦикла;
 
    /// Как перечислить все колонки в таблице значений
    /// в 1с 8.3, 8.2
 
    Для Каждого Колонка Из Таб.Колонки Цикл
        Сообщить(Колонка.Имя);
    КонецЦикла; 
 
    /// Как выгрузить колонку таблицы значений в массив в 1с 8.3, 8.2
 
    // выгрузка названий фруктов в массив
    МассивФруктов = Таб.ВыгрузитьКолонку("Фрукт");
 
    // ничего не измениться, так как массив не менялся
    Таб.ЗагрузитьКолонку(МассивФруктов, "Фрукт");
 
    /// Как заполнить значения в колонке для всех строк таблицы 
    /// значений в 1с 8.3, 8.2
 
    // обнулим вес во всех строках
    Таб.ЗаполнитьЗначения(0, "ВесФрукта");
 
    // выставим новые веса
    Таб[0].ВесФрукта = 100;
    Таб[1].ВесФрукта = 60;
    Таб[2].ВесФрукта = 25;
 
    /// Как в таблице значений посчитать итог по колонке в 1с 8.3, 8.2
 
    Сообщить(Таб.Итог("ВесФрукта")); // 185
 
    /// Как найти строку в таблице значений по значению в 1с 8.3, 8.2
 
    // найдём строчку с яблоком и покажем его цвет
    НайденнаяСтрока = Таб.Найти( "Яблоко" );
    Если НайденнаяСтрока <> Неопределено Тогда
        Сообщить(НайденнаяСтрока.Цвет); // Зелёный
    КонецЕсли;
 
    /// Как найти строку в таблице значений поиском значения
    /// в определенных колонках в 1с 8.3, 8.2
 
    // будем искать по слову "Кислый" в колонках вкус и цвет
    НайденнаяСтрока = Таб.Найти("Кислый", "Вкус, Цвет");
    Если НайденнаяСтрока <> Неопределено Тогда
        Сообщить(НайденнаяСтрока.Фрукт); // Яблоко
    КонецЕсли;
 
    // добавим ещё один зелёный фрукт
    Стр = Таб.Добавить();
    Стр.Фрукт = "Киви";
    Стр.Цвет = "Зелёный";
    Стр.Вкус = "Сладкий";
    Стр.ВесФрукта = 30;
 
    /// Как искать в таблице значений неуникальные значения
    /// в 1с 8.3, 8.2
 
    Отбор = Новый Структура;
    Отбор.Вставить("Цвет", "Зелёный");
    Строки = Таб.НайтиСтроки(Отбор);
    Для Каждого Стр Из Строки Цикл
        Сообщить(Стр.Фрукт); // Яблоко Киви
    КонецЦикла;
 
    /// Как сдвинуть строку таблицы значений в 1с 8.3, 8.2
 
    // сдвигаем первую строку на одну позицию вперёд
    Таб.Сдвинуть(0, 1);
 
    // и возвращаем обратно
    Таб.Сдвинуть(1, -1);
 
    /// Как создать копию таблицы значений в 1с 8.3, 8.2
 
    // полная копия
    КопияТаб = Таб.Скопировать();
 
    /// Как создать копию таблицы значений по нужным колонкам
    /// в 1с 8.3, 8.2
 
    // только две колонки будет Фрукт и Цвет
    КопияТаб = Таб.СкопироватьКолонки("Фрукт, Цвет");
 
    /// Как создать копию таблицы значений по отбору в 1с 8.3, 8.2
 
    Отбор = Новый Структура;
    Отбор.Вставить("Фрукт", "Яблоко");
 
    // таблица будет содержать только строчку с яблоком
    КопияТаб = Таб.Скопировать(Отбор);
 
    // таблица будет содержать цвет и вес яблока
    КопияТаб = Таб.Скопировать(Отбор, "Цвет, ВесФрукта");
 
    /// Как свернуть таблицу значений по колонке в 1с 8.3, 8.2
 
    // свернём по вкусу, просуммируем по весу
    Таб.Свернуть("Вкус", "ВесФрукта");
 
    /// Как отсортировать таблицу значений по колонке в 1с 8.3, 8.2
 
    Таб.Сортировать("ВесФрукта Возр");
 
    /// Как отсортировать таблицу значений по нескольким колонкам
    /// в 1с 8.3, 8.2
 
    Таб.Сортировать("ВесФрукта Возр, Вкус Убыв");
 
    /// Как удалить строку из таблицы значений в 1с 8.3, 8.2
 
    // по индексу или по значению
    Таб.Удалить(0);
 
КонецПроцедуры
 
/// Как программно вывести таблицу значений на
/// форму в 1с 8.3, 8.2 
 
// см. примеры использования этой функции ниже
 
// ТабВКоде - таблица значений, созданная программно
// ТабРеквизит - имя реквизита формы типа ТаблицаЗначений
// ТабНаФорме - имя элемента формы, связанного с ТабРеквизит 
 
&НаСервере
Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, ТабРеквизит, ТабНаФорме)
 
    // реквизит ТабРеквизит и соответствующий
    // ему элемент формы ТабНаФорме уже созданы
    // нами в визуальном режиме
 
    // 1. добавляем колонки из ТабВкоде в реквизит ТабРеквизит
 
    НовыеРеквизиты = Новый Массив;
 
    Для Каждого Колонка Из ТабВКоде.Колонки Цикл
         НовыеРеквизиты.Добавить(
            Новый РеквизитФормы(
                Колонка.Имя, Колонка.ТипЗначения,
                ТабРеквизит
            )
         );
    КонецЦикла;
 
    ИзменитьРеквизиты(НовыеРеквизиты);
 
    // 2. добавляем колонки из ТабВКоде в элемент ТабНаФорме
 
    Для Каждого Колонка Из ТабВКоде.Колонки Цикл
 
        НовыйЭлемент = Элементы.Добавить(
            ТабРеквизит + "_" + Колонка.Имя, Тип("ПолеФормы"), Элементы[ТабНаФорме]
        );
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.ПутьКДанным = ТабРеквизит + "." + Колонка.Имя;
    КонецЦикла;
 
    // 3. наконец, передаём данные из ТабВКоде в ТабРеквизит
 
    ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит);
 
    // готово!    
 
КонецПроцедуры
 
&НаСервере
Процедура СоздатьТаблицуНаФормеНаСервере()
 
    // программно создаём таблицу значений ТабВКоде
 
    ТабВКоде = Новый ТаблицаЗначений;
 
    ОписаниеСтроки = Новый ОписаниеТипов("Строка");
    ОписаниеВеса = Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(12, 3));
 
    ТабВКоде.Колонки.Добавить("Фрукт", ОписаниеСтроки, "Имя фрукта");
    ТабВКоде.Колонки.Добавить("Цвет", ОписаниеСтроки, "Цвет фрукта");
    ТабВКоде.Колонки.Добавить("Вес", ОписаниеВеса, "Вес фрукта");
 
    Стр = ТабВКоде.Добавить();
    Стр.Фрукт = "Яблоко";
    Стр.Цвет = "Зелёный";
    Стр.Вес = 200;
 
    Стр = ТабВКоде.Добавить();
    Стр.Фрукт = "Банан";
    Стр.Цвет = "Желтый";
    Стр.Вес = 150;
 
    ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит1", "ТабНаФорме1");
 
КонецПроцедуры
 
/// Как программно вывести на форму результат запроса
/// в виде таблицы значений в 1с 8.3, 8.2
 
&НаСервере
Процедура ВывестиНаФормуРезультатЗапросаНаСервере()        
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Товары.Ссылка,
        |   Товары.ВерсияДанных,
        |   Товары.ПометкаУдаления,
        |   Товары.Код,
        |   Товары.Наименование,
        |   Товары.Цвет,
        |   Товары.ЕдиницаИзмерений,
        |   Товары.Предопределенный,
        |   Товары.ИмяПредопределенныхДанных
        |ИЗ
        |   Справочник.Товары КАК Товары";
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ТабВКоде = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);   
 
    // функция ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме определена выше
    ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, "ТабРеквизит2", "ТабНаФорме2");
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Продолжаем изучать программную работу с таблицей значений в 1С. В прошлых статьях мы научились создавать таблицу значений (как программно, так и на управляемой форме), добавлять колонки и строки таблицы значений. Осталось научиться работать с самой таблицей значений. В первой части мы узнаем, как находить строки по нужному отбору, и научимся копировать таблицу значений с нужным отбором.

Поиск в таблице значений можно осуществить с помощью двух методов: Найти и НайтиСтроки. Метод Найти является функцией, которая вернёт первую строку, где встречается искомое значение.  Рекомендуется метод применять для поиска уникальных значений, т.к. при наличии нескольких строк с искомым значением, будет возвращена только одна. Если же нам нужно найти все строки, где встречается искомое значение, то необходимо использовать метод НайтиСтроки, который возвращает массив строк с нужным значением.

Разберем оба этих метода на примере.

Метод Найти таблицы значений 1С 8.3

Этот метод является функцией, которая возвращает строку, если искомое значение найдено, и Неопределено, если нет. При помощи этого метода можно найти любое значение, которое имеется в таблице значений. Причем, не обязательно знать колонку, где это значение может содержаться.

Данная функция имеет следующий синтаксис:

Найти(Значение, Колонки)

Где:

Значение – то значение, которое мы ищем в таблице.

Колонки – колонки таблицы значений, по которым осуществляется поиск (необязательный параметр, можно осуществлять поиск по всем колонкам таблицы значений).

Работа этого метода показана на следующем примере:

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«ФИО»);
ТЗ.Колонки.Добавить(«ДатаРождения»);
//первая строка
НСтр = ТЗ.Добавить();
НСтр.ФИО = «Иванов И.И»;
НСтр.ДатаРождения = Дата(1981,1,15);
//вторая строка
НСтр = ТЗ.Добавить();
НСтр.ФИО = «Петров П.С»;
НСтр.ДатаРождения = Дата(1984,5,25);
//третья строка
НСтр = ТЗ.Добавить();
НСтр.ФИО = «Тарасов К.В»;
НСтр.ДатаРождения = Дата(1987,6,11);
//первая строка
стрТарасов = ТЗ.Найти(«Тарасов К.В»,«ФИО»);

Если мы посмотрим на значение переменной стрТарасов в отладке, то увидим ссылку на конкретную строку таблицы значений.

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

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

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

Если же мы сделаем поиск по второй колонке, то результат будет Неопределено.

Неопределено в результате метода найти таблицы значений

Такой же результат Неопределено  будет и при поиске несуществующего значения.

Неопределено в результате метода найти таблицы значений

Метод НайтиСтроки таблицы значений 1С 8.3

Если метод Найти возвращает конкретную строку таблицы значений, то метод НайтиСтроки, возвращает массив строк, которые соответствуют нужному условию. Данный метод имеет следующий синтаксис

НайтиСтроки(СтруктураПоиска)

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

Переделаем предыдущую таблицу значений:

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Фамилия»);
ТЗ.Колонки.Добавить(«Имя»);
ТЗ.Колонки.Добавить(«ДатаРождения»);
//первая строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Иванов»;
НСтр.Имя = «Петр»;
НСтр.ДатаРождения = Дата(1981,1,15);
//вторая строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Иванов»;
НСтр.Имя = «Алексей»;
НСтр.ДатаРождения = Дата(1981,1,25);
//третья строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Григорьев»;
НСтр.Имя = «Петр»;
НСтр.ДатаРождения = Дата(1987,6,11);

Теперь найдем все строки таблицы значений, где встречается имя Петр

МассивСтрок = ТЗ.НайтиСтроки(Новый Структура(«Имя»,«Петр»));

Посмотрим на результат.

Метод НайтиСтроки таблицы значений 1С

Или найдем всех Петров, родившихся 11.06.1987 года.

ПараметрыПоиска = Новый Структура(«Имя,ДатаРождения»,«Петр»,Дата(1987,6,11));
МассивСтрок = ТЗ.НайтиСтроки(ПараметрыПоиска);

В этот раз найденных строк будет меньше.

Метод НайтиСтроки таблицы значений 1С

Если же мы зададим имя, которого нет в нашей таблице, то получим пустой массив.

Метод НайтиСтроки возвращает пустой массив

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

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

В языке разработке  1С можно одну таблицу значений скопировать  в другую. Причем можно просто скопировать структуру таблицы значений, т.е. создать точно такую же таблицу значений, с тем же набором колонок, но без строк. Такое копирование осуществляется при помощи метода СкопироватьКолонки. А также скопировать одну таблицу в другую с различными отборами, это можно сделать, используя метод Скопировать. Разберем оба этих метода.

Метод СкопироватьКолонки таблицы значений 1С 8.3

Данный метод является функцией, которая возвращает пустую таблицу значений, с набором колонок, как у изначальной. У этого метода следующий синтаксис:

СкопироватьКолонки(СписокКолонок)

Где, параметр СписокКолонок  необязательный параметр, в нем должны быть перечислены имена колонок, которые присутствуют в изначальной таблице, и которые должны быть в новой. Если он не указан, то в новой таблице значений будут такие же колонки, что и в изначальной.

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Фамилия»);
ТЗ.Колонки.Добавить(«Имя»);
ТЗ.Колонки.Добавить(«ДатаРождения»);
//новые таблицы
НовТЗ1 = ТЗ.СкопироватьКолонки();
НовТЗ2 = ТЗ.СкопироватьКолонки(«Фамилия,Имя»);

В примере выше, в таблице НовТЗ1 будет тот же набор колонок, что и в таблице ТЗ, а в таблице НовТЗ2 будут только колонки Фамилия и Имя.

Метод Скопировать таблицы значений 1С 8.3

Научимся копировать одну таблицу значений в другую, а в этом нам поможет метод Скопировать. Этот метод является функцией, которая возвращает новую таблицу значений. У него имеется два синтаксиса

Скопировать(Строки,Колонки)

Где:

Строки – массив строк таблицы значений, которые должны будут присутствовать в новой таблице. Необязательный параметр, если он пуст, то копируются все строки.

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

Второй вариант синтаксиса

Скопировать(ПараметрыОтбора, Колонки).

Где:

ПараметрыОтбора – структура, при помощи которой мы отберем нужные строки в новую таблицу значений. В качестве ключей структуры должны быть перечислены названия  колонок, по которым будет вестись отбор, а в качестве значений – те значения, по которым должны отобраться нужные строки.

Рассмотрим примеры с обоими вариантами параметров.  Будем использовать ту же таблицу, что и в предыдущих примерах, но отберем только те строки, у которых год рождения 1981.

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Фамилия»);
ТЗ.Колонки.Добавить(«Имя»);
ТЗ.Колонки.Добавить(«ДатаРождения»);
//первая строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Иванов»;
НСтр.Имя = «Петр»;
НСтр.ДатаРождения = Дата(1981,1,15);
//вторая строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Иванов»;
НСтр.Имя = «Алексей»;
НСтр.ДатаРождения = Дата(1981,1,25);
//третья строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Григорьев»;
НСтр.Имя = «Петр»;
НСтр.ДатаРождения = Дата(1987,6,11);
//формируем новый массив
МассивДляОтбора = Новый Массив;
Для Каждого
стрТЗ из ТЗ Цикл
Если
Год(стрТЗ.ДатаРождения) = 1981 Тогда
МассивДляОтбора.Добавить(стрТЗ);
КонецЕсли;
КонецЦикла;
//новая таблица значений
НовТЗ = ТЗ.Скопировать(МассивДляОтбора,«Имя,ДатаРождения»);

Посмотрим на результат работы этой функции

Метод Скопировать таблицы значений 1С

Теперь скопируем таблицу значений, так, чтобы в новую таблицу вошли только те строки, где есть имя Петр и дата рождения равна 15.01.1981.

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Фамилия»);
ТЗ.Колонки.Добавить(«Имя»);
ТЗ.Колонки.Добавить(«ДатаРождения»);
//первая строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Иванов»;
НСтр.Имя = «Петр»;
НСтр.ДатаРождения = Дата(1981,1,15);
//вторая строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Иванов»;
НСтр.Имя = «Алексей»;
НСтр.ДатаРождения = Дата(1981,1,25);
//третья строка
НСтр = ТЗ.Добавить();
НСтр.Фамилия = «Григорьев»;
НСтр.Имя = «Петр»;
НСтр.ДатаРождения = Дата(1987,6,11);
//отбор
ПараметрыОтбора = Новый Структура(«Имя,ДатаРождения»,«Петр»,Дата(1981,1,15));
//новая таблица значений
НовТЗ = ТЗ.Скопировать(ПараметрыОтбора,«Имя,Фамилия»);

В этот раз будет следующий результат.

Метод Скопировать таблицы значений 1С

Методы таблиц значений 1С 8.3. Часть 2. Сортировка, итоги и свертка.

Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект.

Более подробно и основательно работа с таблицей значений в дается в моей книге:

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Содержание

  1. Поиск в коллекциях значений
  2. Помогите найти колонку табличного поля по ее имени.
  3. Программирование в 1С для всех
  4. Поиск в таблице значений 1С 8.3
  5. Метод Найти таблицы значений 1С 8.3
  6. Метод НайтиСтроки таблицы значений 1С 8.3
  7. Скопировать таблицу значений 1С
  8. Метод СкопироватьКолонки таблицы значений 1С 8.3
  9. Метод Скопировать таблицы значений 1С 8.3

Поиск в коллекциях значений

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. При двух и более операциях поиска в объекте ТаблицаЗначений с большим количеством строк (*) рекомендуется:

  • Индексировать колонки, по которым выполняется поиск;
  • Но только те из них, которые обладают хорошей селективностью (т.е. каждому значению этой колонки должно соответствовать небольшое количество строк). В противном случае, индексирование не даст эффекта, либо он будет отрицательным (потрачено лишнее время на индексирование).

* Примечание: следует ориентироваться на 1000 строк и более, а также учитывать не только размер таблицы, в которой выполняется поиск, но и сколько раз он выполняется. Например, даже если таблица относительно небольшая в 100 строк, но поиск по ней выполняется 100 раз, ее тоже имеет смысл индексировать. В то же время, нет смысла индексировать таблицу из-за только одной единственной операции поиска.

2. Для поиска значений предусмотрены два метода объекта ТаблицаЗначений :

При поиске значения в одной колонке таблицы значений оба метода одинаково эффективно используют индекс, если он был задан (см. п.1).
Однако при поиске значения сразу по нескольким (или по всем) колонкам необходимо учитывать следующие ограничения.

2.1. Не следует использовать метод Найти для поиска по нескольким колонкам в таблицах значений с большим количеством строк, даже если проиндексированы все колонки, обладающие хорошей селективностью. Это ограничение вызвано тем, что метод Найти выполняет поиск с применением индекса только по одному полю.
Например:

ТЗ.Индексы.Добавить(«Колонка1»);
ТЗ.Индексы.Добавить(«Колонка2»);
. = ТЗ.Найти(«найдется все», «Колонка1, Колонка2»); // Индекс НЕ используется!

В этом примере, несмотря на наличие индекса для колонок Колонка1 и Колонка2 , поиск все равно будет выполняться перебором всех строк в таблице значений (что очень ресурсоемко на больших объемах данных).

2.2. При использовании метода НайтиСтроки в таблицах значений с большим количеством строк следует обеспечить, чтобы список полей индекса был точно таким же, как он задан в структуре поиска (порядок полей не важен). В противном случае, индекс не будет задействован, и поиск будет выполняться перебором всех строк в таблице значений (что очень ресурсоемко на больших объемах данных).
Например:

ТЗ.Индексы.Добавить(«Колонка1»); // Индекс1
ТЗ.Индексы.Добавить(«Колонка2»); // Индекс2

. = ТЗ.НайтиСтроки(Новый Структура(«Колонка1, Колонка2 «, «Ищу1″,»Ищу2»)); // Индекс НЕ используется!
. = ТЗ.НайтиСтроки(Новый Структура(«Колонка1», «Ищу1») ); // OK — используется Индекс1
. = ТЗ.НайтиСтроки(Новый Структура(«Колонка2», «Ищу2») ); // OK — используется Индекс2

. = ТЗ.НайтиСтроки(Новый Структура(«Колонка1, Колонка2», «Ищу1″,»Ищу2»)); // OK — индекс используется
. = ТЗ.НайтиСтроки(Новый Структура(«Колонка2, Колонка1», «Ищу2″,»Ищу1»)); // OK — индекс используется
. = ТЗ.НайтиСтроки(Новый Структура(«Колонка1», «Ищу1») ); // Индекс НЕ используется!
. = ТЗ.НайтиСтроки(Новый Структура(«Колонка2», «Ищу2») ); // Индекс НЕ используется!

2.3. Аналогичное ограничение действует и для метода Скопировать таблицы значений при вызове с параметром ПараметрыОтбора ( Структура ).

3. В тех случаях, когда для таблицы значений применяется сортировка по колонкам, содержащим ссылочные значения, необходимо учитывать, что при этом для каждой из этих колонок для всех строк таблицы значений системой будет выполнено обращение к информационной базе за представлением этой ссылки.

  • В тех случаях, когда требуется сортировка по наименованию – сразу, на этапе заполнения, добавлять в таблицу дополнительные колонки с представлениями, и сортировку выполнять уже по ним. Если, конечно, это не вызовет аналогичных многократных обращений к информационной базе;
  • В остальных случаях – сортировать «по ссылке», а не по представлению. Для этого в методе Сортировать следует использовать объект СравнениеЗначений :

ОбъектСравнения = Новый СравнениеЗначений;
ТаблицаДокументов.Сортировать(«Дата,Ссылка», ОбъектСравнения);

Особенно это важно для таблиц с большим количеством (несколько сотен и тысяч) строк, в алгоритмах критических ко времени исполнения.

3.1. При поиске в объекте Массив с большим количеством элементов(*) следует отказаться от массива в пользу:

  • объекта Соответствие , если не важен порядок элементов;
  • индексированной ТаблицаЗначений , если порядок элементов значим.

Это обусловлено тем, что в указанных случаях поиск занимает в большинстве случаев константное время, а в массиве поиск выполняется перебором и поэтому пропорционален количеству элементов.

* Примечание: следует ориентироваться на 1000 элементов и более, а также учитывать не только размер массива, но и сколько раз выполняется поиск. Например, если поиск выполняется многократно, в частности, в цикле, то эта рекомендация также действительна для массивов меньшего размера (до 1000 элементов). Особого внимания требуют универсальные механизмы, которые могут применяться на сколь угодно больших объемах данных.

3.2. При необходимости обеспечить уникальность элементов в большом массиве следует однократно в конце алгоритма вызвать функцию СвернутьМассив или процедуру ДополнитьМассив с параметром ТолькоУникальныеЗначения = Истина (модуль ОбщегоНазначения Библиотеки стандартных подсистем).

4. Аналогичный недостаток существует и у объекта ДеревоЗначений , в котором не предусмотрено индексов и поиск выполняется перебором (как в массиве). В указанных выше случаях объект ДеревоЗначений следует заменять индексированным объектом ТаблицаЗначений .

Источник

Помогите найти колонку табличного поля по ее имени.

Заполнил колонки ТП реквизитами документа, теперь перебираю метаданные.реквизиты этого документа и хочу заполнить эти колонки строками с данными из документа. не могу сообразить как найти нужную колонку которая бы соответствовала текущему реквизиту документа.

Процедура Документ()
Выборка= БазаИсточник.Документы.РеализацияТоваровУслуг.Выбрать(ДатаНач,ДатаКон);
МедаданОле= БазаИсточник.Метаданные.Документы.РеализацияТоваровУслуг;
ТабОбщая = Новый ТаблицаЗначений;
ТабОбщаяТЧ = Новый ТаблицаЗначений;
метадан = Метаданные.Документы.РеализацияТоваровУслуг;
// вывести реквизиты
Для Каждого РеквДок из метадан.Реквизиты Цикл
ТабОбщая.Колонки.Добавить(РеквДок.Имя, Новый ОписаниеТипов(«Строка»));
КонецЦикла;
// вывести ТЧ
Для Каждого РеквДокТЧ из метадан.ТабличныеЧасти Цикл
ТабОбщаяТЧ.Колонки.Добавить(РеквДокТЧ.Имя, Новый ОписаниеТипов(«Строка»));
КонецЦикла;

Пока Выборка.Следующий() Цикл

Для Каждого РеквДок из МедаданОле.Реквизиты Цикл

//ТУТ ЗАПУТАЛСЯ+++++++++++++++++++++++++++++++++++++++++++++++++++ ­++++++
ТекКолонка = ТабОбщая.Колонки.Найти(РеквДок);
НоваяСтрока = ТабОбщая.Добавить();
НоваяСтрока.ТекущаяКолонка = Выборка.РеквДок;
//ТУТ ЗАПУТАЛСЯ+++++++++++++++++++++++++++++++++++++++++++++++++++ ­+++++++
КонецЦикла;
КонецЦикла;

ТпДоки = ТабОбщая;
ТпДокиТЧ = ТабОбщаяТЧ;
ЭлементыФормы.ТпДоки.СоздатьКолонки();
ЭлементыФормы.ТпДокиТЧ.СоздатьКолонки();

Источник

Программирование в 1С для всех

Продолжаем изучать программную работу с таблицей значений в 1С. В прошлых статьях мы научились создавать таблицу значений (как программно, так и на управляемой форме), добавлять колонки и строки таблицы значений. Осталось научиться работать с самой таблицей значений. В первой части мы узнаем, как находить строки по нужному отбору, и научимся копировать таблицу значений с нужным отбором.

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

Поиск в таблице значений можно осуществить с помощью двух методов: Найти и НайтиСтроки. Метод Найти является функцией, которая вернёт первую строку, где встречается искомое значение. Рекомендуется метод применять для поиска уникальных значений, т.к. при наличии нескольких строк с искомым значением, будет возвращена только одна. Если же нам нужно найти все строки, где встречается искомое значение, то необходимо использовать метод НайтиСтроки, который возвращает массив строк с нужным значением.

Разберем оба этих метода на примере.

Метод Найти таблицы значений 1С 8.3

Этот метод является функцией, которая возвращает строку, если искомое значение найдено, и Неопределено, если нет. При помощи этого метода можно найти любое значение, которое имеется в таблице значений. Причем, не обязательно знать колонку, где это значение может содержаться.

Данная функция имеет следующий синтаксис:

Найти(Значение, Колонки)

Значение – то значение, которое мы ищем в таблице.

Колонки – колонки таблицы значений, по которым осуществляется поиск (необязательный параметр, можно осуществлять поиск по всем колонкам таблицы значений).

Работа этого метода показана на следующем примере:

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «ФИО» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Иванов И.И» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 15 );
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Петров П.С» ;
НСтр . ДатаРождения = Дата ( 1984 , 5 , 25 );
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . ФИО = «Тарасов К.В» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
//первая строка
стрТарасов = ТЗ . Найти ( «Тарасов К.В» , «ФИО» );

Если мы посмотрим на значение переменной стрТарасов в отладке, то увидим ссылку на конкретную строку таблицы значений.

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

Если же мы сделаем поиск по второй колонке, то результат будет Неопределено.

Такой же результат Неопределено будет и при поиске несуществующего значения.

Метод НайтиСтроки таблицы значений 1С 8.3

Если метод Найти возвращает конкретную строку таблицы значений, то метод НайтиСтроки, возвращает массив строк, которые соответствуют нужному условию. Данный метод имеет следующий синтаксис

НайтиСтроки(СтруктураПоиска)

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

Переделаем предыдущую таблицу значений:

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 15 );
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Алексей» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 25 );
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Григорьев» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );

Теперь найдем все строки таблицы значений, где встречается имя Петр

МассивСтрок = ТЗ . НайтиСтроки (Новый Структура ( «Имя» , «Петр» ));

Посмотрим на результат.

Или найдем всех Петров, родившихся 11.06.1987 года.

ПараметрыПоиска = Новый Структура ( «Имя,ДатаРождения» , «Петр» , Дата ( 1987 , 6 , 11 ));
МассивСтрок = ТЗ . НайтиСтроки ( ПараметрыПоиска );

В этот раз найденных строк будет меньше.

Если же мы зададим имя, которого нет в нашей таблице, то получим пустой массив.

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

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

В языке разработке 1С можно одну таблицу значений скопировать в другую. Причем можно просто скопировать структуру таблицы значений, т.е. создать точно такую же таблицу значений, с тем же набором колонок, но без строк. Такое копирование осуществляется при помощи метода СкопироватьКолонки. А также скопировать одну таблицу в другую с различными отборами, это можно сделать, используя метод Скопировать. Разберем оба этих метода.

Метод СкопироватьКолонки таблицы значений 1С 8.3

Данный метод является функцией, которая возвращает пустую таблицу значений, с набором колонок, как у изначальной. У этого метода следующий синтаксис:

СкопироватьКолонки(СписокКолонок)

Где, параметр СписокКолонок необязательный параметр, в нем должны быть перечислены имена колонок, которые присутствуют в изначальной таблице, и которые должны быть в новой. Если он не указан, то в новой таблице значений будут такие же колонки, что и в изначальной.

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//новые таблицы
НовТЗ1 = ТЗ . СкопироватьКолонки ();
НовТЗ2 = ТЗ . СкопироватьКолонки ( «Фамилия,Имя» );

В примере выше, в таблице НовТЗ1 будет тот же набор колонок, что и в таблице ТЗ, а в таблице НовТЗ2 будут только колонки Фамилия и Имя.

Метод Скопировать таблицы значений 1С 8.3

Научимся копировать одну таблицу значений в другую, а в этом нам поможет метод Скопировать. Этот метод является функцией, которая возвращает новую таблицу значений. У него имеется два синтаксиса

Скопировать(Строки,Колонки)

Строки – массив строк таблицы значений, которые должны будут присутствовать в новой таблице. Необязательный параметр, если он пуст, то копируются все строки.

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

Второй вариант синтаксиса

ПараметрыОтбора – структура, при помощи которой мы отберем нужные строки в новую таблицу значений. В качестве ключей структуры должны быть перечислены названия колонок, по которым будет вестись отбор, а в качестве значений – те значения, по которым должны отобраться нужные строки.

Рассмотрим примеры с обоими вариантами параметров. Будем использовать ту же таблицу, что и в предыдущих примерах, но отберем только те строки, у которых год рождения 1981.

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 15 );
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Алексей» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 25 );
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Григорьев» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
//формируем новый массив
МассивДляОтбора = Новый Массив ;
Для Каждого стрТЗ из ТЗ Цикл
Если Год ( стрТЗ . ДатаРождения ) = 1981 Тогда
МассивДляОтбора . Добавить ( стрТЗ );
КонецЕсли;
КонецЦикла;
//новая таблица значений
НовТЗ = ТЗ . Скопировать ( МассивДляОтбора , «Имя,ДатаРождения» );

Посмотрим на результат работы этой функции

Теперь скопируем таблицу значений, так, чтобы в новую таблицу вошли только те строки, где есть имя Петр и дата рождения равна 15.01.1981.

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 15 );
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Алексей» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 25 );
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Григорьев» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
//отбор
ПараметрыОтбора = Новый Структура ( «Имя,ДатаРождения» , «Петр» , Дата ( 1981 , 1 , 15 ));
//новая таблица значений
НовТЗ = ТЗ . Скопировать ( ПараметрыОтбора , «Имя,Фамилия» );

В этот раз будет следующий результат.

Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект.

Более подробно и основательно работа с таблицей значений в дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Источник

Содержание

Таблица значений в 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С с нуля”.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Танки вылетают ошибка видеокарты как исправить
  • Как найти произведение данных одночленов
  • Как составить ритм дня
  • Как найти тиеру герои 5
  • Как можно найти единомышленников

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии