динамический список в обычных формах 1с

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

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

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

Источник

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

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

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

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

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

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

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

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

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

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

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

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

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

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

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

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

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

Источник

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

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

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

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

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С на примере справочника «Контрагенты»

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

Обновим 1С с гарантией сохранности базы

динамический список в обычных формах 1с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

Поможем с 1С 24/7, без выходных

динамический список в обычных формах 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с. динамический список в обычных формах 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с. динамический список в обычных формах 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с. динамический список в обычных формах 1с фото. картинка динамический список в обычных формах 1с. смотреть фото динамический список в обычных формах 1с. смотреть картинку динамический список в обычных формах 1с.

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

Как оптимизировать работу с программой?

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

Вы еще не внедрили 1С или необходимо установить программу в новый филиал компании? Обратитесь за внедрением и настройкой к нам — вы сэкономите свое время и избежите возможных ошибок и проблем в дальнейшем.

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

Источник

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

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