Содержание
Одна из задач, возникающих при открытии формы, может заключаться в том, что динамический список в открываемой форме содержит произвольный запрос с параметрами. И при открытии такой формы нужно передавать в этот список конкретные значения параметров.
Эта задача решается с помощью создания дополнительных параметров формы, передачи в них необходимых значений и установки их в параметры запроса в обработчике события формы При создании на сервере .
Предположим, что имеется регистр ЦеныТоваров . В форме списка этого регистра содержится динамический список с произвольным запросом:
ВЫБРАТЬ
РегистрСведенийЦеныТоваров.Период,
РегистрСведенийЦеныТоваров.Товар,
РегистрСведенийЦеныТоваров.Цена
ИЗ
РегистрСведений.ЦеныТоваров КАК РегистрСведенийЦеныТоваров
ГДЕ
РегистрСведенийЦеныТоваров.Товар = &Товар
И РегистрСведенийЦеныТоваров.Период >= &НачалоПериода
И РегистрСведенийЦеныТоваров.Период Товар , НачалоПериода и КонецПериода . Для нормального функционирования формы значения этих параметров должны быть заданы при открытии формы, иначе в результате открытия формы будет получена ошибка.
Чтобы передать собственные параметры в форму, желательно создать их в редакторе формы.
Вообще говоря, делать это не обязательно. Любые параметры, переданные в метод ОткрытьФорму() , будут доступны в обработчике события формы При создании на сервере . Но все же лучше создать их у формы в явном виде.
Тогда, во-первых, в модуле формы не придется проверять, существуют такие параметры или нет. А во-вторых, явное создание параметров формы облегчает поддержку прикладного решения теми разработчиками, которые не участвовали в его создании.
Итак, создадим у формы списка регистра сведений три параметра: НачалоПериода , КонецПериода (тип Дата ) и Товар (тип СправочникСсылка.Товары ).
Теперь в форме элемента справочника Товары создадим команду ЦеныВДекабре со следующим текстом:
Этой командой мы открываем форму списка регистра сведений и передаем ей значения трех параметров.
В самой форме регистра сведений, в обработчике события формы При создании на сервере , установим переданные значения в качестве параметров произвольного запроса динамического списка следующим образом:
&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Список . Параметры . УстановитьЗначениеПараметра ( "НачалоПериода" , Параметры . НачалоПериода ) ;
Список . Параметры . УстановитьЗначениеПараметра ( "КонецПериода" , Параметры . КонецПериода ) ;
Список . Параметры . УстановитьЗначениеПараметра ( "Товар" , Параметры . Товар ) ;
Наконец-то осуществилась мечта любого «семерошника». Как часто пользователи программы 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. Мы работаем в Москве и области.
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента
Для вывода используется используется запрос:
Чтобы при открытии не отображалась информацию по другим клиентам, необходимо установить параметр динамического списка, сделаем это так:
Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных
Похожие FAQ
Еще в этой же категории
Как на управляемой форме разместить список регистра сведений с отбором? 15
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как обновить динамический список или реквизит на форме клиента? 7
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Форма
Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Форма