Как сделать отбор по колонке которая заполняется через оформление строк
По теме из базы знаний
- PowerTools: Инструменты администратора 1С 8.3
- Автоматизация торговой деятельности как путь к лидерству на рынке. Часть 2
- Разные хм... неожиданности при работе с УТ 11 и платформой
- Как я с отчетом СКД боролся (произвольный макет)!
- Перечень множественных значений в ячейке динамического списка. Как стало и как было
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(18) fokin, Это не имеет большого значения, справочник или документ. Вам нужен тот же метод.
1. Размещаете на форме реквизит с нужным типом данных (по которым нужен отбор).
2. Пишете 2 обработчика, ПриИзменении и ПриОчистке.
3. В ПриИзменении находите ссылки на элементы справочника подходящие под ваше условие. И устанавливаете отбор по ссылке.
4. ПриОчистке - убираете отбор.
Вот вам и пример (для обычных форм):
Мне этот вариант не нравится, но приходится иногда использовать. Когда по другому не сделать.
1. Размещаете на форме реквизит с нужным типом данных (по которым нужен отбор).
2. Пишете 2 обработчика, ПриИзменении и ПриОчистке.
3. В ПриИзменении находите ссылки на элементы справочника подходящие под ваше условие. И устанавливаете отбор по ссылке.
4. ПриОчистке - убираете отбор.
Вот вам и пример (для обычных форм):
//На форму добавлено поле Регион, У справочника нет реквизита такого типа. Т.е. просто отбор невозможен.
Процедура ОтборРегионПриИзменении(Элемент)
Отбор.Ссылка.Использование = Истина;
Если ЗначениеЗаполнено(Элемент.Значение) Тогда
СписокЗнач="Какой то список ссылок. например полученный запросом."
Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке;
Отбор.Ссылка.Значение=СписокЗнач;
Отбор.Ссылка.использование=Истина;
Иначе
Отбор.Ссылка.Использование = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура ОтборРегионОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка= ложь;
Элемент.значение = "";
ОтборРегионПриИзменении(Элемент);
КонецПроцедуры
ПоказатьМне этот вариант не нравится, но приходится иногда использовать. Когда по другому не сделать.
)) это понятно
я все никак сообразить не могу, как передать значение поиска...
Т.е. дальше сделаю запрос с отбором и уже выборку выгружу в список, НО как пердать то? В отборе и сортировке есть реквизит (число), что бы в нем значение поиска передавать, а как передавать не могу понять.
я все никак сообразить не могу, как передать значение поиска...
Т.е. дальше сделаю запрос с отбором и уже выборку выгружу в список, НО как пердать то? В отборе и сортировке есть реквизит (число), что бы в нем значение поиска передавать, а как передавать не могу понять.
Если колонка заполняется через оформление строк, значит есть зависимость от "нормальных" колонок, значит можно эмулировать отборы по этим колонкам с помощью отборов по "нормальным" колонкам, или я чего-то не понял? А отбор передается через парамер формы отбор. Ну в зависимости от основного реквизита конечно, я предполагаю, что это - динамический список. Ну а если стандартного отбора не хватает, то его и в отборах списка не хватит. Но на всякий случай выглядит примерно так -
Список.УсловноеОформление.Элементы[...] - это элемент, а у него надо установить
Использование,Отбор (добавить), у отбора левое и правое значение.
все это ПриСозданииНаСервере делается.
Можно передавать свой параметр формы и в форме ПриСозданииНаСервере обрабатывать. Например у списка сделать произвольный запрос с параметрами и ПриСозданииНаСервере устанавливать параметры Список.Параметры.УстановитьЗначениеПараметра(...). Вроде как-то так.
Список.УсловноеОформление.Элементы[...] - это элемент, а у него надо установить
Использование,Отбор (добавить), у отбора левое и правое значение.
все это ПриСозданииНаСервере делается.
Можно передавать свой параметр формы и в форме ПриСозданииНаСервере обрабатывать. Например у списка сделать произвольный запрос с параметрами и ПриСозданииНаСервере устанавливать параметры Список.Параметры.УстановитьЗначениеПараметра(...). Вроде как-то так.
а я думаю, почему у меня не сходиться)) пытаюсь подготовиться к экзамену, так что сам пока не сильно рублю в синусах, могу отвечать невпопад)) А с каким объектом работаете? Это список? (СправочникСписок, документСписок)?
С обычными формами в этом отношении намного хуже. В списках документов отсутствует колонка "Ссылка", значит придется устанавливать отбор как-то так:
СписокОтбора = Новый СписокЗначений;
....
Здесь добавляем номера документов, которые должны попасть в отбор
....
ДокументСписок.Отбор.Номер.Значение = СписокОтбора;
ДокументСписок.Отбор.Номер.ВидСравнения = ВидСравнения.ВСписке;
ДокументСписок.Отбор.Номер.Использование = Истина;
СписокОтбора = Новый СписокЗначений;
....
Здесь добавляем номера документов, которые должны попасть в отбор
....
ДокументСписок.Отбор.Номер.Значение = СписокОтбора;
ДокументСписок.Отбор.Номер.ВидСравнения = ВидСравнения.ВСписке;
ДокументСписок.Отбор.Номер.Использование = Истина;
9. спасибо, это понятно, что можно через списки и запросы. Я не могу никак понять в какой момент мне поймать значение которое задается для поиска в отборе.
Т.е. вот есть у меня колонка, она заполнена через оформление строк. Я добавила реквизит Колонка1, с типом число, которая есть в отборе. Вот как мне из введенного значения в отбор, обратиться к поиску. Просто в СписокПриПолученииДанных(...) она не цепляется, там срабатывает другой поиск.
Т.е. вот есть у меня колонка, она заполнена через оформление строк. Я добавила реквизит Колонка1, с типом число, которая есть в отборе. Вот как мне из введенного значения в отбор, обратиться к поиску. Просто в СписокПриПолученииДанных(...) она не цепляется, там срабатывает другой поиск.
(11) katrineKA, из такого объяснения задачи трудно что-либо понять. Попробую стелепатировать. На форме добавляешь колонку, которую заполняешь при получении данных. Также на форму добавь поле ввода, в которое пользователь будет вводить значение для отбора. В событии ПриИзменении этого поля ввода программно устанавливаешь нужные отборы.
Т.е. вот есть у меня колонка, она заполнена через оформление строк. Я добавила реквизит Колонка1, с типом число, которая есть в отборе.
Не понятно, что такое отбор. Если это свойство СправочникСписок, то как туда может попасть добавленная колонка? или это не добавленная колонка а реквизит документа, просто он заполняется через оформление списка? Если это реквизит документа и он есть в отборе, и нужно получить значение отбора, то ДокументСписок.Отбор.<ИмяКолонки>.Значение
Внесу свои пять копеек
// добавляем программно колонку
Колонка = ЭлементыФормы.ПланВидовРасчетаСписок.Колонки.Вставить(4,"ПолнНаименование");
Колонка.Имя = "ПолнНаименование";
Колонка.Данные = "ПолнНаименование";
Колонка.Ширина = 32;
//-------------------------------------
// не забываем вот эту строчу, чтобы был отбор
ЭлементыФормы.ПланВидовРасчетаСписок.НастройкаОтбора.Группа.Доступность = Истина;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот