helpf.pro
Регистрация
 +1 
Распечатать

1С 8.x : Поле выбора ~ Как отобрать значения выводящиеся в список выбора у элемента формы поле выбора?

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

Для этого нужно для события НачалоВыбора соответствующего поля ввода определить процедуру обработки и внутри процедуры программно устанавить отбор для списка.

Далее следует пример процедуры обработки события НачалоВыбора для поля ввода СтатьяПДР. Реквизит (и поле ввода, соответственно) СтатьяПДР имеет тип СправочникСсылка.ПрочиеДоходыИРасходы. Для списка справочника «Прочие доходы и расходы» устанавливается отбор по реквизиту «Вид прочих доходов и расходов» со значением «Прочие внереализационные доходы (расходы)».
Код 1C v 8.х
 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка)
ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент);
ЭлементОтбораВидПДР = ФормаВыбора.Отбор.ВидПрочихДоходовИРасходов;
Если ЭлементОтбораВидПДР <> Неопределено Тогда
ЭлементОтбораВидПДР.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбораВидПДР.Значение = Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы;
ЭлементОтбораВидПДР.Использование = Истина;
КонецЕсли;
ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ВидПрочихДоходовИРасходов.Доступность = Ложь;
ФормаВыбора.Открыть();
СтандартнаяОбработка = Ложь;
КонецПроцедуры


Обратите внимание на строку кода:
Код 1C v 8.х
 ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.ВидПрочихДоходовИРасходов.Доступность = Ложь;   


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

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

В следующем примере для поля ввода СчетДт типа ПланСчетовСсылка.Хозрасчетный устанавливается отбор в виде списка счетов. Список счетов предварительно формируется с помощью запроса.

Код 1C v 8.х
 Процедура СчетДтНачалоВыбора(Элемент, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Хозрасчетный.Ссылка
|ИЗ
| ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Родитель В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))
| И Хозрасчетный.ЗапретитьИспользоватьВПроводках = ЛОЖЬ";
СписокСчетов = Новый СписокЗначений;
СписокСчетов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));

ФормаВыбора = ПланыСчетов.Хозрасчетный.ПолучитьФормуВыбора(, Элемент);
ЭлементОтбораСсылка = ФормаВыбора.Отбор.Ссылка;
Если ЭлементОтбораСсылка <> Неопределено Тогда
ЭлементОтбораСсылка.ВидСравнения = ВидСравнения.ВСписке;
ЭлементОтбораСсылка.Значение = СписокСчетов;
ЭлементОтбораСсылка.Использование = Истина;
КонецЕсли;
ФормаВыбора.ЭлементыФормы.Список.НастройкаОтбора.Ссылка.Доступность = Ложь;
ФормаВыбора.Открыть();
СтандартнаяОбработка = Ложь;
КонецПроцедуры



Использование выбора из списка:
Выбор значения Перечисления обычно осуществляется из маленького списка. Но даже если включить выбор из формы (это делается с помощью свойства «Быстрый выбор» поля ввода), функционал отбора для перечислений все равно неприменим.

В таком случае подходящий способ ограничения списка выбора - использование метода формы ВыбратьИзСписка. Аналогично первому способу, необходимо определить процедуру обработки события НачалоВыбора для поля ввода значения. В следующем примере для поля ввода ВидПДР типа ПеречислениеСсылка.ВидыПрочихДоходовИРасходов программно устанавливается ограниченный список выбора.

Код 1C v 8.х
 Процедура ВидПДРНачалоВыбора(Элемент, СтандартнаяОбработка)
ВидыПДР = Новый СписокЗначений;
ВидыПДР.Добавить(Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы);
ВидыПДР.Добавить(Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеОперационныеДоходыРасходы);
ВыбранныйЭлемент = ВыбратьИзСписка(ВидыПДР, Элемент, ВидыПДР.НайтиПоЗначению(Элемент.Значение));
Если ВыбранныйЭлемент <> Неопределено Тогда
Элемент.Значение = ВыбранныйЭлемент.Значение;
КонецЕсли;
СтандартнаяОбработка = Ложь;
КонецПроцедуры


Результат работы процедуры показан на рисунке. Метод ВыбратьИзСписка открывает маленький список с набором значений, переданных в процедуру в первом параметре (в примере - список значений ВидыПДР).
Пример ограничения списка выбора для перечисления в 1С 8

Пример для других агрегатных типов:
Код 1C v 8.х
 Процедура СчетКтНачалоВыбора(Элемент, СтандартнаяОбработка)
СчетаКт = Новый СписокЗначений;
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.РасчетыПоТекущимОперациям);
СчетаКт.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеДоходы);
ВыбранныйЭлемент = ВыбратьИзСписка(СчетаКт, Элемент, СчетаКт.НайтиПоЗначению(Элемент.Значение));
Если ВыбранныйЭлемент <> Неопределено Тогда
Элемент.Значение = ВыбранныйЭлемент.Значение;
КонецЕсли;
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 36140
 +1 
Распечатать
Возможно, вас также заинтересует
Excel файл как Внешний источник данных 4
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID 21
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В
Быстрый перенос списка баз с одного компьютера на другой 0
Для 8.1 : 1. Список баз 8.1 можно сохранять в файл.Для этого правой кнопкой мыши по корневому элементу " Информационные базы " , далее " Сохранить ссылку в файл " . 2. Получаем файл с расширением v8i , это текстовый файл в...
В 1С не вводится новый элемент в справочник 0
Новый элемент или группу в справочник нельзя добавить если выключен режим иерархического списка. Для того, чтобы включить этот режим выберите в меню " Действия" пункт " Иерархический список" и установите этот режим.
Ввести перечисление, выбор перечисления 1
// В 8-ой версии нет такой фунции, но можно сделать так: ЗначПер=Перечисления.Важность.Средняя; //Установим перечисление предлагаемое выбрать по умолчанию Если ВвестиЗначение(ЗначПер,"Выберите важность:") тогда ...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.