Как найти строку в списке значений

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

2017-12-18T22:27:10+00:00Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

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

Полный синтаксис (нажмите, чтобы раскрыть)

Оглавление (нажмите, чтобы раскрыть)

&НаКлиенте
Процедура ВыполнитьКод(Команда)
 
    /// Как создать список значений в 1с 8.3, 8.2
 
    Список = Новый СписокЗначений;
 
    /// Как добавить элемент в список значений в 1с 8.3, 8.2
 
    // параметры метода добавить:
    // - значение
    // - представление
    // - отметка (необ.)
    // - картинка (необ.)
    Список.Добавить(
        1980, // значение элемента
        "Год рождения Васи" // представление        
    );
    Список.Добавить(1985, "Год рождения Юли");
    // значения могут быть разных типов
    Список.Добавить("Полина", "Имя ребёнка");
 
    /// Как вставить элемент в список значений в 1с 8.3, 8.2
 
    // вставляем в позицию №2 (элементы нумеруются с 0)
    // элемент со значением 2010 и представлением
    // "Год рождения их совместной дочки"
    Список.Вставить(2, 2010, "Год рождения их совместной дочки");
 
    /// Как обойти элементы списка значений в 1с 8.3, 8.2
 
    Для Каждого Элемент Из Список Цикл
        Сообщить(
            Элемент.Представление + ": " +
            Строка(Элемент.Значение)
        );
    КонецЦикла;
 
    /// Как очистить список значений в 1с 8.3, 8.2
 
    Список.Очистить();
 
    Список.Добавить("Понедельник");
    Список.Добавить("Вторник");
    Список.Добавить("Среда");
 
    /// Как узнать количество элементов списка значений, а также
    /// получить элемент списка по его индексу в 1с 8.3, 8.2
 
    // нумерация с нуля
    Для Индекс = 0 По Список.Количество() - 1 Цикл
        Сообщить(Список[Индекс]);
    КонецЦикла;
 
    /// Как найти элемент списка по его значению в 1с 8.3, 8.2
 
    ЗначВторник = Список.НайтиПоЗначению("Вторник");
 
    /// Как узнать индекс элемента в списке в 1с 8.3, 8.2
 
    Сообщить(Список.Индекс(ЗначВторник)); // 1, так как нумерация с нуля
 
    /// Как отсортировать список по его значениям в 1с 8.3, 8.2
 
    // было: понедельник, вторник, среда
    Список.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
    // стало: среда, понедельник, вторник
 
    /// Как удалить элемент из списка значений в 1с 8.3, 8.2
 
    // удаляем первый элемент
    // параметр: элемент списка
    // или индекс элемента
    // можно так
    Список.Удалить(Список[0]);
    // или так
    // Список.Удалить(0);
 
    /// Как сдвинуть элемент списка значений в 1с 8.3, 8.2
 
    // сдвигаем нулевой элемент на одну позицию вперёд
    // было: понедельник вторник    
    Список.Сдвинуть(0, 1);
    // стало: вторник понедельник 
 
    /// Как сделать копию списка в 1с 8
    КопияСписка = Список.Скопировать();
 
    Цвета = Новый СписокЗначений;
    Цвета.Добавить("Красный");
    Цвета.Добавить("Зелёный");
    Цвета.Добавить("Синий");
 
    /// Как выгрузить значения списка в массив в 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 (в примерах)

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Владимир Милькин

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Список значений — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность элементов. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить элемент списка значений.

Элемент списка значений

Каждый элемент списка является программным объектом ЭлементСпискаЗначений встроенного языка и содержит следующие свойства:

  • Значение (Произвольный тип) — хранимое значение произвольного типа
  • Представление (Строка) — представление элемента списка для пользователя
  • Пометка (Булево) — значение пометки элемента в списке
  • Картинка (Картинка) — картинка элемента списка для пользователя

Создание списка значений

Создание пустого списка значений выполняется с помощью оператора Новый:

сз = Новый СписокЗначений;

Для добавления элементов в список значений используется одноименный метод СписокЗначений.Добавить():

сз.Добавить(10);
сз.Добавить(НачалоДня(ТекущаяДата()), "Сегодня");

Каждый новый элемент помещается в конец списка. Для доступа к отдельным элементам списка значений применяется операция разыменования: указывается имя переменной, объявленной как список значений, а затем, в квадратных скобках, указывается индекс элемента. Свойства полученного элемента можно использовать как слева от оператора присваивания:

сз[0].Значение = 10;
сз[1].Значение = НачалоДня(ТекущаяДата());
сз[1].Представление = "Сегодня";

Так и справа: в выражениях и в качестве параметров процедур и функций:

Сообщить("сз[0] = " + сз[0].Значение);

Границы списка значений

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

Давайте рассмотрим распространенные операции со списком значений.

Перебор элементов списка значений

Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для:

Для Инд = 1 По сз.Количество() Цикл
    Сообщить("сз[" + Инд + "] = " + сз[Инд-1].Представление);
КонецЦикла;

Либо оператор цикла Для Каждого:

Для Каждого Элт Из сз Цикл
    Сообщить("сз[" + сз.Индекс(Элт) + "] = " + Элт.Представление);
КонецЦикла;

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

Поиск в списке значений

Для поиска значений в списке предназначен метод СписокЗначений.НайтиПоЗначению(). Он возвращает найденный элемент списка значений, либо Неопределено, если указанного значения в списке нет.

НайдЭлт = сз.НайтиПоЗначению(10);
Если НЕ НайдЭлт = Неопределено Тогда
    Сообщить("сз[" + сз.Индекс(НайдЭлт) + "] = " + НайдЭлт.Представление);
КонецЕсли;

Сортировка списка значений

Сортировка элементов в списке значений может производиться двумя способами:

  • По значению — реализуется методом СписокЗначений.СортироватьПоЗначению()
  • По представлению — реализуется методом СписокЗначений.СортироватьПоПредставлению()
сз = Новый СписокЗначений
сз.Добавить(1, "Первый");
сз.Добавить(3, "Третий");
сз.Добавить(2, "Второй");
сз.СортироватьПоЗначению();

Методы объекта СписокЗначений

Вставить() Добавляет элемент в произвольное место списка
ВыбратьЭлемент() Открывает диалог выбора элемента списка значений
ВыгрузитьЗначения() Выгружает значения списка в массив
Добавить() Добавляет элемент в конец списка
ЗагрузитьЗначения() Загружает значения из массива
ЗаполнитьПометки() Устанавливает значение пометок элементов списка
Индекс() Возвращает индекс элемента списка значений
Количество() Возвращает количество элементов в списке
НайтиПоЗначению() Выполняет поиск элемента в списке по значению
НайтиПоИдентификатору() Выполняет поиск элемента в списке по его идентификатору
ОтметитьЭлементы() Открывает диалог отметки элементов списка значений
Очистить() Очищает список значений
Получить() Возвращает элемент списка по индексу
Сдвинуть() Сдвигает элемент в списке вверх или вниз
Скопировать() Возвращает копию текущего списка значений
СортироватьПоЗначению() Сортирует элементы списка значений по значению
СортироватьПоПредставлению() Сортирует элементы списка значений по представлению
Удалить() Удаляет указанный элемент из списка

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

  1. Как загрузить массив в список значений?
  2. Как выгрузить колонку таблицы значений в список значений?
  3. Ошибка «Значение индекса выходит за границы диапазона»

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

1С список значений
1С список значений

Как создать список значений

СписокМесяцев = Новый СписокЗначений;

Как добавить элементы в список значений

СписокМесяцев.Добавить(“Ян”,”Январь”);

СписокМесяцев.Добавить(“Фв”,”Февраль”);

СписокМесяцев.Добавить(“Мр”,”Март”);

СписокМесяцев.Добавить(“Ап”,”Апрель”);

СписокМесяцев.Добавить(“Ма”,”Май”);

СписокМесяцев.Добавить(“Ин”,”Июнь”);

СписокМесяцев.Добавить(“Ил”,”Июдь”);

СписокМесяцев.Добавить(“Ав”,”Август”);

СписокМесяцев.Добавить(“Сн”,”Сентябрь”);

СписокМесяцев.Добавить(“Ок”,”Октябрь”);

СписокМесяцев.Добавить(“Нб”,”Ноябрь”);

СписокМесяцев.Добавить(“Дк”,”Декабрь”);

Как получить количество элементов в списке значений

КоличествоЭлементов = СписокМесяцев.Количество();

Как найти значение в списке значений

Март = СписокМесяцев.НайтиПоЗначению(“Мр”);

Апрель = СписокМесяцев.НайтиПоИдентификатору(3);

Как получить значение в списке значений (2 способа)

1 способ

Май = СписокМесяцев.Получить(4);

2 способ

Май = СписокМесяцев[4];

Обход всех элементов списка значений

Для каждого ЭлементСписка Из СписокМесяцев Цикл

Значение = ЭлементСписка.Значение;

Представление = ЭлементСписка.Представление;

Картинка = ЭлементСписка.Картинка;

Пометка = ЭлементСписка.Пометка;

Сообщить(“” + Значение + “, ” + Представление + “, ” + Картинка + “, ” + Пометка);

КонецЦикла;

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

ПослеВыбора = Новый ОписаниеОповещения(“ПослеВыбораЗначений”,ЭтотОбъект);

СписокМесяцев.ПоказатьВыборЭлемента(ПослеВыбора, “Выбирите месяц отпуска”);

Показать список значений пользователю для отметки нескольких значений

ПослеОтметки = Новый ОписаниеОповещения(“ПослеОтметкиЗначений”,ЭтотОбъект);

СписокМесяцев.ПоказатьОтметкуЭлементов(ПослеОтметки, “Выбирите месяца работы”);

Как удалить элемент из списка значений

СписокМесяцев.Удалить(0);

Как очистить список значений

СписокМесяцев.Очистить();

&НаКлиенте

Процедура ПослеВыбораЗначений(ВыбранныйЭлемент,ДополнительныеПараметры) Экспорт

Если ВыбранныйЭлемент = Неопределено Тогда

Возврат;

КонецЕсли;

Сообщить(“Вы пойдете в отпуск в ” + ВыбранныйЭлемент.Представление);

КонецПроцедуры

&НаКлиенте

Процедура ПослеОтметкиЗначений(Список,ДополнительныеПараметры)Экспорт

Если Список = Неопределено Тогда

Возврат;

КонецЕсли;

МесяцыРаботы = “”;

Для каждого МесяцГода Из Список Цикл

Если МесяцГода.Пометка Тогда

МесяцыРаботы = МесяцыРаботы + ?(МесяцыРаботы <> “”, “, “,””) + МесяцГода.Представление;

КонецЕсли;

КонецЦикла;

Сообщить(“Вы будете работать в ” + МесяцыРаботы);

КонецПроцедуры

Шпаргалка по массиву

Шпаргалка по структуре

Шпаргалка по соответствию

Шпаргалка по списку значений

Шпаргалка по таблице значений

Шпаргалка по дереву значений

Обработка с универсальными коллекциями

Содержание:

1.      Что такое список значений и для чего он используется?

2.      Как создать список значений в конфигурации системы 1С? Возможности списка значений

3.      Поиск и перебор элементов списка значений 1С  

1.      Что такое список значений и для чего он используется?

В этой статье будет описана одна из универсальных коллекций «Список значений», а также будут рассмотрены способы работы с элементами списка значений 1С.

Вы получите ответы на вопросы: что такое список значений; для чего используется список значений; как работать с его элементами.

В первую очередь, список значений — это динамическая структура данных, она хранит в себе элементы, которые являются структурами с четырьмя полями: значение; картинка; пометка; представление. Важное уточнение в том, что список значений не сохраняется в конфигурации информационной базы 1С, а нужен для работы с данными “на лету”.

Список значений — это объект встроенного языка, который работает по аналогии с обычным массивом, но имеет расширенный набор удобных методов. Каждый вид 1С коллекции значения нужен для конкретной задачи, но обычно коллекции можно преобразовывать друг к другу.

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

Как было написано выше, список содержит не значения, а структуры, полям которых можно задавать значения. Каждая такая структура имеет тип: «ЭлементСпискаЗначений».

Перейдем в режим 1С:Предприятие.

Допустим у нас имеется документ, реквизит, подготовленный для демонстрации списка значений и фиксированный массив из 5 случайных чисел.

Реквизит «СпЗнч» обновляется по нажатию кнопки «ЗаполнитьСписок».  

2.      Как создать список значений в конфигурации системы 1С? Возможности списка значений

Чтобы создать список значений на основе массива воспользуемся методом «ЗагрузитьЗначения()».

Создание массива

Пример вывода массива

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


Добавление значений

В первом случае заполняются все поля элемента списка значений 1С, кроме «Картинка», во втором указывается только значение.


Вывод

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

Значит ли это то, что при создании объекта 1С без заполнения представления, оно заполняется автоматически при создании объекта? Проверим это.


Проверка

         

Результат

Выходит, что поле не заполняется автоматически.

Также на рисунку демонстрируется работа метода «НайтиПоЗначению(Строка)».

Список значений может производить операции вставки и удаления, умеет искать, сортировать, получать значения с использованием «[]», помимо загрузки значений из массива, может делать выгрузку в массив, а еще делать копию самого себя, некий мастер на все руки. Полный список методов можно найти в справочнике.  

3.      Поиск и перебор элементов списка значений 1С

Перебор осуществляется с помощью циклов.

Первый способ — это обход списка по индексу.


Первый пример обхода списка

Вторым способом является использование конструкции «Для Каждого».


Второй пример обхода списка


Вывод обхода вторым способом

Для поиска элемента можно использовать структуру, которая заполняется, если элемент найден.

Поиск перебором

Результат поиска

Для поиска, помимо перебора с условием в цикле, могут использоваться функции: НайтиПоЗначению (Значение), НайтиПоИдентификатору (ID).

Пример работы поиска по значению уже был представлен.

ID – обычно представляет собой число, порядковый номер задается по мере добавления элементов списка значений 1С.

В этой статье была описана универсальная коллекция: список значений. Были представлены основные возможности коллекции, а также рассмотрены способы поиска в списке значений и перебора элементов списка значений 1С.

Специалист компании “Кодерлайн”

Данила Уваров

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

  • Как создать список значений

  • Как добавить элементы в список значений

  • Как найти элемент списка значений

  • Как обратиться к элементу списка значений

  • Как перебрать элементы списка значений

  • Как удалить элемент списка значений

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

  • Как найти значение в таблице значений

  • Как перебрать строки таблицы значений

  • Как удалить строки (колонки) таблицы значений

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

  • Как таблицу значений “ТаблицаПолучатель” заполнить данными таблицы значений “ИсходнаяТаблица”

  • Как изменить тип значения колонки таблицы значений, полученной выгрузкой из запроса

  • Как самостоятельно заполнить дерево значений

  • Как в дереве значений найти строку по определенному условию

Как создать список значений?

СозданныйСписок = Новый СписокЗначений;

Как добавить элементы в список значений?

СписокСотрудников.Добавить(ТекущийСотрудник, ТекущийСотрудник.ФИО, , Фото); СписокСотрудников.Вставить(Инд, ТекущийСотрудник, ТекущийСотрудник.ФИО, , Фото);

Как найти элемент списка значений?

ЭлементСписка = СписокСотрудников.НайтиПоЗначению(ИскомыйСотрудник); Если ЭлементСписка <> Неопределено Тогда Сообщить(СписокСотрудников.Индекс(ЭлементСписка)); КонецЕсли;

Как обратиться к элементу списка значений?

ЭлементСписка = СписокСотрудников[Инд]; ЭлементСписка = СписокСотрудников.Получить(Инд); Сотрудник = ЭлементСписка.Значение; Представление = ЭлементСписка.Представление; Пометка = ЭлементСписка.Пометка; Картинка = ЭлементСписка.Картинка;

Как перебрать элементы списка значений?

Для Каждого ЭлементСписка Из СписокСотрудников Цикл Сообщить(ЭлементСписка.Значение); КонецЦикла; СтаршийИндекс = СписокСотрудников.Количество() – 1; Для Сч = 0 по СтаршийИндекс Цикл Сообщить(СписокСотрудников[Сч].Значение); КонецЦикла;

Как удалить элемент списка значений?

СписокСотрудников.Удалить(0); Индекс = СписокОбъектов.Количество() – 1; Пока Индекс >= 0 Цикл Если ТипЗнч(СписокОбъектов[Индекс].Значение) = Тип(“Число”) Тогда СписокОбъектов.Удалить(Индекс); КонецЕсли; Индекс = Индекс – 1; КонецЦикла;

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

ТаблицаЗначений = Новый ТаблицаЗначений; // Создать нужные колонки. ТаблицаЗначений.Колонки.Добавить(“Фамилия”); ТаблицаЗначений.Колонки.Добавить(“Возраст”);

ТаблицаЗначений.Колонки.Добавить(“Номенклатура”, Новый ОписаниеТипов(“СправочникСсылка.Номенклатура”));// Добавить новую строку и задать значения в колонках таблицы. НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока.Фамилия = “Иванов”; НоваяСтрока.Возраст = 23; // Добавить новую строку и задать значения в колонках таблицы. НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока[“Фамилия”] = “Иванов”; НоваяСтрока[“Возраст”] = 23;

Как найти значение в таблице значений?

НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение);

НайденнаяСтрока = ТаблицаЗначений.Найти(ИскомоеЗначение, “Поставщик, Покупатель”); // Сформировать структуру отбора. СтруктураПоиска = Структура(“Сотрудник”, ИскомоеЗначение); // Найти строки. МассивНайденныхСтрок = ТаблицаЗначений.НайтиСтроки(СтруктураПоиска);

Как перебрать строки таблицы значений?

Для Каждого ТекущаяСтрока Из ТаблицаСотрудников Цикл Сообщить(ТекущаяСтрока.Сотрудник); КонецЦикла; СтаршийИндекс = ТаблицаСотрудников.Количество() – 1; Для Сч = 0 по СтаршийИндекс Цикл Сообщить(СписокСотрудников[Сч].Сотрудник); КонецЦикла;

Как удалить строки (колонки) таблицы значений?

ТаблицаЗначений.Удалить(УдаляемаяСтрока); ТаблицаЗначений.Удалить(0); ТаблицаЗначений.Колонки.Удалить(УдаляемаяКолонка); ТаблицаЗначений.Колонки.Удалить(0); СтаршийИндексКолонок = ТаблицаЗначений.Колонки.Количество() – 1; Индекс = ТаблицаЗначений.Количество() – 1; Пока Индекс > = 0 Цикл Для Сч = 0 По СтаршийИндексКолонок Цикл Если ТипЗнч(ТаблицаЗначений[Индекс][Сч]) = Тип(“Число”) Тогда ТаблицаЗначений.Удалить(Индекс); Прервать; КонецЕсли; КонецЦикла; Индекс = Индекс – 1; КонецЦикла;

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

НоваяСтрока = ТаблицаЗначений.Добавить(); НоваяСтрока[ИмяКолонки] = Значение;

Как таблицу значений “ТаблицаПолучатель” заполнить данными таблицы значений “ИсходнаяТаблица”?

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

Как изменить тип значения колонки таблицы значений, полученной выгрузкой из запроса?

// Создать пустые ссылки. ПустоеОприходование = Документы.ОприходованиеТоваров.ПустаяСсылка(); ПустойВозврат = Документы.ВозвратТоваровОтПокупателя.ПустаяСсылка(); // Выполнить запрос. Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеТоваровУслуг | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ ПЕРВЫЕ 0 | &ПустойДокументОприходование | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ ПЕРВЫЕ 0 | &ПустойДокументВозврат |”; Запрос.УстановитьПараметр(“ПустойДокументОприходование”, ПустоеОприходование); Запрос.УстановитьПараметр(“ПустойДокументВозврат”, ПустойВозврат); // Выгрузить в таблицу значений. ТаблицаСсылок = Запрос.Выполнить().Выгрузить();

Как самостоятельно заполнить дерево значений?

Процедура ЗаполнениеДерева(Кнопка) Дерево.Колонки.Очистить(); Дерево.Колонки.Добавить(“ИмяКолонки”); // Создать первую строку. Правильнее сказать создать элемент // коллекции. Он помещается в переменную “СтрокаВерхнегоУровня”. СтрокаВерхнегоУровня = Дерево.Строки.Добавить(); // В колонку “ИмяКолонки” записать значение “Старшая”. СтрокаВерхнегоУровня.ИмяКолонки = “Старшая”; // Создать строку подчиненную “Старшей”. ПодчиненнаяСтрока =СтрокаВерхнегоУровня.Строки.Добавить(); ПодчиненнаяСтрока.ИмяКолонки = “Первая подчиненная”; ПодчиненнаяВторогоУровня = ПодчиненнаяСтрока.Строки.Добавить(); ПодчиненнаяВторогоУровня.ИмяКолонки = “Первая нижняя”; ПодчиненнаяВторогоУровня = ПодчиненнаяСтрока.Строки.Добавить(); ПодчиненнаяВторогоУровня.ИмяКолонки = “Вторая нижняя”; ПодчиненнаяСтрока = СтрокаВерхнегоУровня.Строки.Добавить(); ПодчиненнаяСтрока.ИмяКолонки = “Вторая подчиненная”;

// Использование метода позволит увидеть результат работы // с деревом значений в табличном поле. ЭлементыФормы.Дерево.СоздатьКолонки(); КонецПроцедуры Процедура ОткрытиеВетки(Кнопка) // Сделать текущим именно элемент коллекции “Строки”. РезультатПоиска = Дерево.Строки.Найти(“Первая нижняя”, “ИмяКолонки”, Истина); Если РезультатПоиска <> Неопределено Тогда ЭлементыФормы.Дерево.ТекущаяСтрока = РезультатПоиска; КонецЕсли; КонецПроцедуры

Как в дереве значений найти строку по определенному условию?

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

Добавить комментарий