Параметры динамического списка 1с

Обновлено: 08.07.2024

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


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


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

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

Разместил: E_Migachev  Версии: | 8.2 УП | 8.3 |  Дата: 23.02.2015   Прочитано: 89667

Распечатать

Похожие FAQ

Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe  1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Google maps : вывод точек на карту и режим панорамы  7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Ввод по строке - поиск по первым символам или в любом месте наименования  6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Восстановление пароля с версии 8.3.17  0
Бывают случаи когда нужно восстановить доступ к 1С, но пароль утерян или прошлый программист уволился и прочее. Доступные методы в интернете не работают с версии 8.3.17, а некоторые методы полностью вычищают список пользователей. Данный метод позвол Вывод в поле Наименование справочника Штатное список значений из справочника Подразделения?  0
Есть два справочника Штатное и Подразделения. В справочнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы в поле Наименование справочника Штатное выводились списком значений из поля Наименование справочн Посмотреть все результаты поиска похожих

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

Как обновить динамический список или реквизит на форме клиента?  19
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Список НЕ модальных методов в 1С  4
Найдено в интернете но говорят что с диска ИТС. Табличная часть

отбор в динамическом списке программно  2
Для установки отбора в динамическом списке используется свойство Отбор. Добавление нового элемента отбора осуществляется следующим образом: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Для того чтобы новый Посмотреть все в категории Работа с Формой (Диалог) и её элементами

https://awards.infostart.ru/img/3.jpg

Добрый день, Коллеги!

//+++ Обновление публикации от 31.08.2020 г.

//--- Обновление публикации от 31.08.2020 г.

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

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

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

Пример использования (простой):



Пример использования (сложный):

Демонстрация работы показана на 1С:Комплексная автоматизация 2 (УТ11, ERP), но так же будет работать и в режиме мистической совместимости 8.2.13 (1С:Комплексная автоматизация 1.1), так как именно для старой доброй 1.1 и делалось и используется. Для простоты восприятия пример использования представлен на видео (без озвучки правда), сама обработка прилагается к публикации.

Как видно, в обработке программно (динамически) формируется динамический список на форме в зависимости от смены имени метаданных документа. Если углубиться, то динамически формируется в обработке также и список будущих колонок по наличию реквизитов у документа, а также сама выборка - текст запроса. Ниже демонстрирую, для чего всё это было, упрощение будущего сопровождения при расширение списка документов:

Пример из практики - история разработки этой процедуры

Есть некая разработка регистрации первичных документов. Управление производится через АРМы. Если в начале жизни разработки, АРМ был рассчитан всего на три документа, то мне было несложно разместить все элементы и описать логику их работы. Но время идёт и хотелки растут, вот уже документов стало пять. А потом попросили ещё пять добавить. И я чувствую, это их (бухгалтерию) не остановит. Тут я и понял, что дальнейшее сопровождение АРМа просто мучительно для меня. Переосмысление привело к разработке с нуля, не помню, кто сказал, но перефразирую: "Когда ты чувствуешь что обрастаешь г. внокодом - остановись и начни с нуля". Так и сделал.

Благодаря новой логике, дальнейшее расширение АРМа количеством документов делается просто - добавляются необходимые значения в перечисление ТипДокумента и без кодинга уже будет работать АРМ.

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


А теперь о неприятном!

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


Казалось бы, почему бы не обратиться просто. Элементы[ИмяЭлемента]КоманднаяПанель.Автозаполнение = ЛОЖЬ , но нет такого свойства. Поэтому пришлось применять хитрости (костыли).

Вопрос с командной панелью решил в процедуре публикации следующим образом:

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

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

3. Добавляется создаваемый программно элемент таблица формы (динамический список).

4. У таблицы формы отключается вывод командной панели.

Вопрос по отключению "Автозаполнения" в контекстном меню - решения не нашел. Подозреваю, что это невозможно технически.

Анна Викулина

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

  • Установка отбора в пользовательском режиме
  • Установка отбора в конфигураторе
    • Фиксированный отбор
    • Динамический (программный) отбор

    Установка отбора в пользовательском режиме

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

    Для установки отбора в режиме предприятия необходимо вызвать команду «Настроить список».

    На вкладке «отбор» представлен список полей, который есть в текущем списке. Выбираем поля списка, по которым будем фильтровать. Сделать это можно двойным кликом или используя drag and drop.

    Задаем вид сравнения и значение, жмем «Завершить редактирование», отбор установлен.

    Отбор также можно группировать по логическим условиям «И», «ИЛИ».

    Рис.4 Отбор также можно группировать по логическим условиям «И», «ИЛИ»

    Рис.4 Отбор также можно группировать по логическим условиям «И», «ИЛИ»

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

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

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

    Установка отбора в конфигураторе

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

    Фиксированный отбор

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

    Отбор задается так же, как в пользовательском режиме.

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

    Динамический (программный) отбор

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

    Методы

    Если в разрабатываемой конфигурации присутствует подсистема БСП «БазоваяФункциональность», программный отбор в динамическом списке можно установить используя типовой метод:

    Сигнатура данного метода:

    ДинамическийСписок Тип: ДинамическийСписок – Список, в котором требуется установить отбор.

    ИмяПоля Тип: Строка – Поле, по которому необходимо установить отбор.

    ПравоеЗначение Тип: Произвольный – Значение отбора (Необязательный. Значение по умолчанию: Неопределено. Внимание! Если передать Неопределено, то значение не будет изменено).

    ВидСравнения Тип: ВидСравненияКомпоновкиДанных – Условие отбора.

    Представление Тип: Строка – Представление элемента компоновки данных (Необязательный. Значение по умолчанию: Неопределено. Если указано, то выводится только флажок использования с указанным представлением (значение не выводится). Для очистки, чтобы значение снова выводилось, следует передать пустую строку).

    Использование Тип: Булево – Флажок использования этого отбора (Необязательный. Значение по умолчанию: Неопределено).

    РежимОтображения Тип: РежимОтображенияЭлементаНастройкиКомпоновкиДанных – Способ отображения этого отбора пользователю. Возможные значения:

    • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ – В группе быстрых настроек над списком.
    • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный – В настройка списка (в подменю Еще).
    • РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный – Запретить пользователю менять этот отбор.

    ИдентификаторПользовательскойНастройки Тип: Строка – Уникальный идентификатор этого отбора (Используется для связи с пользовательскими настройками).

    Для удаления какого-то значения отбора необходимо воспользоваться типовым методом:

    Сигнатура данного метода:

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

    ИмяПоля Тип: Строка – имя поля компоновки (не используется для групп).

    Представление Тип: Строка – представление поля компоновки.

    В случае отсутствие в системе БСП отбор можно установить самостоятельно, используя объект ПолеКомпоновкиДанных.

    Данный отбор отберет строки, в которых значение «ФИО» = «Иванов».

    Для использования логических «И», «ИЛИ», «НЕ» предназначен тип данных ГруппаЭлементовОтбораКомпоновкиДанных

    Данный отбор отберет строки, в которых значение «ФИО» = «Иванов» или «Петров».

    Отбор в динамическом списке также можно производить через изменение текста запроса динамического списка. Этот вариант работает, когда динамический список сделан через «произвольный запрос».

    Для этого к тексту запроса добавляем условие «ГДЕ Истина»…

    Как видно, такой подход более компактный с точки зрения написания кода. Чем сложнее условия отбора в табличной части мы хотим установить, тем более громоздким будет вариант с использованием отбора через ЭлементОтбораКомпоновкиДанных. Однако у примера с изменением текста запроса есть свои недостатки – эта реализация не устойчива к изменениям кода. Например, вы сделали такую реализацию и забыли, но если в будущем вы захотите модифицировать текст запроса, добавив в него какой-либо оператор после ГДЕ (УПОРЯДОЧИТЬ, СГРУППИРОВАТЬ), вам нужно не забыть про то, что в программном коде есть:

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

    ГДЕ (НЕ &ОтборУстановлен ИЛИ СправочникПользователи.ФИО В (&РазрешенныеФИО))

    Тут ФИО – массив.

    Ка видно, 2 строчки кода против 10. Какой из способов выбрать, зависит от конкретной прикладной задачи.


    Рассмотрим работу с динамическими списками на примере конфигурации 1С.Управление торговлей. Для примера разберем динамический список для справочника «Контрагенты».

    Запустим 1С в режиме «Конфигуратор».

    Динамические списки в 1С

    В конфигурации найдем справочник «Контрагенты».

    Динамические списки в 1С

    Откроем форму «Форма Списка».

    Динамические списки в 1С

    Рассмотрим форму списка справочника. Реквизит «Список» имеет тип «ДинамическийСписок».

    Динамические списки в 1С

    Двойным щелчком откроем свойства реквизита.

    Динамические списки в 1С

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

    Динамические списки в 1С

    Нажмем теперь «Открыть» у свойства «Настройка списка».

    Динамические списки в 1С

    Перед нами открывается окно настройки запроса динамического списка. Первая вкладка «Запрос».

    Мы можем ка написать запрос вручную в поле «Запрос», так и воспользоваться кнопкой «Конструктор запросов».

    Динамические списки в 1С

    На данной вкладке так же стоит обратить внимание на флаги «Динамическое считывание данных» и «Автозаполнение доступных полей».

    Динамические списки в 1С

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

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

    Вторая вкладка «Настройки».

    Динамические списки в 1С

    На данной вкладке мы можем установить некоторые отборы. Стоит обратить внимание на флаг «Включать в пользовательские настройки».

    Динамические списки в 1С

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

    Так же на вкладке «Настройки» мы можем задавать «Порядок», «Группировки» и «Условное оформление.

    Динамические списки в 1С

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

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

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

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

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

    Читайте также: