Добавить в список в 1с
Список значений — это программная коллекция (объект встроенного языка), содержащая пронумерованную последовательность элементов. Каждому элементу присваивается последовательный целочисленный номер — индекс, начинающийся с нуля. По индексу можно получить или установить элемент списка значений.
Элемент списка значений
Каждый элемент списка является программным объектом ЭлементСпискаЗначений встроенного языка и содержит следующие свойства:
- Значение (Произвольный тип) — хранимое значение произвольного типа
- Представление (Строка) — представление элемента списка для пользователя
- Пометка (Булево) — значение пометки элемента в списке
- Картинка (Картинка) — картинка элемента списка для пользователя
Создание списка значений
Создание пустого списка значений выполняется с помощью оператора Новый:
Для добавления элементов в список значений используется одноименный метод СписокЗначений.Добавить():
Каждый новый элемент помещается в конец списка. Для доступа к отдельным элементам списка значений применяется операция разыменования: указывается имя переменной, объявленной как список значений, а затем, в квадратных скобках, указывается индекс элемента. Свойства полученного элемента можно использовать как слева от оператора присваивания:
Так и справа: в выражениях и в качестве параметров процедур и функций:
Границы списка значений
Как было сказано выше, левая граница списка значений постоянна и всегда равно нулю (0). Верхняя граница напрямую связана с количеством элементов в списке значений. Получить ее можно с использованием метода СписокЗначений.Количество() с последующим вычитанием 1.
Давайте рассмотрим распространенные операции со списком значений.
Перебор элементов списка значений
Для перебора (обхода) всех элементов списка значений обычно используется оператор цикла Для :
Либо оператор цикла Для Каждого :
Второй способ больше подходит для ситуации, когда нужно только последовательно перебрать все значения списка. Его использование повышает «читабельность кода».
Поиск в списке значений
Для поиска значений в списке предназначен метод СписокЗначений.НайтиПоЗначению(). Он возвращает найденный элемент списка значений, либо Неопределено , если указанного значения в списке нет.
Сортировка списка значений
Сортировка элементов в списке значений может производиться двумя способами:
Список значений в 1С 8.3 — это объект, позволяющий строить динамические наборы значений и манипулировать ими.
Визуально можно представить как таблицу из четырёх колонок:
- значение,
- картинка,
- пометка,
- представление.
Список значений может быть наполнен значениями любых типов. Значения характеризуются позицией в списке (индексом).
Рассмотрим работу с объектом на примерах:
Создание объекта СписокЗначений
Добавить элемент в список значений
Удалить элемент списка значений
Вставить элемент в список значений
Установить/снять пометки у всех элементов
Найти в списке значений
Узнать индекс элемента с известным значением
Отсортировать список значений
Сдвинуть элемент списка значений
Создать копию списка значений
Получить количество элементов списка значений
Перебор элементов списка значений
Загрузить/выгрузить в массив
Удалить все элементы из списка значений
Интерактивный выбор одного элемента из списка на форме
Модальный и немодальный режим. Универсальный способ:
Интерактивная отметка значений из списка на форме
Модальный и немодальный режим. Универсальный способ:
Преобразования таблицы значений в список значений
Поддержите нас, расскажите друзьям!
СПРОСИТЕ в комментариях!
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.
Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
Объекты типа массив в 1С 8.3 представляют собой совокупность упорядоченных значений любого типа, в том числе и типа «массив», что в свою очередь позволяет организовывать многомерные массивы. Идентификация значений осуществляется по индексам, нумерация которых начинается с «0».
Создание массива
Синтаксис:
Примеры:
Добавление элементов в массив
Примеры:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Получение значения элемента по индексу
Поиск в массиве 1С
Присвоение значений элементам массива
Примеры:
Как узнать количество элементов массива (размер массива)
Перебор массива 1С
Примеры:
Перебор всех элементов двумерного массива
Примеры:
Удаление элементов из массива
Примеры:
Как разложить строку в массив
Пример преобразования массива в список значений
Пример преобразования массива в таблицу значений
Сортировка массива 1С разными способами
Примеры:
Как свернуть массив в 1С
Пример:
Поддержите нас, расскажите друзьям!
СПРОСИТЕ в комментариях!
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.
Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
Список значений это универсальная коллекция значений, которая, по сути, одномерный динамический массив, созданный в рамках платформы 1С для решения некоторых интерфейсных задач. В отличие от простого массива, элементы которого могут быть произвольных типов, у списка значений каждый элемент имеет специальный тип Элемент списка значений. Элемент списка значений может хранить в себе следующие данные: само значение (любого типа), представление значения (тип строка), пометка (тип булево) и картинка (тип картинка).
Работать со списком значений (создавать, заполнять и т.д.) можно и в тонком, и в толстом клиенте.
Программно в конфигураторе 1С создать список значений необходимо при помощи конструктора Новый.
Список = Новый СписокЗначений ;
После создание списка значений с ним можно работать — добавлять новые значения, выгружать значения в массив и загружать значения из массива.
Как добавить новое значение в список
Для того чтобы нам начать работать со списком значений, необходимо заполнить его элементами.
Сделать это можно тремя способами: добавить новый элемент (добавится в конец списка), вставить новый элемент в нужное место и загрузить элементы из массива. Для добавления элемента в конец списка используется метод Добавить(), а для вставки элемента в нужное место списка – метод Вставить()
Метод добавить имеет следующий синтаксис:
Значение — это может быть объект любого типа, который будет храниться в списке значений.
Представление — задаем, каким образом объект будет представлен пользователю в списке. Имеет тип строка. Это необязательный параметр, в случае отсутствия представления объект будет показан в обычном виде.
Пометка -задает, будет ли у данного объекта в списке пометка выбора или нет. Имеет тип Булево. Тоже необязательный параметр.
Картинка – картинка, которая привяжется к нужному элементу.
Обязательным является первый параметр.
Добавить элементы можно так:
Список . Добавить ( 100 , «Число 100» );
Список . Добавить ( 10 , «Число 10» );
Список . Добавить ( 100 );
Список . Добавить ( 10 );
Метод Вставить имеет следующий синтаксис.
Все параметры, кроме Индекса, точно такие же, как у метода Добавить.
Параметр Индекс указывает непосредственно номер позиции, на который устанавливается элемент. Элемент, который был на этом индексе, сдвигается на плюс один, и все последующие элементы тоже.
Т.е. при написании следующего кода:
Список = Новый СписокЗначений ;
Список . Добавить ( 100 , «Число 100» );
Список . Добавить ( 10 , «Число 10» );
Список . Вставить ( 0 , 1000 , «Число 1000» );
Элементы будут расположены таким образом:
Как загрузить массив в список значений
С помощь метода ЗагрузитьЗначения в список значений можно загрузить одномерный массив.
Все предыдущие элементы списка значений при этом удалятся. Об этом надо всегда помнить.
Делается это достаточно просто – необходимо передать в метод нужный массив.
Массив = Новый Массив ;
Массив . Добавить ( «Иванов И.И» );
Массив . Добавить ( «Петров А.Н» );
Список = Новый СписокЗначений ;
Список . ЗагрузитьЗначения ( Массив );
Элемент списка значений
Мы научились добавлять, вставлять и загружать элементы в список значений, рассмотрим, что вообще такое Элемент списка значений.
Если элементы массива это и есть те значения, которые хранятся в массиве, то элементом списка значений является отдельный объект, который имеет свойства и методы. Все параметры метода Добавить списка значений являются свойствами элемента списка значений, который будет создан при помощи этого метода. Любой список значений состоит из объектов Элемент списка значений. Мы можем обратиться к любому элементу списка значений и работать с ним самостоятельно как с объектом. Но объект Элемент списка значений не может существовать без своего родителя — Списка значений.
Обратиться непосредственно к элементу списка значений можно двумя способами: с помощью оператора квадратные скобки и с помощью метода Получить.
ПервыйЭлемент = Список [ 0 ];
ПервыйЭлемент = Список . Получить ( 0 );
В метод получить передается только один параметр – индекс нужного элемента
После того, как мы получили нужный элемент, к его свойства (Значение, Представление, Пометка, Картинка) можно обращаться через точку.
Причем можно как считать значение нужного свойства, так и записать в это свойство какое-либо значение.
ПервыйЭлемент = Список . Получить ( 0 );
ПервыйЭлемент . Представление = «Иванов Иван Иванович» ;
Сообщить ( ПервыйЭлемент . Значение + » — » + ПервыйЭлемент . Представление );
Как перебрать список значений
Перебрать список значений довольно просто – необходимо воспользоваться или циклом Для…Цикл, тогда получать элемент списка значений нужно будет посредством квадратной скобки (или метода Получить), или циклом Для каждого Цикл, в этом случае мы будем получить уже непосредственно элемент в каждой итерации цикла.
Для н = 0 по Список . Количество () — 1 Цикл
ЭлемСписка = Список [ н ];
Сообщить ( ЭлемСписка . Значение );
КонецЦикла;
Обратите внимание, что максимальное значение счетчика цикла должно соответствовать количеству элементов списка минус один, т.к. индекс начинается с нуля.
Гораздо практичнее пользоваться циклом Для каждого Цикл
Для Каждого ЭлемСписка из Список Цикл
Сообщить ( ЭлемСписка . Значение );
КонецЦикла;
В этом случае, мы сразу получаем нужный элемент списка в каждой итерации.
Статьи о других универсальных коллекциях значений в 1С
Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Динамический список 1С предназначен для вывода на форму любых данных в произвольном виде. Эти данные могут быть представлены в виде списка, таблицы или дерева. Динамический список позволяет делать сортировку выводимых данных, отбор, группировку, условное оформление и т.д. Причём, отбор, группировку и прочее может делать как разработчик, так и пользователь.
Динамический список 1С можно создать в качестве реквизита управляемой формы. Для этого достаточно, типу реквизита присвоить значение ДинамическийСписок.
В моем примере динамический список создан на основной форме обработки.
Для того, чтобы динамический список выводил какие-то данные, нам следует или указать основную таблицу в свойствах динамического списка, или написать произвольный запрос на языке запросов 1С.
Динамический список 1С — основная таблица
Динамическому списку можно назначить основную таблицу. Основная таблица – это произвольный объект метаданных (документ, справочник, регистр значения и т.д.), данные которого должны отобразиться в динамическом списке.
Например, в качестве основной таблицы выберем справочник Номенклатура.
И поместим динамический список на форму в виде таблицы, не забыв добавить колонки при размещении.
Если мы сейчас откроем обработку в пользовательском режиме 1С: Предприятия, то на основной форме обработки будет номенклатура в виде иерархического списка.
Можно сделать отображение списка в виде дерева. Для этого можно изменить режим просмотра таблицы на форме в пользовательском режиме.
Либо, поменять значение свойства Отображение таблицы формы, в которой был размещен динамический список.
После этого, динамический список на форме будет в виде дерева.
Произвольный запрос динамического списка 1С
Помимо использования основной таблицы, можно также динамический список сделать на основании запроса. Причем, можно взять за основу основную таблицу. Для примера, выведем вместе с номенклатурой цены, которые хранятся в периодическом регистре сведений Цены номенклатуры. Если мы в свойстве Произвольный запрос динамического списка установим флаг, при уже выбранной основной таблице, то у нас основная таблица будет взята за основу при формировании запроса.
Чтобы посмотреть на запрос, следует нажать на гиперссылку Открыть свойства НастройкаСписка.
В случае произвольного запроса мы можем изменить набор данных, который должен отображаться в динамическом списке. Но в этом случае все равно рекомендуется указывать основную таблицу, необходимо это делать для того, чтобы платформа могла определить, какая информация в этом динамическом списке главная, а какая второстепенная, и исходя из этого настроить стандартные команды. В том случае, если у Вас несколько таблиц и они связаны каким-то соединением, то все равно рекомендуется всегда указывать основную таблицу, потому что в противном случае производительность основного списка будет желать лучшего.
Свяжем справочник Номенклатура с виртуальной таблицей срез последних регистра сведений Цены номенклатуры.
Для этого, вызовем конструктор запроса из окна динамического списка, и добавим в список таблиц запроса виртуальную таблицу СрезПоследних. У виртуальной таблицы выберем ресурс Цена, который поместим в список полей, применив к этому полю функцию ЕстьNULL.
Свяжем левым соединением таблицу номенклатуры с виртуальной таблицей СрезПоследних регистра сведений.
И исправим имя поля Цена.
Наш запрос готов.
Обратите внимание на свойства «Динамическое считывание данных», которое есть и в свойствах динамического списка, когда указана основная таблица, и в том случае, когда указан произвольный запрос . Если это свойство установлено, то считывание данных происходит порциями, т.е. выбираются только те данные, которые необходимы для отображения на экране. В целях улучшения производительности, лучше всегда это свойство устанавливать.
Поскольку, мы переделывали существующий динамический список, то поле цена в таблице формы не отобразилось. Добавим это поле.
После такой доработки динамического списка, на в таблице на форме будут отображаться цены у номенклатуры.
Очень подробно работа с динамическими списками дается в моей книге «Основы разработки в 1С: Такси».
В этой книге вы научитесь:
- Настраивать динамические списки;
- Работать с поиском в динамическом списке;
- Программировать динамические списки (программная установка параметров, отборов, группировок, сортировок и условного оформления).
У вас, как у читателя блога, есть скидка 15 % по промо-коду: 48PVXHeYu
Более подробно о работе с другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.
В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком
Для моих читателей, купон на скидку 25%: hrW0rl9Nnx
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Вступайте в мои группы:
One thought on “ Динамический список 1С ”
Читайте также: