Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 18:00

Отбор в УФ

Автор StriderSan, 08 мая 2018, 09:07

0 Пользователей и 1 гость просматривают эту тему.

StriderSan

Добрый день. Недавно начал работать на 1С, в процессе работы появился вопрос. Как сделать сложный отбор в УФ. У меня на форме есть 4 поля с количеством входов\выходов аппаратуры и 1 поле с выбором аппаратуры. При выборе\заполнении этих 4-х полей должен произойти отбор аппаратуры по количеству входов\выходов(как я понял, это должно происходить при АппаратураНачалоВыбора). Как это выполнить программно?
(УНФ)

Kerbert

Цитата: StriderSan от 08 мая 2018, 09:07
Добрый день. Недавно начал работать на 1С, в процессе работы появился вопрос. Как сделать сложный отбор в УФ. У меня на форме есть 4 поля с количеством входов\выходов аппаратуры и 1 поле с выбором аппаратуры. При выборе\заполнении этих 4-х полей должен произойти отбор аппаратуры по количеству входов\выходов(как я понял, это должно происходить при АппаратураНачалоВыбора). Как это выполнить программно?
(УНФ)
Скорее всего это должно происходить в обработке ПриИзменении() у 4-х полей с количеством входов\выходов. Там вам надо расписать условия при каких условиях, какая аппаратура.

StriderSan

(1), Проблема в том что этих аппаратур довольно много, 1000+, именно поэтому я хотел, как то привязать отбор к этим 4-м полям выбора, для "упрощения" отбора. Теперь уже сомневаюсь возможно ли это)

Kerbert

Цитата: StriderSan от 08 мая 2018, 11:09
(1), Проблема в том что этих аппаратур довольно много, 1000+, именно поэтому я хотел, как то привязать отбор к этим 4-м полям выбора, для "упрощения" отбора. Теперь уже сомневаюсь возможно ли это)
Есть ли регистр может какой, в котором есть эти соответствия.Или может стоит создать его.

StriderSan

Цитата: Kerbert от 08 мая 2018, 13:27
Есть ли регистр может какой, в котором есть эти соответствия.Или может стоит создать его.
Имеете в виду, что при отборе следует обращаться к данным регистра с вх\вых? Практично ли это в УФ?(опыта работы с регистрами нет)

buketov.av

Цитата: StriderSan от 10 мая 2018, 08:43
Цитата: Kerbert от 08 мая 2018, 13:27
Есть ли регистр может какой, в котором есть эти соответствия.Или может стоит создать его.
Имеете в виду, что при отборе следует обращаться к данным регистра с вх\вых? Практично ли это в УФ?(опыта работы с регистрами нет)

если есть регистр, то обращение к нему это всегда практичнее, чем перебирать кучу

StriderSan

Всем спасибо, попробую реализовать все через регистр.

wise

(0) ЗАЧЕМ "огород городить" из каких-то регистров..?

наложите отбор на список аппаратуры и ВСЁ - отображаются ТОЛЬКО нужные.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

StriderSan

Цитата: wise от 11 мая 2018, 13:21
(0) ЗАЧЕМ "огород городить" из каких-то регистров..?

наложите отбор на список аппаратуры и ВСЁ - отображаются ТОЛЬКО нужные.

    Мне нужен отбор именно по 4м входам\выходам которые вводятся в УФ, "обычный" отбор на аппаратуру в этом случае не выходит. Если возможен отбор по 4м полям ввода которые и создадут отбор, то куда "копать" в поисках решения?

wise

(8) отбор возможен ХОТЬ по 10-ти полям :-)

https://1c-programmer-blog.ru/programmirovanie/kak-otkryt-formu-s-otborom.html
Добавлено: 14 мая 2018, 10:58


(8)ПОСЛЕДНИЙ вариант ТВОЙ:

нФормаВыбора = ПолучитьФорму("Справочник.ТестСправочник.Форма.ФормаВыбора", , Элементы.тестОбъект);

эОтбор = нФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
эОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТестРеквизит");
эОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
эОтбор.ПравоеЗначение = "Тест2";
эОтбор.Использование = Истина;

эОтбор = нФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
эОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТестРеквизитНомер2");
эОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
эОтбор.ПравоеЗначение = "Тест24";
эОтбор.Использование = Истина;

эОтбор = нФормаВыбора.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
эОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТестРеквизитНомер3");
эОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
эОтбор.ПравоеЗначение = "Тест256";
эОтбор.Использование = Истина;

эОтбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

нФормаВыбора.Открыть();

и ву-а-ля... :-)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги: Отбор 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск