Открыть форму выбора справочника с отбором

1. user1226763 19.12.19 09:50 Сейчас в теме
Добрый день. Форма управляемая 8.3. Есть справочник, в нем на форме заполняется список данных с другого справочника(панель антибиотиков). Нужно в другом справочнике открывать этот список(панель антибиотиков) по реквизиту, картинка 2, при нажатии на кнопку. Подскажите как нужно сделать отбор или каким другим способом. Не совсем понимаю как открыть "страницу" из формы справочника. Сейчас открывается весь список Панель антибиотиков по форме выбора этого справочника (надеюсь понятно объяснила)
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. user5300 1020 19.12.19 11:15 Сейчас в теме
(1)
ПармаетрыОтбора = новый Структура("Микроорганизмы",Справочник.Микроорганизмы.НайтиПоКоду("01")); ///Для примера
ПараметрыФормы = Новый структрура("Отбор",ПараметрыОтбора);
ОткрытьФорму("Справочник.ПанельАнтибиотиков.ФормаВыбора",ПараметрыФормы );
9. user1226763 19.12.19 11:27 Сейчас в теме
не получается у меня через две структуры
13. user5300 1020 19.12.19 12:27 Сейчас в теме
(8)
(11) я же вам написал процедуру открытие формы выбора с отбором )
14. user1226763 19.12.19 12:32 Сейчас в теме
(13) открывает только с одним значением, а у меня список
15. user5300 1020 19.12.19 13:01 Сейчас в теме
(14) можно еще вместо формы выбора - выбрать из списка значений т.е.
Процедура ПодборНажатие()
    СписокАнтибиотиков = СписокАнтибиотиков(Элементы.Микроорганизм.ТекущиеДанные.Микроорганизм);

    Если СписокАнтибиотиков.ОтметитьЭлементы("Выберите Микроорганизмы ") Тогда
        Для Каждого Антибиотик Из СписокАнтибиотиковЦикл
            Если Антибиотик .Пометка Тогда
                Сообщить(Антибиотик.Значение);
                ///ИЛИ добавляете выбранные элементы в вашу таблицу
                ///м = Микроорганизмы.Добавить();
                ///м. Антибиотик = Антибиотик.Значение;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Функция СписокАнтибиотиков(Микроорганизм)
   СписокАнтибиотиков = новый СписокЗначений;
   Запрос = новый Запрос("Выбрать * из Справочник.Антибиотики как Антибиотики ГДЕ Антибиотики.Микроорганизм = &Микроорганизм");
    Запрос.УстановитьПараметр("Микроорганизм",Микроорганизм);
    СписокАнтибиотиков.ЗагрузитьЗначения(Запрос.выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка)");
    возврат СписокАнтибиотиков;
Конецфункции


Показать
2. mrChOP93 96 19.12.19 10:37 Сейчас в теме
Я так понял, что надо установить отбор по определенному значению в форме выбора справочника? связи параметров выбора попробуй.
3. user1226763 19.12.19 10:40 Сейчас в теме
(2) да. я может не совсем правильно делаю, вот часть кода
получаю массив и не совсем понимаю как его со структурой связать...
ЗначениеОтбора = Новый Структура("Микроорганизмы", ТекущийОрганизм);
		
		МассивАнтибиотиков = Новый Массив;
		МассивАнтибиотиков = ЗначениеОтбора.Микроорганизмы.ПанельАнтибиотиков.Выгрузить().ВыгрузитьКолонку("ПанелиАнтибиотиков");
4. mrChOP93 96 19.12.19 10:45 Сейчас в теме
(3)

ЗначениеОтбора = Новый Структура("Микроорганизмы", ЗначениеОтбора.Микроорганизмы.ПанельАнтибиотиков.Выгрузить().ВыгрузитьКолонку("ПанелиАнтибиотиков"));

Это имеешь ввиду?
5. user1226763 19.12.19 10:58 Сейчас в теме
(4) я выгружаю и получаю массив, а потом хочу по этим данным открывать список или я не права?
7. mrChOP93 96 19.12.19 11:11 Сейчас в теме
(5)
Можно и так. Тогда в событии элемента формы "НачалоВыбора", ставите СтандартнаяОбработка = Ложь, открываете форму выбора справочника с передачей туда вашего массива и установкой владельцем формы текущую форму. А в самой форме выбора уже прописываете в ПриСозданииНаСервере нужный отбор.
Как то так
10. mrChOP93 96 19.12.19 11:52 Сейчас в теме
(5)

Форма элемента

&НаКлиенте
Процедура ФизЛицоБлагополучательДинамичНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;

	ОткрытьФормуВыбораФизЛицБлагополучатели(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьФормуВыбораФизЛицБлагополучатели(Элемент)
	
	СтруктураПараметров = Новый Структура("ОтборПоРодителю", Объект.ФизЛицо);
	ОткрытьФорму("Справочник.ФизическиеЛица.ФормаВыбора",СтруктураПараметров,Элемент);
	
КонецПроцедуры
Показать


ФормаВыбора

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.ОтборПоРодителю <> Справочники.ФизическиеЛица.ПустаяСсылка() и Параметры.ОтборПоРодителю <> Неопределено Тогда 
		
		ОтборПоРодителю = Параметры.ОтборПоРодителю;
				
		СписокДляОтбора = СписокОтбора(); //тут создаю СписокЗначений для отбора
		
		Если СписокДляОтбора.Количество() <> 0 Тогда
			
			Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
			Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
			Отбор.Представление = "ОтборПоРодственникам";
			Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
			Отбор.Использование = Истина;
			Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
			Отбор.ПравоеЗначение = СписокДляОтбора;
			
			ИспользованиеОтборПоСоставуСемьи = Истина; //реквизит на форме
			
		Иначе
			
			ИспользованиеОтборПоСоставуСемьи = Ложь; //реквизит на форме
						
		КонецЕсли;
		
	Иначе 
		
		Элементы.ОтборПоСоставуСемьи.Видимость = Ложь;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
11. user1226763 19.12.19 12:11 Сейчас в теме
(2) я вас запутала((( извините
нужно установить отбор по Микроорганизму, в справочнике которого есть ТЧ ПанельАнтибиотиков, так вот выбрали Микроорганизм, нажили на кнопку заполнить и должен появится список этой ТЧ Панель Антибиотиков, сейчас просто открывается форма Выбора справочника ПанельАнтибиотиков
12. mrChOP93 96 19.12.19 12:25 Сейчас в теме
(11) Кажется, до меня дошло.

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

"ВЫБРАТЬ
Антибиотики.Ссылка КАК Ссылка
ИЗ
Справочник.Микроорганизмы.ТЧАнтибиотики КАК Антибиотики
ГДЕ
Антибиотики.Ссылка = &Ссылка"

В ПриСозданииНаСервере сделать условие

если ПараметрИспользоватьЗапрос тогда

"подменяем запрос и устанавливаем параметр"

конецесли
6. yalex9 107 19.12.19 11:07 Сейчас в теме
Наверное, хотите просто открыть форму подбора на нужной закладке?

Метод ОткрытьФорму() возвращает открываемую форму, поэтому:

ФормаВыбораПанельАнтибиотиков = Открытьформу(....)
ФормаВыбораПанельАнтибиотиков.ТекущийЭлемент = ФормаВыбораПанельАнтибиотиков.Элементы["НужныйЭлемент"];
16. Diyversus 18.02.21 14:38 Сейчас в теме
Артур, в КДЛ - ЛИС Акросс СПБ?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот