1С количество строк в динамическом списке

1С количество строк в динамическом списке

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

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

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

Динамическое считывание данных становится возможным благодаря тому, что списку указывается основная таблица. Ключевые поля этой таблицы используются платформой для однозначной идентификации строк списка. Например, если список отображает данные справочника или документа, то в качестве ключевого поля используется поле Ссылка. Если список отображает записи какого-нибудь регистра, то для идентификации отдельных строк платформа использует объекты, содержащие значения нескольких ключевых полей. Эти объекты имеют разные названия для разных таблиц, но у них есть общая часть – «КлючЗаписи». Например, РегистрСведенийКлючЗаписи. , РегистрРасчетаКлючЗаписи. и т.д.

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

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

Читайте также:  Трек номер по английски

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

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

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

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

  • ЗначениеПоля – для такого ключа вам нужно выбрать одно единственное ключевое поле, и поведение списка в этом случае будет таким же, как у списка, содержащего ссылочные объекты (список справочника, список документа и т.д.);
  • КлючСтроки – для такого ключа вам нужно выбрать одно или несколько ключевых полей, и поведение списка в этом случае будет таким же, как у списка, содержащего записи (список регистра накопления, список регистра сведений и т.д.);
  • НомерСтроки – это имитация того поведения, которое существовало раньше; в качестве ключа будет использоваться номер строки в выборке со всеми вытекающими из этого недостатками;
  • Авто – в этом случае платформа сама автоматически определит вид ключа как один из трех перечисленных выше: если ключевые поля не заданы, то будет НомерСтроки, если задано одно ключевое поле, то ЗначениеПоля, если более одного ключевого поля, то КлючСтроки.
Читайте также:  Проект участка программа бесплатно

Таким образом, теперь, если вы выбираете для своего произвольного запроса вид ключа ЗначениеПоля или КлючСтроки, вам становятся доступны:

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

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

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

Как подсчитать итоги динамического списка (медленный вариант при большом объеме данных)

Поделиться ссылкой:

Похожее

1С 8.3 : Подсчет итогов динамического списка (медленный вариант при большом объеме данных) : 3 комментария

Если НЕ ЭлементыФормы.ДействияФормы.Кнопки.ВыводитьИтоги.Пометка Тогда
ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала = “”;
Возврат;
КонецЕсли;

Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДокументСписок);
Результат = Построитель.Результат.Выгрузить(); //отобранные строки типа РезультатЗапроса

на 5000 документах работало идеально, но потом жесть…((((
щас гляну как отработает Ваш код на 6741 документов.

даже пробовал через кнопку.

Кнопка.Пометка = НЕ Кнопка.Пометка;
ОбновлениеОтображения();

медленный вариант при большом объеме данных!
Это примерно сколько должно быть документов в форме списка?
на каком количестве он уже замедляем работу?

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

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

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

Читайте также:  Какой смартфон самый безопасный

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

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

Оба упомянутых поля уже есть в запросе, поэтому динамический список добавляет только раздел УПОРЯДОЧИТЬ ПО . В результате запрос получается таким:

Теперь посмотрим на запрос. В запросе указано левое соединение основной таблицы справочника Товары с табличной частью документа Накладная . Это значит, что для каждой строки из основной таблицы будет выведено ее объединение с каждой строкой из табличной части, удовлетворяющее условию ПО .

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

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

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

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

Ссылка на основную публикацию
1 More piston 2
Цена: 21$ Перейти в магазин По шумоизоляции никаких претензий нет, если правильно подобрать амбушюры. В режиме разговора никаких нареканий не...
Adblock detector