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

Вопрос по стандартному отбору в табличном поле

Автор mila1231, 07 окт 2016, 07:53

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

mila1231

Может кто подскажет решение, если есть такое, есть табличное поле, в нём стандартный отбор в командной панели (Установить отбор и сортировку списка...), так вот, как задать условие по умолчания, т.е при открытии этого отбора один из реквизитов должен быть заполнен не РАВНО, как по умолчанию, а содержит. Заранее всем спсб.
ЗЫ идей нет с сохранением отбора вариант не подходит, надо, чтоб открыл и работал, а не выбирал((

LexaK

да вроде все просто
попробуйте сделать по такому примеру (проверено работает)


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

&НаСервере
Процедура УстановитьОтбор()

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

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



ответ Понравился? (в смысле пригодился?)

mila1231

Цитата: LexaK от 07 окт 2016, 09:32
да вроде все просто
попробуйте сделать по такому примеру (проверено работает)


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

&НаСервере
Процедура УстановитьОтбор()

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

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




а если обычное приложение?

mila1231

Ребята, всё-таки, если обычное приложение, как сделать?
У меня обработка, соответственно если я правильно понимаю меняю строку на
Отбор = ОбработкаОбъект.отбор.ЭлементыФормы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));, а что делать с установитьоформление()? и по какому событию запускать установитьОтбор??


LexaK

если у вас обычные формы, немного по другому, отбор ставится на табличное поле на форме.
(еще есть отбор у формы выбора, но речь не о этом, так?)
теперь самый интересный вопрос, что у вас является источником данных этой табличной формы?
если это ТЧ самой обработки и или какого другого объекта, то это одни отборы
если у вас на форме документсписок или справочниксписок и т.д. то это другие отборы.

вы про свой источник данных ни чего не пишите, поэтому вам не подсказывают не потому что не хотят, а потому что не понимают (не знают) что (из чего)
вы хотите отобрать, :dfbsdfbsdf:

а приводить десятки вариантов отбора ...  :fdbsdfbsd:

  .


ответ Понравился? (в смысле пригодился?)

Afinogen


mila1231

Вы наверно правы....
Форма обработки состоит из табличной части со своими реквизитами,дальше на форме табличное поле, в него попадают данные  по запросу из регистра сведений, по срезу последних. Дальше на форме добавлена командная панель(источник данных у ней является  табличная часть обработки) и тут добавлено стандартное действие Установить отбор и сортировку списка..., так вот в этом стандартном отборе и нужно по умолчанию установить нужное значение для сравнения.
Добавлено: 11 окт 2016, 12:47


Цитата: Afinogen от 11 окт 2016, 11:40
так есть же кнопка сохранить отбор :dfbsdfbsdf:
кнопка есть, но она никого не устраивает.

LexaK

отбор по ТЧ обработки, вид сравнения, зависит от типа данных в колонке, да это в прочем и логично.
а для разных типов данных разные наборы видов сравнения
Вид сравнения (не)Содержит, например относится к типу данных Строка

Поэтому если стандартный отбор вам не дает нужного вам сравнения, то как вариант, выносите это сравнение (отбор по Содержит/НеСодержит)
в запрос, с помощью которого формируете табличную часть вашей обработки.
в обработке сделайте закладку Настройки, туда вынесите поля для значений для отбора.
по кнопке Заполнить, анализируете настройки и формируете дополнительное условие запроса.

эти настройки можете сделать запоминаемыми, тогда пользователю не придется каждый раз устанавливать свои настройки,


Добавлено: 11 окт 2016, 15:14


или еще как вариант, добавьте в ТЧ обработки колонку с типом Строка, тогда по ней можно будет отбирать с Видом сравнения Содержит.
ответ Понравился? (в смысле пригодился?)

mila1231

Цитата: LexaK от 11 окт 2016, 13:24
отбор по ТЧ обработки, вид сравнения, зависит от типа данных в колонке, да это в прочем и логично.
а для разных типов данных разные наборы видов сравнения
Вид сравнения (не)Содержит, например относится к типу данных Строка

Поэтому если стандартный отбор вам не дает нужного вам сравнения, то как вариант, выносите это сравнение (отбор по Содержит/НеСодержит)
в запрос, с помощью которого формируете табличную часть вашей обработки.
в обработке сделайте закладку Настройки, туда вынесите поля для значений для отбора.
по кнопке Заполнить, анализируете настройки и формируете дополнительное условие запроса.

эти настройки можете сделать запоминаемыми, тогда пользователю не придется каждый раз устанавливать свои настройки,


Добавлено: 11 окт 2016, 15:14


или еще как вариант, добавьте в ТЧ обработки колонку с типом Строка, тогда по ней можно будет отбирать с Видом сравнения Содержит.

Да всё правильно содержит, этот вид сравнение у объекта строкового типа, но при открытии по умолчанию стоит "равно", а надо, чтоб было "содержит"т.е пользователь открывает отбор и получает
Номер прибора  содержит (ввод нужной информации)
или так нельзя?

LexaK

а-а-а, ну тогда тоже все просто, в процедуре формы обработки при открытии, такой код напишите


Процедура ПриОткрытии()

    //вместо ТабличнаяЧасть и "Реквизит1" - ваше наименование табличного поля и поля/колонки укажите
лкЭлементОтбора = ЭлементыФормы.ТабличнаяЧасть.ОтборСтрок.Найти("Реквизит1");
Если лкЭлементОтбора <> Неопределено Тогда
лкЭлементОтбора.ВидСравнения = ВидСравнения.Содержит;
КонецЕсли;

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


ответ Понравился? (в смысле пригодился?)

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск