#std768

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

1.

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

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

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

Исключение: когда текст запроса собирается программно.

Правильно

Полноценный запрос:

ВЫБРАТЬ
    НоменклатураПереопределяемый.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура КАК НоменклатураПереопределяемый

Неправильно

Запрос требует обязательной замены в коде, так как не содержит секции ИЗ:

ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Ссылка
1.2.

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

Правильно

ВЫБРАТЬ
    НоменклатураПереопределяемый.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура КАК НоменклатураПереопределяемый

Неправильно

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
1.3.

Установку текста запроса и основной таблицы при первичной инициализации динамического списка (в ПриСозданииНаСервере) выполняйте до любого обращения к настройкам списка (в том числе к параметрам).

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

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

Правильно

СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
СвойстваСписка.ОсновнаяТаблица = "Справочник.Номенклатура";
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список,
    СвойстваСписка);
Список.Параметры.УстановитьЗначениеПараметра("Параметр1", 42);

Неправильно

Список.ТекстЗапроса = ТекстЗапроса;
Список.Параметры.УстановитьЗначениеПараметра("Параметр1", 42);
Список.ОсновнаяТаблица = ОсновнаяТаблица;

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

2.

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

Этого можно добиться, например, так:

  • изменить текст запроса по умолчанию в коде конфигурации;
  • после изменения скопировать текст запроса в динамический список;
  • или наоборот: изменить в динамическом списке и скопировать в код конфигурации.
См. также
Проверки

#acc:482 #acc:483 #acc:484

Источник

https://its.1c.ru/db/v8std#content:768