1с обычные формы отбор в форме выбора

Отбор в форме списка выбора

либо есть еще такой вариант, он весь делается только на форме, где расположен реквизит:

а критично сделать все именно в форме, где располагается реквизит?

если нет, то в конфе на УФ можно сделать примерно так:

а в форме выбора соответственно пишем:

примерное содержимое процедуры ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка:

либо есть еще такой вариант, он весь делается только на форме, где расположен реквизит:

(12) ох. 17 год. Нужно как-то так

ОткрытьФорму («ИмяФормы», Новый Структура(«Отбор»,Новый Структура(«Контрагент», МассивКонтрагентов)));

Спасибо! Работает на 1С ERP Управление предприятием 2.4, 1С:Предприятие 8.3 (8.3.12.1685)

&НаКлиенте
Процедура ОперацияБракНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

НовыйПараметр = Новый ПараметрВыбора(«Отбор.Ссылка», СписокОпераций());
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НовыйПараметр);
НовыеПараметры = Новый ФиксированныйМассив(НовыйМассив);
Элементы.ОперацияБрак.ПараметрыВыбора = НовыеПараметры;

Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ПроизводственнаяОперация2_2.Ссылка КАК ПроизводственнаяОперация
|ИЗ
| Документ.ПроизводственнаяОперация2_2 КАК ПроизводственнаяОперация2_2
|ГДЕ
| ПроизводственнаяОперация2_2.Номер ПОДОБНО &НомерВырезать»;
Запрос.УстановитьПараметр(«НомерВырезать», «%»+НомерВырезать+»%»);

Источник

Для того чтобы открыть форму выбора с отбором в 1с 8.2 (обычные формы), нам нужно выполнить некоторые действия. Сначала мы ее получим. После этого выставим отбор и программно откроем, вот пример кода:

forma vybora s sotborom 8 2

Отбор на форме в поле ввода 1С 8.2 с несколькими значениями

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

forma vybora s sotborom 8 2 1

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

Установка отбора в поле ввода на форме в 1С 8.3, событие НачалоВыбора

forma vybora s otborom 8 3

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

У нас вы можете заказать услуги сопровождения 1с баз данных, а также любые доработки для 1с.

Источник

Как открыть форму списка с некоторым отбором?

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

ЗначениеОтбора = Новый Структура(«Номер», «333»);
ПараметрыВыбора = Новый Структура(«Отбор», ЗначениеОтбора);

2. Можно открыть форму списка без параметров:

И затем, в обработчике события формы списка приходных накладных ПриСозданииНаСервере написать код, который создает отбор в динамическом списке, являющемся основным реквизитом формы:

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

ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Номер»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = «000000001»;

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

1

Обработчик выполнения этой команды заполним следующим образом:

ФормаСписка = ПолучитьФорму(«Документ.ПриходнаяНакладная.ФормаСписка»);
ФормаСписка.ФильтрПоТовару = Элементы.Список.ТекущаяСтрока;
ФормаСписка.Открыть();

В этом обработчике мы получаем форму списка приходных накладных и передаем в параметр формы ФильтрПоТовару ссылку на текущий элемент в списке номенклатуры и открываем форму с этим параметром.

2

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

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

Демонстрационный пример для 3-го варианта находится в каталоге 1CITS/EXE/FAQ/ОткрытьФормуСОтбором.dt. Пример выполнен на версии платформы 8.2.9.356.

Источник

Отбор в обычной форме на основе СКД в 1С

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

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

0

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

Рассмотрим, как это можно сделать при помощи СКД. Создадим в нашей обработке Макет с типом Схема компоновки данных и заполним его нашим запросом:

1

На вкладке Настройки добавим новую группировку без детализации и, в нашем примере, поле Контрагент, так как в итоге мы получим все в таблицу значений:

2

И на вкладке Отбор добавим в отбор Контрагента:

3

Далее в самой обработке создадим реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных:

4

Теперь займемся оформлением формы. Выведем на форму самой обработки Отбор, с которым будет работать пользователь. На форму выведем элемент типа Табличное поле и дадим ему имя Отбор с типом данных Компоновщик.Настройки.Отбор:

5

Далее ниже выведем эелемент Табличное поле с именем Результат и типом ТаблицаЗначений и кнопку Выполнить, по которой и будем выводить таблицу с контрагентами:

6

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

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

8

На этом все, надеюсь, данная статья поможет Вам улучшить гибкость отборов в Ваших обработках.

Источник

Быстрый отбор в форме списка (выбора) справочника

Установка быстрых отборов в форме списка (выбора) справочника (для новичков)

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

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

В списках отбор может быть установлен вручную пользователем стандартным способом через контекстное меню списка «Установить отбор и сортировку списка»

18 07 2011%201

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

1) Рассмотрим установку такого отбора на примере списка справочника Номенклатура.

Открываем в конфигураторе форму списка справочника Номенклатура.

Уменьшим высоту табличного поля «Список».

На освободившееся место над табличным полем разместим 5 элементов:

со следующими именами:

2) фНомер – Булево

3) отбНомер – Строка(20)

4) фНаименование – Булево

5) отбНаименование – Строка(150)

Результат будет выглядеть примерно так:

18 07 2011%202

Сверим список реквизитов формы на закладке «Реквизиты», наши новые обведены красным:

18 07 2011%203

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

18 07 2011%204

И в созданную заготовку процедуры вписываем нужный код:

18 07 2011%205

Вот код этих четырех обработчиков:

// при изменении флажка фНомер
Процедура фНомерПриИзменении ( Элемент )
// если не заполнен Номер для отбора не будем понапрасну дергать Отбор
Если ЗначениеЗаполнено ( отбНомер ) Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры

// при изменении поля ввода отбНомер
Процедура отбНомерПриИзменении ( Элемент )
// если не установлен флажок не будем понапрасну дергать Отбор
Если фНомер Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры

Процедура фНаименованиеПриИзменении ( Элемент )
// если не заполнено Наименование для отбора не будем понапрасну дергать Отбор
Если ЗначениеЗаполнено ( отбНаименование ) Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры

Процедура отбНаименованиеПриИзменении ( Элемент )
// если не установлен флажок не будем понапрасну дергать Отбор
Если фНаименование Тогда
УстановитьОтборыФормы ();
КонецЕсли;
КонецПроцедуры

На двух наших полях ввода включим свойство «КнопкаОчистки».
При очистке поля ввода мы будем сбрасывать соответсвующий флажок и перечитывать отбор:

// при очистке поля ввода отбНомер
Процедура отбНомерОчистка ( Элемент , СтандартнаяОбработка )
фНомер = Ложь;
УстановитьОтборыФормы ();
КонецПроцедуры

// при очистке поля ввода отбНаименование
Процедура отбНаименованиеОчистка ( Элемент , СтандартнаяОбработка )
фНаименование = Ложь;
УстановитьОтборыФормы ();
КонецПроцедуры

Теперь пишем процедуру установки отбора:

Процедура УстановитьОтборыФормы ()

// запомним состояние иерархии
мИерархическийПросмотр = ЭлементыФормы.Список.ИерархическийПросмотр;

Если ( фНомер И НЕ ПустаяСтрока ( отбНомер ))
или ( фНаименование И ЗначениеЗаполнено ( отбНаименование ))
Тогда

// получаем запросом список с установленными критериями отбора
сз = ВернутьСписок ();

А теперь пишем функцию, выбирающую запросом ссылки по введенным пользователем критериям и возвращающую как результат список отобранных ссылок:

Функция ВернутьСписок ()

Запрос = Новый Запрос ;

Вот результат отбора по двум критериям:

18 07 2011%206

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

18 07 2011%207

2) Рассмотрим более сложный пример со справочником «Основные средства».

Размещаем над списком 7 элементов:

18 07 2011%208

Где 1 – это просто метка, а остальные реквизиты имеют следующие типы:

18 07 2011%209

Добавим в модуль списка новую процедуру ЭлементОтбораПриИзменении и впишем в нее следующий код:

Процедура ЭлементОтбораПриИзменении ( Элемент )
УстановитьОтборыФормы ();
КонецПроцедуры

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

18 07 2011%2010

Пишем процедуру установки снятия отбора:

Если ( флПоИнвНомеру и НЕ ПустаяСтрока ( отбИнвНомер ))
или ( флПоПодразделению и ЗначениеЗаполнено ( отбПодразделение ))
или ( флПоМОЛ и ЗначениеЗаполнено ( отбМОЛ ))Тогда

И пишем еще одну процедурку получения списка ссылок запросом.

Здесь мы будем получать последние сведения по ОС из регистров сведений:

— Инвентарный Номер из РС ПервоначальныеСведения

— Подразделение и МОЛ из РС МестонахождениеОС.

Запрос = Новый Запрос ;

Если флПоИнвНомеру и НЕ ( флПоПодразделению или флПоМОЛ ) Тогда

Если флПоПодразделению И ЗначениеЗаполнено ( отбПодразделение ) Тогда
аргУсловие = «МестонахождениеОССрезПоследних.Местонахождение = &пПодразделение»
КонецЕсли;

Если НЕ флПоИнвНомеру Тогда

Теперь добавляем в список две новых колонки МОЛ и Местонахождение без привязки к данным

Установим их свойства «Видимость» в Ложь, чтобы они не светились в списке сразу. Их заполение мы будем обрабатывать в событии ПриПолученииДанных (см. ниже)

В свойстве ЭлементУправления обоим назначаем «Поле ввода»

18 07 2011%2011

В обработчик ПриПолученииДанных добавляем код для отображения значений наших добавленных колонок:

Открываем список ОС, устанавливаем видимость наших новых колонок МОЛ и Местонахождение, вводим критерии отбора и вуаля:

18 07 2011%2012

P . S .

Недостаток рассмотренного подхода в том, что если ранее был каким-либо образом установлен отбор по ссылке, то он будет затерт нашим.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с обычные формы объединить колонки
  • 1с обычные формы не сохраняются привязки