1с как получить выделенные строки динамического списка
Перейти к содержимому

1с как получить выделенные строки динамического списка

  • автор:

Как обойти все строки динамического списка

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

Иногда возникает задача полностью обойти весь динамический список и провести с его строками какие-то операции. Но тут возникает проблема: динамический список нигде не хранится целиком (на то он и динамический). Строки динамического списка подгружаются постепенно, порциями. Таким образом, у динамического списка нет итератора, с помощью которого можно было бы его обойти целиком, итоговое количество строк также неизвестно.

Решить эту проблему можно выполнив запрос, аналогичный тому, который выполняется динамическим списком. Но в этом случае, в дополнение к тексту запроса, нужно еще получить и учесть все отборы, сортировки и прочие параметры, которые установил пользователь.

К счастью, начиная с версии платформы 1С:Предприятие 8.3.6.1977, доступен более простой способ.

  • Список — элемент управляемой формы, в который выводится динамический список.
  • Функция должна преобразовать динамический список в таблицу значений.
  • Функция должна выполняться на сервере.

&НаСервере
Функция ДинамическийСписокВТаблицуЗначений ( )

//Получаем схема компановки данных (здесь хранится текст запроса)
Схема = Элементы . Список . ПолучитьИсполняемуюСхемуКомпоновкиДанных ( ) ;

//Получаем настройки пользователя (отборы, сортировки и т.п.)
Настройки = Элементы . Список . ПолучитьИсполняемыеНастройкиКомпоновкиДанных ( ) ;

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

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпоновки . Инициализировать ( МакетКомпоновки ) ;

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений ;
Результат = ПроцессорВывода . Вывести ( ПроцессорКомпоновки ) ;

//Возвращаем полученную таблицу значений
Возврат Результат ;

Вот и все. Кстати, еще один плюс данного метода в том, что он работает довольно быстро, даже если строк в динамическом списке много.

Как обойти все строки динамического списка : 2 комментария

У дин.списка есть событие ПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Пар. Строки есть итератором

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

1с8.2 получить выделенные строки из динамического списка

Кто пробовал получить данные с динамического списка меня поймет — это большой геморой. Для себя я нашел два пути решения первый — это выгребать данные через выделенные строки (самый простой), второй — создать аналогичный динамическому списку запрос и в него указать параметры отбора указанные пользователем, но это не работает если пользователь решит фильтрануть пользуясь поиском.

Итак первый вариант получение данных через выделенные строки.

Список выделенных строк в 1С

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

А также какими методами и свойствами удобно пользоваться, относительно выделенных строк в списке. И будут приведены примеры программного кода для работы и управления выделенных строк.

Чаще всего, юзеры встречаются с работой с выделенными строками в динамическом списке, древе значений, списке значений и таблице значений.

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

Рассмотрим пример, в котором демонстрируется работа с выделенными строками в 1С, основа – это форма с внешней обработкой вида №4, который располагается в коллекции, она представлена на скриншоте с примером ниже:

1s spisok vydelennyh strok.png

Работа с выделенными строками в 1С

Свойство «ВыделенныеСтроки» всегда задействуется в связке с методом, из коллекции формы, «НайтиПоИдентификатору(<Идентификатор>), этот метод присваивается элементам в коллекции, согласно их идентификатору, также ещё один метод, который связан со списками выделенных строк – это «ДанныеСтроки(<Строка>), при помощи этого метода можно возвращать значения, которые содержат данные по указанной строке.

Далее представлен код программы, в котором демонстрируется то, как можно пользоваться свойством «ВыделенныеСтроки» по различным вариациям в коллекции:

1s spisok strok.png

Свойство ВыделенныеСтроки для работы с выделенными строками в 1С

2. Метод «ДанныеСтроки()» для работы со списком выделенных строк в 1С

Рассмотрим ещё один метод, который относится к выделенным строкам и его использование – это «ДанныеСтроки()».

Каждое поле из таблицы имеет свойства «ТекущиеДанные», «ТекущаяСтрока» и метод «ДанныеСтроки()». Свойство «ТекущиеДанные» отвечает за хранение данных в текущей строке, конкретного поля таблицы, а свойство «ТекущаяСтрока» отвечает за хранение значение, по которому можно идентифицировать строку. Метод же «ДанныеСтроки()» необходим для возвращения коллекции значений из любой из строк в динамическом списке, который отражается в виде поля таблицы.

Одно из применений этого метода – это обход строк по коллекциям в поле таблицы, как пример, если есть коллекция с выделенными строками.

Рассмотрим пример обхода коллекции списка выделенных строк. Для примера, возьмём некоторое поле таблицы, которое отображает перечень из справочника по номенклатуре. Необходимо сохранить в документе, текстового формата, все строки из данного справочника, которые являются выделенными, при этом, сохранять нужно лишь значения из видимых столбцов в поле таблицы. Далее приведён пример кода, для решения данной задачи, в котором можно получить выделенные строки в списке при помощи кнопки «Записать», если кликнуть на неё:

spisok vydelennyh strok.png

Список выделенных строк в 1С осуществлен с помощью кнопки Записать

spisok vydelennyh strok v 1s.png

Пример кода при работе со списком выделенных строк

jelementy kollekcii.png

Выделенные строки в списке при работе с кодом

В данной статье было описано как работать со списками выделенных строк в 1С, какие свойства и методы удобно и нужно задействовать. А также был приведён обратный метод, — обход коллекции выделенных строк, при помощи метода «ДанныеСтроки()», при этом, не прекращая работу с выделенными строками.

Выделенные строки коллекции значений

Часто приходится работать с выделенными строками пользователем в различных элементах формы типа коллекции:

  • Дерево значений
  • Динамический список
  • Список значений
  • Таблица значений

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

Для демонстрации работы с выделенными строками, я создал в управляемой форме внешней обработки 4 вида коллекции ( см. Рис 1 )

Свойства ВыделенныеСтроки используется вместе с методом коллекции формы НайтиПоИдентификатору(<Идентификатор>) , которое получает элемент коллекции по идентификатору или с методом ДанныеСтроки(<Строка>) , который возвращает значение, содержащее данные указанной строки.

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *