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

личный блог

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

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

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

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

Guesto notes

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

Задача

Считаем, что есть типовая форма списка номенклатуры с динамическим списком. На форму необходимо добавить страницы: на первой выводить типовой список, а на второй список номенклатуры и данные РС «Данные для обработки». На текущий момент форма выглядит так:

Решение

План работ следующий:

  1. Создать страницы на форме;
  2. Переместить типовой динамический список на нужную страницу;
  3. Создать динамический список и вывести его на нужную страницу.

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

Создание страниц

Собственно создадим группу с видом «Страницы», и в нее добавим две группы с видом «Страница»

Программное формирование реквизитов и элементов формы можно в статье 1С. Программное добавление и удаление реквизитов формы

Перемещение элементов формы

Для перемещения типового динамического списка воспользуемся методом коллекции элементов формы Переместить()

Программное создание динамического списка

Добавляем реквизит формы с типом Динамический список и определяем основные свойства.

Теперь создадим элементы формы относящиеся к динамическому списку

Небольшая хитрость

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

Результат

Теперь проверяем, что у нас получилось. Первая страница, на которую мы перенесли типовой список

Вторая страница с нашим сформированным списком

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

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

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

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

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

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

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

Получите 267 видеоуроков по 1С бесплатно:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: