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

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

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

Предположим, что имеется регистр ЦеныТоваров . В форме списка этого регистра содержится динамический список с произвольным запросом:

ВЫБРАТЬ
РегистрСведенийЦеныТоваров.Период,
РегистрСведенийЦеныТоваров.Товар,
РегистрСведенийЦеныТоваров.Цена
ИЗ
РегистрСведений.ЦеныТоваров КАК РегистрСведенийЦеныТоваров
ГДЕ
РегистрСведенийЦеныТоваров.Товар = &Товар
И РегистрСведенийЦеныТоваров.Период >= &НачалоПериода
И РегистрСведенийЦеныТоваров.Период Товар , НачалоПериода и КонецПериода . Для нормального функционирования формы значения этих параметров должны быть заданы при открытии формы, иначе в результате открытия формы будет получена ошибка.

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

Вообще говоря, делать это не обязательно. Любые параметры, переданные в метод ОткрытьФорму() , будут доступны в обработчике события формы При создании на сервере . Но все же лучше создать их у формы в явном виде.

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

Итак, создадим у формы списка регистра сведений три параметра: НачалоПериода , КонецПериода (тип Дата ) и Товар (тип СправочникСсылка.Товары ).

Теперь в форме элемента справочника Товары создадим команду ЦеныВДекабре со следующим текстом:

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

Читайте также:  То светило солнце то шел дождь

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

&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )

Список . Параметры . УстановитьЗначениеПараметра ( "НачалоПериода" , Параметры . НачалоПериода ) ;
Список . Параметры . УстановитьЗначениеПараметра ( "КонецПериода" , Параметры . КонецПериода ) ;
Список . Параметры . УстановитьЗначениеПараметра ( "Товар" , Параметры . Товар ) ;

Передаём параметры в произвольный запрос динамического списка.

Имеем задачу: в форму списка справочника "Номенклатура" добавить остатки по складу "Основной".

Если форма списка справочника уже создан, то дорабатываем её. Если формы нет – создаём новую.

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

ВЫБРАТЬ
СправочникНоменклатура.Ссылка,
СправочникНоменклатура.ПометкаУдаления,
СправочникНоменклатура.Код,
СправочникНоменклатура.Наименование,
СправочникНоменклатура.Услуга,
СправочникНоменклатура.Предопределенный,
СправочникНоменклатура.ИмяПредопределенныхДанных,
ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК Остаток
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&Склад, ) КАК ОстаткиНоменклатурыОстатки
ПО (ОстаткиНоменклатурыОстатки.Номенклатура = СправочникНоменклатура.Ссылка)

В виртуальной таблице регистра накопления "ОстаткиНоменклатуры" мы задали параметр &Склад. На вкладке конструктора формы "Параметры" создаём параметр "Склад" с типом "СправочникСсылка.Склады".

Теперь нам нужно как-то установить этот параметр. Делается это в модуле формы, в процедуре "ПриСозданииНаСервере".

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

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

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

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

Читайте также:  Установка gta 5 на ps3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Что нужно сделать чтобы ручка писала

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

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

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

Оцените статью
Добавить комментарий

Adblock detector