Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 15:14

Что такое "Список Значений", "Таблица значений" и "Дерево Значений"?

Автор Jahongir, 16 дек 2011, 11:06

0 Пользователей и 1 гость просматривают эту тему.

Jahongir

Я новичок в 1С программирование, разабрался с массивом и структурой. А вот "Список Значений", "Таблица значений" и "Дерево Значений" ни как. Зачем они нам? Где можно почитать более подробно и доступно? В интернете все статьи повтаряет друг друга.

sergeevds

Это разные типы данных, представить их себе можно исходя из названий:
СписокЗначений - это что-то вроде массива, используется преимущественно на формах, для выбора какого-нибудь значения из всплывающего списка, т.е. например создаешь список значений, добавляешь в него ссылок на элементы какого-нибудь справочника и суешь на форму, делаешь на ней кнопку выбора из списка и у тебя есть список с констекстным поиском на форме. Но это чисто применение на форме, а так это тот же массив, но отличается от него тем, что в массиве можно хранить данные только одного типа, а в списке значений - какие угодно вперемешку.
ТаблицаЗначений - это таблица, причем такая, какую сделаешь ты сам, хоть в ней двести столбцов, хоть один - не суть. Испльзуется дохрена для чего, очень удобно обрабатывать в ней данные, ну например, метод запроса, "Запрос.Выполнить().Выгрузить();" выгрузит результат твоего запроса в таблицу значений, тебе надо только пердставить, как она выглядит. В ней в каждой строке можно найти нужную ячейку, зная имя столбца.
Вобщем лучше попробую обяснить на конректном примере:
Запрос = Новый Запрос;
//допустим на форме етсь выбор периода с реквизитами "ДатаНачала" и "ДатаКонца"
Запрос.УстановитьПараметр("ДатаНачала",ДатаНачала);
Запрос.УстановитьПараметр("ДатаКонца",ДатаКонца);
Запрос.Текст =
"ВЫБРАТЬ
|   ПартииТоваровНаСкладахОбороты.Номенклатура,
|   СУММА(ПартииТоваровНаСкладахОбороты.КоличествоПриход) КАК КоличествоПриход,
|   СУММА(ПартииТоваровНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход
|
|ИЗ
|   РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&ДатаНачала, &ДатаКонца, , ) КАК ПартииТоваровНаСкладахОбороты
|
|СГРУППИРОВАТЬ ПО
|   ПартииТоваровНаСкладахОбороты.Номенклатура"
// такой запрос даст нам перечень номенклатуры, количество продаж ее и поступлений
//из регистра "ПартииТоваровНаСкладах"
Таблица = Запрос.Выполнить().Выгрузить();
//Теперь переменная "Таблица" имеет тип "ТаблицаЗначений" и содержиться в ней результат твоего запроса.
//Просто для примера, т.к. это будет самая дебильная реализация, тебе надо в результате запроса найти
//все расходы меньше 50 штук и помножить их на два (да, странная задача согласен).
Для Каждого Строка Из Таблица Цикл
      Если Строка.КоличествоРасход <50 Тогда //Так же через "Строка." можно в данном случае найти ссылку
// на номенклатуру или количество прихода, т.е. строка - это строка таблицы, а ячейки в ней можно найти по имени
// столбца.
             Строка.КоличествоРасход = Строка.КоличествоРасход*2
      КонецЕсли;
КонецЦикла;
//Вот теперь в переменной "Таблица" содержиться результат запроса, но количества расхода, которые были
// меньше, чем 50 увеличены вдвое.

Как-то так, но почитай синтаксис помощник - в нем перечислены все методы и свойства списка и таблицы. У таблицыЗначений побще очень много методов, ее можно и выгруэать сразу в табличную часть документа и много чего еще интересного.





Dethmontt

sergeevds в массиве можно хранить данные только одного типа, а в списке значений - какие угодно вперемешку.//
Простите, с каких это пор в 1С, в массиве хранятся данные одного типа???????
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Givy

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

Jahongir

Цитата: sergeevds от 22 дек 2011, 14:32
Но это чисто применение на форме, а так это тот же массив, но отличается от него тем, что в массиве можно хранить данные только одного типа, а в списке значений - какие угодно вперемешку.

а в списке значений можно хранить список значений?

has


sergeevds

Да, что-то я про массив перегнул... Привычка, видимо.

Теги:

Похожие темы (1)

Рейтинг@Mail.ru

Поиск