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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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