Имя: Пароль:
1C
1С v8
Поиск по 4 столбцам одновременно
,
0 VSpicy
 
naïve
11.07.19
15:20
Привет всем!
Есть такая (http://prntscr.com/odlie7)табличная часть.
Нужно чтоб в поле ввода "Поиск по водителю" можно было одновременно осуществлять поиск водителей по 4 столбцам одновременно.
Так мы находим только по столбцу "Водитель №1":
Процедура ПоискПоВодителюПриИзменении(Элемент)
        СписокСтрокНаФорме = ЭтаФорма.Элементы.СоставПлана;
    Если ЗначениеЗаполнено(ПоискПоВодителю) Тогда
        СписокСтрокНаФорме.ОтборСтрок = Новый ФиксированнаяСтруктура("Водитель_1", ПоискПоВодителю);
    Иначе
        СписокСтрокНаФорме.ОтборСтрок = Неопределено;
    КонецЕсли;
КонецПроцедуры

Подскажите пожалуйста как правильно написать поиск по 4 столбцам?
Заранее спасибо!!!
1 arsik
 
гуру
11.07.19
15:22
Динамический список
2 VSpicy
 
naïve
11.07.19
15:25
(1) Да.
3 VSpicy
 
naïve
11.07.19
15:30
Пример: "Иванов" может быть в 1,2,3 или 4 столбце, причем на разных строчках и не один раз, поэтому тут получается больше как фильтр работать должно...
4 Garykom
 
гуру
11.07.19
15:40
Меняйте свою таблицу на более вменяемую.
Например 4-е поле "№ водителя" добавить и линейно вместо этих дурацких столбцов.
5 Garykom
 
гуру
11.07.19
15:42
Если все же хочется такой изврат, то параметром в запрос для дин.списка, чтобы все столбцы перестраивало
6 arsik
 
гуру
11.07.19
15:47
(3) Я конечно не секу в УФ и динамических списках, но сходу вот такой вариант возможен.
https://i.imgur.com/jJYNgiD.png
https://i.imgur.com/zffjID4.png

дСписок.Параметры.УстановитьЗначениеПараметра("Страна", Справочники.СтраныМира.Россия);
дСписок.Параметры.УстановитьЗначениеПараметра("Родитель", ВыбранныйРодитель);
7 VSpicy
 
naïve
11.07.19
15:48
(4) К сожалению это уже давно рабочий вариант, просто встал вопрос о поиске (фильтрации) по водителям.
8 Garykom
 
гуру
11.07.19
15:59
(7) Сама подумай вот тебе надо отбором показать только Иванова, скрыв прочих.
Иванов только во 2-й колонке, значит в ней будет одно значение а другие все надо удалить.

А что делать с другими "колонками"? Удалять или оставлять "не Ивановых"?
А учитывая что одна строка это сразу 4 колонки это легкий белый пушистый полярный
9 Garykom
 
гуру
11.07.19
16:00
(8) *Сам
10 ptiz
 
11.07.19
16:26
(0) Формируй сводное поле-строку из наименований всех четырех водителей. Поиск привязывай к ней.
11 VSpicy
 
naïve
11.07.19
16:29
(8) Работать должно по методу "ОтборСтрок".
Выбрал "Иванова" - только его и показывать во всех столбцах где он прописан.
12 VSpicy
 
naïve
11.07.19
16:33
Мне  посоветовали сделать 4 поиска отдельно по каждому полю Водитель, а результат вывести в единый массив строк.
Но так как я начинающий кодер, не особо понимаю как это реализовать и что прописать в "Процедуре ПоискПоВодителюПриИзменении"?
13 VSpicy
 
naïve
11.07.19
17:00
(10) А можно код, для примера?
14 ptiz
 
11.07.19
17:31
(13) В запросе сделай поле вида: "ЕСТЬNULL(Водитель1.наименование, "") + ЕСТЬNULL(Водитель2.Наименование, "") ... КАК ВодительДляПоискаНаименование"
15 VSpicy
 
naïve
12.07.19
11:06
(11) Значит таким образом не получится...?
Путем отбора строк...?
16 catena
 
12.07.19
11:18
(15)Почему?

ОтборСтрок (RowFilter)
Примечание:
При программном изменении табличной части отбор нужно переустанавливать, чтобы для измененных строк отбор отработал.
Отбор выполняется по условию вхождения значения. Например, если в колонке есть ячейки со значением "Строка 1", "Строка 2", ... "Строка 10", "Строка 11", ... и устанавливается отбор по значению "Строка 1", то в таблицу будут отобраны строки со значениями "Строка 1", "Строка 10", "Строка 11" и т.д. "
17 VSpicy
 
naïve
12.07.19
12:22
(16) Это я в курсе - видел в справочнике...
А можно маленький пример: отбор строк через поле "Поиск по водителю" http://prntscr.com/odlie7
18 arsik
 
гуру
12.07.19
12:26
(17) Создаешь в отборе группу "ИЛИ". Добавляешь подчиненные Водитель1 = Ссылка, Водитель2 = Ссылка и тд.
19 VSpicy
 
naïve
12.07.19
12:27
(18) Это в конфигураторе или режиме предприятие?
20 VSpicy
 
naïve
12.07.19
12:28
(18) У меня УФ.
21 VSpicy
 
naïve
12.07.19
13:12
(18) Для одного столбца так:  СписокСтрокНаФорме.ОтборСтрок = Новый ФиксированнаяСтруктура("Водитель_1", ПоискПоВодителю);
а для 4 столбцов тогда как?
22 catena
 
12.07.19
13:22
23 VSpicy
 
naïve
12.07.19
13:37
(22) Спасибо большое!!!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.