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

Отбор в динамическом списке

Автор jastreb, 24 авг 2015, 09:29

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

jastreb

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

Ранее отбор происходил следующим образом, до добавления табличной части и автор указывался строго один.


&НаКлиенте
Процедура СписокАвторовПриАктивизацииСтроки(Элемент)
СделатьОтбор(Элемент, "Авторы");
КонецПроцедуры

&НаКлиенте
Процедура СделатьОтбор(Элемент, ИмяПоля);

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


Подскажите как такое реализовать, если возможно с примером кода.
Благодарю.

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

jastreb

Примерно такой и было сделано, до добавления табличной части. О чем писал выше.

cska-fanat-kz

хотя тут скорее другой вариант нужен - добавить в запрос к дин.списку параметр Автор и его менять.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

jastreb

А можно подробней? Как и что.
Вот сам запрос для формирования динамического списка

ВЫБРАТЬ
СправочникБ_Авторы.Ссылка,
СправочникБ_Авторы.ПометкаУдаления,
СправочникБ_Авторы.Код,
СправочникБ_Авторы.Наименование,
СправочникБ_Авторы.Предопределенный,
СправочникБ_Авторы.ИмяПредопределенныхДанных
ИЗ
Справочник.Б_Авторы КАК СправочникБ_Авторы

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

jastreb

Решил следующим образом
В запросе формирующем динамический список литературы

ВЫБРАТЬ
СправочникБ_Литература.Ссылка,
СправочникБ_Литература.ПометкаУдаления,
СправочникБ_Литература.Код,
СправочникБ_Литература.Наименование,
СправочникБ_Литература.Автор,
СправочникБ_Литература.НаименованиеББК,
СправочникБ_Литература.НаименованиеУДК,
СправочникБ_Литература.Аннотация,
СправочникБ_Литература.Издательство,
СправочникБ_Литература.ГодИздания,
СправочникБ_Литература.НавигационнаяСсылкаНаОбложку,
СправочникБ_Литература.ФайлКартинки,
СправочникБ_Литература.СсылкаНаФайл,
СправочникБ_Литература.путьКФайлуЗагрузки,
СправочникБ_Литература.разделительПолей,
СправочникБ_Литература.символОграничения,
СправочникБ_Литература.Язык,
СправочникБ_Литература.Жанр,
СправочникБ_Литература.Серия,
СправочникБ_Литература.КодББК,
СправочникБ_Литература.КодУДК,
СправочникБ_Литература.Предопределенный,
СправочникБ_Литература.ИмяПредопределенныхДанных,
СправочникБ_Литература.Авторы.(
Ссылка,
НомерСтроки,
Автор
),
СправочникБ_Литература.РубрикаторыББК.(
Ссылка,
НомерСтроки,
РубрикаторББК
),
СправочникБ_Литература.РубрикаторыУДК.(
Ссылка,
НомерСтроки,
РубрикаторУДК
)
ИЗ
Справочник.Б_Литература КАК СправочникБ_Литература
ГДЕ
ВЫБОР
КОГДА &Параметр ЕСТЬ NULL
ТОГДА ИСТИНА
ИНАЧЕ ВЫБОР
КОГДА &Режим ЕСТЬ NULL
ТОГДА ИСТИНА
ИНАЧЕ ВЫБОР
КОГДА &Режим = 1
ТОГДА СправочникБ_Литература.Авторы.Автор = &Параметр
ИНАЧЕ ВЫБОР
КОГДА &Режим = 2
ТОГДА СправочникБ_Литература.РубрикаторыББК.РубрикаторББК = &Параметр
ИНАЧЕ ВЫБОР
КОГДА &Режим = 3
ТОГДА СправочникБ_Литература.РубрикаторыУДК.РубрикаторУДК = &Параметр
КОНЕЦ
КОНЕЦ
КОНЕЦ
КОНЕЦ
КОНЕЦ


И в модуле формы Обработка события При активизации строки

Процедура СписокАвторовПриАктивизацииСтроки(Элемент)

СделатьОтборАвторыРубрикаторы(Элемент, 1);

КонецПроцедуры

Процедура СделатьОтборАвторыРубрикаторы(Элемент, Режим);

Если НЕ Элемент.ТекущиеДанные = Неопределено Тогда
СписокЛитературы.Отбор.Элементы.Очистить();
СписокЛитературы.Параметры.УстановитьЗначениеПараметра("Параметр", Элемент.ТекущиеДанные.Ссылка);
СписокЛитературы.Параметры.УстановитьЗначениеПараметра("Режим", Режим);
Иначе
СписокЛитературы.Параметры.УстановитьЗначениеПараметра("Режим", Неопределено);
СписокЛитературы.Параметры.УстановитьЗначениеПараметра("Параметр", Неопределено);
КонецЕсли;

КонецПроцедуры


Теги:

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

Рейтинг@Mail.ru

Поиск