Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Особенности поведения списков динамического просмотра          
Batchir Подменю пользователя
сообщение 08.02.09, 20:40
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Просмотр списков в системе 1С:Предприятие

Для просмотра списков объектов информационной базы, таких как элементы справочника, элементы планов видов характеристик, видов расчета, планов обмена, а также для просмотра списков записей регистров предназначены специальные объекты системы 1С:Предприятие. Это объекты с названиями вида СправочникСписок.<ИмяСправочника>, РегистрСведенийСписок.<ИмяРегистраСведений> и т.д. Такие объекты могут выступать источниками данных для для табличных полей в формах (свойство "Данные" объекта ТабличноеПоле). Важной особенностью таких объектов является то, что они имеют возможность при просмотре информационной базы считывать данные «порциями», достаточными для отображения данных в табличном поле. Поэтому такие списки можно назвать списками динамического просмотра данных - каждая очередная порция данных отображает актуальное состояние списка объектов (записей регистра). Эта особенность дает возможность пользователю даже в случае больших списков данных работать относительно комфортно. При открытии формы со списком не возникает задержки, при переходе в конец списка нет необходимости считывания всех отображаемых в нем данных и т.д.

Механизм динамического просмотра данных

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

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

По умолчанию система использует такое упорядочивание, которое позволяет использовать механизм динамического просмотра данных. Упорядочивание по умолчанию для разных прикладных объектов системы приведено в таблице.
Справочник с иерархией, свойство "группы сверху" установлено - ЭтоГруппа + Код или ЭтоГруппа + Наименование в зависимости от основного представления объекта и наличия свойств Код и Наименование
Справочник без иерархии или свойство "группы сверху" не установлено - Код или Наименование в зависимости от основного представления объекта и наличия свойств Код и Наименование
Документ (журнал документов) - Дата
План видов характеристик - Код или наименование в зависимости от основного представления объекта
План счетов - Код или наименование в зависимости от основного представления объекта
План видов расчета - Код или Наименование в зависимости от основного представления объекта и наличия свойств Код и Наименование
План обмена - Код или наименование в зависимости от основного представления объекта
Регистр сведений периодический - Период
Регистр сведений непериодический - Список всех измерений, в той последовательности, в которой они сконфигурированы
Регистр накопления - Период
Регистр бухгалтерии - Период
Регистр расчета - ПериодРегистрации
Бизнес-процесс - Дата
Задача - Дата

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

Дополнительное упорядочивание


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

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

Справочники, Документы, Планы видов характеристик, Планы счетов, Планы видов расчета, Планы обмена, Бизнес-процессы, Задачи

К списку упорядочивания, если это необходимо, прибавляется упорядочивание по полю Ссылка.

Регистр сведений (периодический)

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

Регистр сведений (непериодический)

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

Регистр накопления, Регистр бухгалтерии, Регистр расчета

К списку упорядочивания прибавляется упорядочивание по ссылке на регистратор и номеру строки. Следует отметить, что система дополняет список упорядочивания именно упорядочиванием по ссылке на регистратор. Это не то же самое, что упорядочивание по полю Регистратор, которое может быть выбрано пользователем в окне "Отбор и сортировка". При выборе поля Регистратор пользователем (или при установке такого порядка разработчиком прикладного решения) результат будет совсем другой - будет выполнено упорядочивание по регистраторам в порядке их даты и, кроме того, такое упорядочивание не может быть эффективным (механизм динамического просмотра списков не будет задействован). Любое упорядочивание по полям не базовых типов приводит к неэффективности упорядочивания, что описано ниже.

Ограничения упорядочивания

Для любых прикладных объектов невозможно упорядочивание по следующим полям:
  • полям типа "Стока неограниченной дины";
  • полям типа "Хранилище значения";
  • полям составного типа (для которых задано более одного типа);
  • полям, для которых задан "набор типов".

"Набор типов" в приведенном выше списке - это:
  • типы, задающие ссылку на любой справочник, любой документ и т.д.;
  • тип ЛюбаяСсылка;
  • типы Характеристика.<Имя плана видов характеристик>.
При этом можно наблюдать следующее поведение. Если при конфигурировании в таблице задано поле с типом ПеречислениеСсылка (т.е. ссылка на любое перечисление), то упорядочивание по такому полю невозможно, пока в конфигурации нет ни одного перечисления. Если в конфигурации создать одно перечисление, то упорядочивание по такому полю будет доступно, так как, не смотря на то, что для поля задан "набор типов", он в текущем состоянии конфигурации представляет собой ссылку на конкретное (единственное) перечисление. Если в конфигурации создать еще одно перечисление, то упорядочивание по такому полю будет недоступно, так как "набор типов" в таком состоянии конфигурации представляет собой составной тип данных.

Если в качестве типа задан Характеристика.<Имя плана видов характеристик>, то упорядочивание по такому полю невозможно в не зависимости от состава типов, назначенного соответствующему плану видов характеристик.

Для ограничения интерактивного управления упорядочиванием, которое может выполнять конечный пользователь в диалоге "Отбор и сортировка", служит объект НастройкаПорядка (см. свойство НастройкаПорядка объекта ТабличноеПоле).

Оптимальные настройки упорядочивания

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

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

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

Справочник без иерархии, План видов характеристик без иерархии, План счетов, План видов расчета, План обмена

Оптимальными являются:
  • упорядочивание по полю Код;
  • упорядочивание по полю Наименование.

Если у объекта есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать", то оптимальными также являются:
  • упорядочивание по полю Реквизит1.

Важно, что в данном случае упорядочивание по полям Реквизит1 + Код или Реквизит1 + Наименование не является эффективным.

Если у объекта есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать с доп. упорядочиванием", то оптимальными также являются:
  • упорядочивание по полям Реквизит1 + Код или Реквизит1 + Наименованиев зависимости от основного представления объекта

Важно, что в данном случае упорядочивание только по полю Реквизит1 не является эффективным.

Справочник с иерархией групп и элементов (признак "Группы сверху" установлен), План видов характеристик с иерархией.

При отображении справочников и планов видов характеристик в режиме "Иерархический просмотр" оптимальными являются:
  • упорядочивание по полям ЭтоГруппа + Код;
  • упорядочивание по полям ЭтоГруппа + Наименование.

Если у объекта есть реквизит "Реквизит1" базового типа для которого свойство Индексирование установлено в значение "Индексировать", то оптимальными также являются:
  • упорядочивание по полям ЭтоГруппа + Реквизит1.
Если у объекта есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать с доп. упорядочиванием", то оптимальными также являются:
  • упорядочивание по полям ЭтоГруппа + Реквизит1 + Код или ЭтоГруппа + Реквизит1 + Наименование в зависимости от основного представления объекта

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

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

Документ

Оптимальными являются:
  • упорядочивание по полю Дата;
  • упорядочивание по полю Номер.

Если у документа есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать", то оптимальными также являются:
  • упорядочивание по полю Реквизит1.

Если у документа есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать с доп. упорядочиванием", то оптимальными также являются:
  • упорядочивание по полям Реквизит1 + Дата

Важно, что в этом случае упорядочивание только по полю Реквизит1 не является эффективным.

Журнал документов

Оптимальным является:
  • упорядочивание по полю Дата.

Если у журнала документов есть графа "Графа1" для которой свойство Индексирование установлено в значение "Индексировать", то оптимальными также является упорядочивание по графе Графа1.

Если у журнала документов есть графа "Графа1" для которой свойство Индексирование установлено в значение "Индексировать с доп. упорядочиванием", то оптимальными также является упорядочивание по полям Графа1 + Дата. Важно, что в этом случае упорядочивание только по полю Графа1 не является эффективным.

Регистр сведений

Для периодического регистра сведений, в независимости от того, подчинен он регистратору или нет, оптимальными являются следующие комбинации полей упорядочивания:
  • упорядочивание по полю Период;
  • упорядочивание по полям Период + <Список измерений>, где <Список измерений> - это список нескольких первых или всех измерений регистра в том порядке, в котором они сконфигурированы;
  • упорядочивание по полям <Список всех измерений> + Период.

Необходимо отметить, что в первых двух случаях из вышеперечисленных будет получено одно и то же упорядочивание Период + <Список всех измерений>. Это произойдет потому, что система дополнит упорядочивание, установленное пользователем или разработчиком прикладного решения, по описанным выше правилам.

Приведем пример.

Пусть есть регистр сведений с 2-мя измерениями базового типа Измерение1 и Измерение2. Тогда оптимальными будут следующие комбинации полей упорядочивания:
  • Период;
  • Период + Измерение1;
  • Период + Измерение1 + Измерение2;
  • Измерение1 + Измерение2 + Период;
  • Измерение1 + Измерение2.

Неоптимальными будут, например:
  • Период + Измерение2;
  • Измерение2;
  • Период + Измерение2 + Измерение1.

Если у регистра есть измерение, ресурс или реквизит для которого задано индексирование, то для такого поля (допустим с именем "Поле1") оптимальными также являются:
  • упорядочивание по полям Поле1 + Период;
  • упорядочивание по полям Поле1 + Период + <Список измерений>, где <Список измерений> - это список нескольких первых или всех измерений регистра в том порядке, в котором они сконфигурированы.

В обоих описанных случаях упорядочивание даст одинаковый результат, а упорядочивание по полям Поле1 + <Список измерений> не будет эффективным.

Для непериодического регистра сведений все приведенные соображения также имеют место с той лишь поправкой, что у него нет поля Период и таким образом список оптимальных способов упорядочивания сводится к следующему:
  • упорядочивание по полям <Список измерений>, где <Список измерений> - это список нескольких первых или всех измерений регистра в том порядке, в котором они сконфигурированы;
  • упорядочивание по полям Поле1 + <Список измерений>, где <Список измерений> - это список нескольких первых или всех измерений регистра в том порядке, в котором они сконфигурированы.
Регистр накопления, Регистр бухгалтерии

Оптимальным являются только:
  • упорядочивание по полю Период

Если у регистра есть измерение или реквизит для которого задано индексирование, то для такого поля (допустим с именем "Поле1") оптимальными также является:
  • упорядочивание по полям Поле1 + Период.

Регистр расчета

Оптимальными для регистра расчета будут следующие комбинации:
  • упорядочивание по полю ПериодРегистрации;
  • упорядочивание по полю ПериодДействия;
  • упорядочивание по полям ПериодРегистрации + <Список всех базовых измерений>, где <Список всех базовых измерений> - это список всех измерений, для которых выставлен признак "Базовое";
  • упорядочивание по полям ПериодДействия + <Список всех базовых измерений>;
  • упорядочивание по полям <Список всех базовых измерений> + ПериодДействия;
  • упорядочивание по полям <Список всех базовых измерений> + ПериодРегистрации.

Рассмотрим на примере.

Пусть имеется регистра расчета с измерениями Измерение1, Измерение2 и Измерение3 и при этом Измерение1 и Измерение3 являются "базовыми". Тогда оптимальными будут, например, следующие комбинации полей упорядочивания:
  • ПериодРегистрации + Измерение1 +Измерение3;
  • Измерение1 +Измерение3 + ПериодДействия.

А приведенные ниже комбинации оптимальными не будут:
  • ПериодДействия + Измерение3
  • ПериодДействия + Измерение1
  • ПериодДействия + Измерение 1 + Измерение2
  • ПериодДействия + Измерение 1 + Измерение2 + Измерение3

Для регистра расчета также могут индексироваться измерения и реквизиты и для таких полей также появляются дополнительные оптимальные комбинации полей упорядочивания:
  • упорядочивание по полям ПериодРегистрации + Поле1;
  • упорядочивание по полям Поле1 + ПериодРегистрации.

Важно то, что для всех регистров упорядочивание по полю Регистратор не может быть оптимальным на том общем основании, которое приведено выше. Более того, зачастую поле Регистратор для регистров имеет составной тип, который неявно задается при настройке движений документов (см. свойство "Движения"), что исключает любое упорядочивание по полю Регистратор.

Бизнес-процесс

Оптимальными являются:
  • упорядочивание по полю Дата;
  • упорядочивание по полю Номер;
  • упорядочивание по полю Завершен.

Если у бизнес-процесса есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать", то оптимальными также являются:
  • упорядочивание по полю Реквизит1.

Если у бизнес-процесса есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать с доп. упорядочиванием", то оптимальными также являются:
  • упорядочивание по полям Реквизит1 + Дата

Важно, что в этом случае упорядочивание только по полю Реквизит1 не является эффективным.

Задача

Оптимальными являются:
  • упорядочивание по полю Дата;
  • упорядочивание по полю Номер;
  • упорядочивание по полю Наименование;
  • упорядочивание по полю Выполнена.

Если у задачи есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать", то оптимальными также являются:
  • упорядочивание по полю Реквизит1.

Если у задачи есть реквизит "Реквизит1" для которого свойство Индексирование установлено в значение "Индексировать с доп. упорядочиванием", то оптимальными также являются:
  • упорядочивание по полям Реквизит1 + Дата

Важно, что в этом случае упорядочивание только по полю Реквизит1 не является эффективным.

Влияние условий отбора на эффективность работы списков

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

Рассмотрим пример.

Пусть у справочника есть Реквизит1 и Реквизит2, при этом Реквизит1 "индексирован с доп. упорядочиванием". Тогда упорядочивание по полям Реквизит1 + Реквизит2 + Наименование в общем случае не будет эффективным. Но если в отборе будет установлено условие на "равно" для Реквизит2, то такое упорядочивание будет эффективным.



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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 3:10
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!