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

Как установить параметр динамического списка?

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

edf59b0d609ed2b39d0e5a7ec8dee3c7

Для вывода используется используется запрос:

0af868191f61fcf5feb352e62af8dd50

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

Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных

print

Похожие FAQ

Еще в этой же категории

Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора

Как ограничить список выбора? 8
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Источник

Работа с динамическим списком в 1С 8.3 (8.2)

Наконец-то осуществилась мечта любого «семерошника». Как часто пользователи программы 7.7 просили сделать нормальный подбор номенклатуры. Чтобы и остатки можно было видеть, и цены, и установить фильтры. Приходилось придумывать разные хитрости, вплоть до написания внешних компонентов. В 1С 8.2 появились динамические списки. Предлагаю рассмотреть, что это такое и что они нам могут дать в 1С 8.3.

Создание формы выбора

За основу возьмем некую тестовую конфигурацию 1С:»Бухгалтерия предприятия 3.0″. Не будем сейчас делать подбор, просто в справочнике «Номенклатура» добавим еще одну форму выбора и сделаем ее временно основной:

sozdanie novogo dinamicheskrnr spiska 1s 8.3

При создании система по умолчанию добавит на форму табличное поле с типом «Динамический список».

Зайдем в его свойства и посмотрим, что там.

В первую очередь нас интересует флажок «Произвольный запрос». Он-то и откроет нам все преимущества динамического списка. У нас появится возможность написать собственный запрос, причем с параметрами. Устанавливаем флажок и нажимаем ссылку «Открыть»:

nastroyki dinamicheskogo spiska

Откроется окно с уже готовым кодом на языке запросов. Пока что там просто перечислены все поля справочника «Номенклатура».

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

Собственный запрос в динамическом списке

Сначала создадим нужный нам запрос с остатками и ценами. Примерно так:

zapros v dinamicheskom spiske 1s 8.3

Закладка «Настройки»

И вот теперь самое вкусное! Переходим на закладку «Настройки». И сразу видим, что на первой вкладке мы можем делать любые отборы по любому полю в запросе:

nastroyka dinamicheskogo spiska 1s 8.3

Программная установка параметров запроса в динамическом списке 1С 8.3

Не забываем, что в запросе у нас присутствуют два параметра: «Период» и «Тип цен». Мы должны передать их в запрос, иначе будет ошибка.

Пропишем эти параметры в параметрах формы, а в модуле формы добавим следующие строки:

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

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

Также на форму можно добавить флажок «Запрашивать количество».

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

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

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

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

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

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. Осуществлять вывод данных не в динамический список, а в таблицу или дерево значений.

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

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

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

Источник

Запросы в динамическом списке. Настройки списка в 1С

166327bb5fea3744c4a0541088a576ac

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

859b43d7e582094a33387cb6d7f48aae

С помощью команды «Конструктор запроса 1С» можно получить доступ к редактору текста запроса.

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

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

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

Рекомендации к запросам в динамических списках

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

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

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

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

Вместе с тем для эффективного использования запросов стоит ознакомиться с требованиями по разработке оптимальных запросов.

Источник

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

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

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

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

image001

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

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

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

scheme1

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

scheme2

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

Источник

Моя дача
Adblock
detector