динамический список что это

Динамический список

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

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Настройка списков

Система предоставляет пользователю широкие возможности по настройке внешнего вида списков. Можно менять их внешний вид (список, дерево), можно задавать различные группировки, отборы, а также можно устанавливать условное оформление списков в зависимости от тех данных, которые в нем отображаются. Подробнее…

Вывод списков

Для большинства списков система предоставляет возможность их вывода для печати или для сохранения их на диске в виде файла. Подробнее…

Источник

Программирование в 1С для всех

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

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

В моем примере динамический список создан на основной форме обработки.

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Динамический список 1С — основная таблица

Динамическому списку можно назначить основную таблицу. Основная таблица – это произвольный объект метаданных (документ, справочник, регистр значения и т.д.), данные которого должны отобразиться в динамическом списке.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Например, в качестве основной таблицы выберем справочник Номенклатура.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

И поместим динамический список на форму в виде таблицы, не забыв добавить колонки при размещении.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Если мы сейчас откроем обработку в пользовательском режиме 1С: Предприятия, то на основной форме обработки будет номенклатура в виде иерархического списка.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Можно сделать отображение списка в виде дерева. Для этого можно изменить режим просмотра таблицы на форме в пользовательском режиме.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Либо, поменять значение свойства Отображение таблицы формы, в которой был размещен динамический список.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

После этого, динамический список на форме будет в виде дерева.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

Помимо использования основной таблицы, можно также динамический список сделать на основании запроса. Причем, можно взять за основу основную таблицу. Для примера, выведем вместе с номенклатурой цены, которые хранятся в периодическом регистре сведений Цены номенклатуры. Если мы в свойстве Произвольный запрос динамического списка установим флаг, при уже выбранной основной таблице, то у нас основная таблица будет взята за основу при формировании запроса.

Чтобы посмотреть на запрос, следует нажать на гиперссылку Открыть свойства НастройкаСписка.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

Свяжем справочник Номенклатура с виртуальной таблицей срез последних регистра сведений Цены номенклатуры.

Для этого, вызовем конструктор запроса из окна динамического списка, и добавим в список таблиц запроса виртуальную таблицу СрезПоследних. У виртуальной таблицы выберем ресурс Цена, который поместим в список полей, применив к этому полю функцию ЕстьNULL.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Свяжем левым соединением таблицу номенклатуры с виртуальной таблицей СрезПоследних регистра сведений.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

И исправим имя поля Цена.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Поскольку, мы переделывали существующий динамический список, то поле цена в таблице формы не отобразилось. Добавим это поле.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

После такой доработки динамического списка, на в таблице на форме будут отображаться цены у номенклатуры.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Очень подробно работа с динамическими списками дается в моей книге «Основы разработки в 1С: Такси».

В этой книге вы научитесь:

У вас, как у читателя блога, есть скидка 15 % по промо-коду: 48PVXHeYu

Более подробно о работе с другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

Промо-код на скидку в 15% — 48PVXHeYu

Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком

Для моих читателей, купон на скидку 25%: hrW0rl9Nnx

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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Вступайте в мои группы:

Источник

Особенности работы динамического списка с произвольным запросом

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

Существует справочник Товары и документ Накладная, который регистрирует поступление товаров. В каждой накладной указывается, от какого поставщика получены товары.

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

В системе существует два товара и проведено две накладных, которыми оформлено поступление этих товаров.

Таким образом, в процессе выполнения этого запроса, для товара Молоко будет найдена одна подходящая запись:

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

А для товара Хлеб будет найдена тоже одна подходящая запись:

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

Источник

Запросы в динамических списках

Область применения: управляемое приложение, мобильное приложение.

Методическая рекомендация (полезный совет)

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

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

Пример

В динамическом списке документов-распоряжений на отгрузку нужно вывести состояние отгрузки. Состояние зависит от остатков регистра накопления, и статусов двух документов другого типа.

НЕПРАВИЛЬНО

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

ПРАВИЛЬНО

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

2. Необходимо выбрать один из трех режимов работы динамического списка:

3. При разработке динамического списка следует учитывать что запрос, который фактически будет сформирован к СУБД, зависит от предопределенных настроек отборов, порядка и группировки СКД. В частности это означает, что необходимо рассмотреть индексирование полей:

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

4. Настоятельно не рекомендуется использовать конструкции, «утяжеляющие» запрос:

5.1 Соединяться в запросе следует только с небольшим количеством реальных таблиц (в оптимальном варианте в динамическом списке – только одна таблица, и она назначена основной).

Не рекомендуется выполнять соединения:

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

5.3. Временные таблицы в динамических списках следует использовать с учетом требований описанных ниже и в стандарте про использование временных таблиц.

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

5.3.2. В частности, если не удается переделать запрос динамического списка, используя виртуальные таблицы с ограничениями (см. п. 5.2), или вообще отказавшись от их использования, то вместо соединения с ними следует использовать соединения с временными таблицами.

5.3.3. Если последний запрос динамического списка выбирает данные только из ранее созданной временной таблицы, то это уже не динамический список и следует перепроектировать его запрос и, скорее всего, метаданные, используемые запросом.

5.4. При учете количества таблиц, участвующих в запросе, необходимо помнить, что обращение к полям «через точку» приводит к неявному соединению с дополнительными таблицами. Подробнее см.: Разыменование ссылочных полей составного типа в языке запросов

5.5. При работе со списком под неполными правами, в которых настроены ограничения доступа к данным (RLS) к таблицам, участвующим в запросе*, также автоматически присоединяются условия ограничения доступа к данным, которые замедляют работу списка. Именно в этом режиме работы следует проверять скорость работы динамических списков.

* примечание: к тем таблицам, к которым предусмотрен RLS в конфигурации.

6. Предусмотреть оптимизацию при работе с полями составного типа

ВЫРАЗИТЬ(ДанныеДокумента.ДокументОснование КАК Документ.АктВыполненныхРабот)

7. Запрос динамического списка рекомендуется менять «на лету» на более оптимальный, если это возможно.

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

8. Если применение вышеизложенных рекомендаций не возможно, либо оно не дает должного эффекта, то можно рассмотреть следующие пути оптимизации:

8.1. Отказаться от части возможностей динамического списка.

8.2. Осуществлять вывод данных не в динамический список, а в таблицу или дерево значений.

При этом появятся возможности оптимизации недоступные для динамических списков, такие как использование привилегированного режима и т.п..

Данный способ применим, если выполняется одно из условий:

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

Источник

Заметки из Зазеркалья

Реализовано в версии 8.3.10.2168.

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

Однако такая универсальность имеет и оборотную сторону. Желание «показать сразу всё» может приводить вас к значительному усложнению запроса. В результате вы будете получать неэффективные планы выполнения и, как результат, снижение производительности при отображении и пролистывании списка.

Кроме этого есть ряд прикладных задач, в которых алгоритм отбора и оформления данных списка довольно сложен. В этих случаях возможностей произвольного запроса и условного оформления просто не хватает. Хочется иметь более «свободный» и более «точный» инструмент, который позволит сделать «что угодно» и «только там, где нужно».

Событие ПриПолученииДанныхНаСервере

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

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

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

Вы можете изменить данные, находящиеся в этих строках, или применить к ячейкам собственное оформление. Доступны такие возможности оформления как ЦветФона, ЦветТекста, Шрифт, ГоризонтальноеПоложение, Видимость, Доступность, Отображать, Текст и Формат.

Также, при необходимости, вы можете посмотреть и проанализировать копию полных настроек динамического списка. Но изменить настройки вы не сможете.

Простейший сценарий использования

Проще всего понять назначение этого обработчика на примере. Пример заключается в том, чтобы в списке товаров показать их остатки из регистра накопления. Количество меньше некоторого значения выделить красным цветом.

До сих пор эта задача решалась левым соединением в запросе динамического списка, и условным оформлением списка, устанавливаемым в конфигураторе.

Теперь она решается так. Стандартный запрос списка не усложняется, в него добавляется только фиктивное поле Остаток.

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

Здесь, методом ПолучитьКлючи(), из коллекции строк динамического списка вы получаете их ключи (ссылки), и передаёте эти ключи в запрос остатков.

Затем, при обходе результатов запроса, вы получаете нужные строки по ключу, в колонку Остаток помещаете значение, и устанавливаете оформление этого поля, если нужно.

В результате пользователь видит следующий список:

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

В чём преимущество такого варианта?

Во-первых, запрос списка остаётся простым. Или он не остаётся простым, но количество соединений в нём уменьшается. А это значит, что для него, с большой долей вероятности, будет построен хороший план.

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

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

Ограничения на изменяемые и добавляемые поля

Тот факт, что в обработчике вы можете изменить значения полей списка, несет в себе особенность, которую нужно всегда учитывать.

Если не предпринять дополнительных мер, то пользователь может быть сильно удивлён результатами группировки, сортировки или отбора (в том числе и поиска) по тем полям, которые вы изменили. Ведь эти действия будут выполняться по исходным данным, получаемым запросом, а не по тем данным, которые видит пользователь.

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

динамический список что это. Смотреть фото динамический список что это. Смотреть картинку динамический список что это. Картинка про динамический список что это. Фото динамический список что это

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

Источник

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

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