|
Обойти Колонки ТЗ | ☑ | ||
---|---|---|---|---|
0
myr4ik07
11.01.16
✎
15:52
|
Добрый день. Имеется ТЗ в ней есть Динамическое количество колонок (то есть, сегодня 3, завтра 33).
Мне нужно найти в этих колонках значение булево. Будьте добры, подсказать запросом как это сделать и в цикле? Статично понимаю, а вот когда динамично колонки то не могу додумать. Спасибо. |
|||
1
Garykom
гуру
11.01.16
✎
15:53
|
а читать не пробовали? говорят помогает...
|
|||
2
Lexey_
11.01.16
✎
15:53
|
(0) Для каждого Колонка из ТЗ.Колонки Цикл
|
|||
3
myr4ik07
11.01.16
✎
15:56
|
(2) Если ТЗ.Количество() <> 0 Тогда
Для Каждого Строка Из ТЗ Цикл н = "K_Линия"+1; Для Каждого Колонка Из Строка[н] Цикл КонецЦикла; КонецЦикла; КонецЕсли; Колонки называются у меня К_Линия1, К_Линия2 но пишет Для Каждого Колонка Из Строка[н] что нет такой колонки, хотя она есть |
|||
4
Garykom
гуру
11.01.16
✎
15:56
|
(3) ыыыы
|
|||
5
Heckfy
11.01.16
✎
15:59
|
А если
Для Каждого СтрокаТЗ Из ТЗ Цикл ? :) |
|||
6
Lexey_
11.01.16
✎
16:00
|
(3) отладчик не здесь
|
|||
7
Fish
11.01.16
✎
16:01
|
(3) феерично.
|
|||
8
Garykom
гуру
11.01.16
✎
16:01
|
(5) а почему забыл про 2-й вложенный цикл по ТЗ.Колонки?
ЗЫ незачет... |
|||
9
Heckfy
11.01.16
✎
16:02
|
(8) Тихо ты.. :)
Может про второй он сам дойдет. :) |
|||
10
salvator
11.01.16
✎
16:04
|
(3) Посмотри в отладчике, что у тебя в Строка[н] и "вы понимаете теперь, чего вы натворили?" (с)
|
|||
11
Garykom
гуру
11.01.16
✎
16:05
|
и сразу ветка Помогите найти термин пригодилась ))
|
|||
12
myr4ik07
11.01.16
✎
16:06
|
(10) В отдалчик К_Линия1 то что и надо = тип строка
|
|||
13
Анцеранана
11.01.16
✎
16:10
|
Может цикл для 1 по количество колонок. Или с 0 по количество-1.?
|
|||
14
myr4ik07
11.01.16
✎
16:16
|
Так чего то я не понял
Если ТЗ.Количество()-1 <> 0 Тогда Для Каждого Строка Из ТЗ Цикл Для Каждого Колонка Из ТЗ.Колонки Цикл КонецЦикла; КонецЦикла; КонецЕсли; то если мне нужно найти значение в колонках (динамических колонках) то мне не зачем перебирать строки? |
|||
15
myr4ik07
11.01.16
✎
16:17
|
ничего не пойму как правильно искать в табличе значение в колонках и что бы вернуло строку найденную
|
|||
16
AllJoke
11.01.16
✎
16:18
|
тебе именно в колонках нужно найти значение Булево или тупо во всей ТЗ?
|
|||
17
Анцеранана
11.01.16
✎
16:21
|
Для Каждого Строка Из ТЗ Цикл
Для Кол = 0 По КоличествоКолонокВТЗ Цикл НаимКол = "К_Линия"+Кол; Сообщить(Строка[НаимКол]; что-то типа этого я имел ввиду. |
|||
18
myr4ik07
11.01.16
✎
16:22
|
(16) в колонках, количество которых будет меняться каждый день (К_Линия1, К_Линия2, К_Линия3) в них тип Булево, вот мне и нужно найти есть ли Истина где то в этих колонках и если есть вернуть всю строку
|
|||
19
AllJoke
11.01.16
✎
16:23
|
(18) ТаблицаЗначений.Найти(ТвоёЗначениеБулево, Колонки). Посмотри в СП.
|
|||
20
Heckfy
11.01.16
✎
16:25
|
Ладно, я так понимаю с перебором не получится ТС самому разобраться.
ТаблицаЗначений (ValueTable) Найти (Find) Синтаксис: Найти(<Значение>, <Колонки>) Параметры: <Значение> (обязательный) Тип: Произвольный. Искомое значение. <Колонки> (необязательный) Тип: Строка. Список имен колонок, разделенных запятыми, по которым производится поиск. Если параметр не указан, поиск осуществляется по всей таблице значений. Значение по умолчанию: Пустая строка. Возвращаемое значение: Тип: СтрокаТаблицыЗначений; Неопределено. Строка, в которой содержится искомое значение. Если значение не найдено, то возвращается значение Неопределено. Описание: Осуществляет поиск значения в указанных колонках таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Примечание: Метод эффективно использовать для поиска уникальных значений. |
|||
21
AllJoke
11.01.16
✎
16:25
|
Колонки - тип строка.
СтрокаКолонко = ""; Для Каждого кол Из ТЗ.Колонки Цикл СтрокаКолонок = СтрокаКолонок + "," + кол.Имя; КонецЦикла; Как то так. |
|||
22
Garykom
гуру
11.01.16
✎
16:25
|
(19) угу а потом менять на Ложь (удалять строку) и снова искать ))
|
|||
23
Heckfy
11.01.16
✎
16:25
|
(17) Ну чё, тоже весело
Для Каждого Строка Из ТЗ Цикл :) |
|||
24
myr4ik07
11.01.16
✎
16:26
|
(19) смотрел, вернет только одну строку из ТЗ, у меня может возвращаться много строк
|
|||
25
myr4ik07
11.01.16
✎
16:26
|
(20) вернет же одну строку (24)
|
|||
26
AllJoke
11.01.16
✎
16:27
|
Тогда используй НАйтиСтроки()
|
|||
27
hhhh
11.01.16
✎
16:27
|
(25) найтиСтроки тогда
|
|||
28
Heckfy
11.01.16
✎
16:28
|
ТаблицаЗначений.НайтиСтроки (ValueTable.FindRows)
ТаблицаЗначений (ValueTable) НайтиСтроки (FindRows) Синтаксис: НайтиСтроки(<ПараметрыОтбора>) Параметры: <ПараметрыОтбора> (обязательный) Тип: Структура. Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение. Возвращаемое значение: Тип: Массив. Массив строк таблицы значений, соответствующих условиям поиска. Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным. Описание: Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Примечание: Метод эффективно использовать для выборки неуникальных |
|||
29
myr4ik07
11.01.16
✎
16:28
|
вот эту беду нужно обойти - https://s.mail.ru/3hZDXeCTzMNb/img-2016-01-11-15-28-04.png
|
|||
30
Heckfy
11.01.16
✎
16:29
|
(29) Ну, у меня доступа к таким ресурсам нету. :(
|
|||
31
myr4ik07
11.01.16
✎
16:29
|
(27) (27) т.е. запихнуть в НайстиСТроки(Параметр) все Колонки?
|
|||
32
myr4ik07
11.01.16
✎
16:30
|
(30) оно просто пускает, доступа не надо
|
|||
33
salvator
11.01.16
✎
16:30
|
(31) Почитай уже в СП про этот метод.
|
|||
34
myr4ik07
11.01.16
✎
16:31
|
почитаю, а все же, как то циклом можно найти то что ищу? или запросом? Если да, дайте пример пожалуйста, хочу посмотреть как
|
|||
35
Garykom
гуру
11.01.16
✎
16:32
|
интересно а ТС в курсе что ТЗ = двумерный массив?
|
|||
36
Торин
11.01.16
✎
16:33
|
Тупо, в лоб, но работать будет...
СписокСтрок = новый СписокЗначений; для сч1 = 0 по Тз.количество() -1 Цикл для сч2 = 0 по Тз.колонки.количество() -1 Цикл Если ТЗ[сч1][сч2] тогда СписокСтрокюдобавить(ТЗ[сч1]); конецесли конецЦикла; конецЦикла; |
|||
37
Торин
11.01.16
✎
16:34
|
орфографическая ошибка -- буква ю вместо точки
|
|||
38
palpetrovich
11.01.16
✎
16:35
|
(36) с булевым в условии надо быть осторожнее :)
|
|||
39
Торин
11.01.16
✎
16:35
|
и после СписокСтрок.добавить вставьте прервать
|
|||
40
myr4ik07
11.01.16
✎
16:59
|
Колонки = Новый Структура;
Для Каждого Колонка Из ТЗ.Колонки Цикл Колонки.Вставить(Колонка.Имя ,Истина); КонецЦикла; Найдено = ТЗ.НайтиСтроки(Колонки); ничего не находит, хотя есть истина в одной колонке |
|||
41
AllJoke
11.01.16
✎
17:02
|
Найдено = ТЗ.НайтиСтроки(Колонки);
Колокни - это что????? А должна быть Структура. |
|||
42
Lexey_
11.01.16
✎
17:02
|
(40) это код для истины во всех колонках
|
|||
43
AllJoke
11.01.16
✎
17:03
|
+ упс, неуглядел.
|
|||
44
myr4ik07
11.01.16
✎
17:03
|
(41) структура, где находиться
К_Линия1, Истина что бы передать в параметр ТЗ.НайтиСтроки(Структура) |
|||
45
Heckfy
11.01.16
✎
17:04
|
ИМХО, в ТЗ Истина текст, а не булево.
|
|||
46
myr4ik07
11.01.16
✎
17:04
|
(42) ну так я ищу Истину, есть ли она в колонках, если есть тогда бегом в массив, нет, пропускаться дождно и в массив не попадать
|
|||
47
myr4ik07
11.01.16
✎
17:05
|
(45)
Колонки = Новый Структура; Для Каждого Колонка Из ТЗ.Колонки Цикл Колонки.Вставить(Колонка.Имя ,"Истина"); КонецЦикла; Найдено = ТЗ.НайтиСтроки(Колонки); аналогично, массив пустой |
|||
48
AllJoke
11.01.16
✎
17:06
|
НайтиСтроки ищет вроде только по одной колонке.
|
|||
49
hhhh
11.01.16
✎
17:07
|
(48) нет, не по одной. Но автору надо по ИЛИ, а она по И ищет.
|
|||
50
myr4ik07
11.01.16
✎
17:08
|
(49) и чё делать?
|
|||
51
Fish
11.01.16
✎
17:09
|
(50) Цикл в цикле уже предлагали?
|
|||
52
myr4ik07
11.01.16
✎
17:10
|
(51) да, я с циклом и пришел сюда, напишите будьте добры еще вы правильный каркас цикла для моей задаче
|
|||
53
hhhh
11.01.16
✎
17:10
|
Для Каждого Колонка Из ТЗ.Колонки Цикл
Колонки = Новый Структура; Колонки.Вставить(Колонка.Имя ,"Истина"); Найдено = ТЗ.НайтиСтроки(Колонки); КонецЦикла; |
|||
54
Fish
11.01.16
✎
17:11
|
(52) А чем вариант в (36) не устраивает?
|
|||
55
Fish
11.01.16
✎
17:12
|
+(54) С учётом последующих замечаний?
|
|||
56
myr4ik07
11.01.16
✎
17:16
|
(53) спасибо, огромное спасибо
Для Каждого Колонка Из ТЗ.Колонки Цикл Колонки = Новый Структура; Колонки.Вставить(Колонка.Имя ,Истина); Найдено = ТЗ.НайтиСтроки(Колонки); КонецЦикла; а с перебором строк, а потом колонок + с Запросом можно справиться с данной задачой? Каркас не сложно будет набросать еще такими способами, увы, не ммогу додумать сам, а так бы поучился в знающих людей. Спасибо. |
|||
57
myr4ik07
11.01.16
✎
17:17
|
(54) вариант (36) очень хорошо, хотя не пробовал, за что большое спасибо человеку но все же хотелось как то более понятнее для меня, там лабиринт какой то, это мое мнение просто.
|
|||
58
Heckfy
11.01.16
✎
17:56
|
(57) Это подойдет?:
Для Каждого СтрокаТЗ Из ТЗ Цикл Для Х=0 По ТЗ.Колонки.Количество()-1 Цикл Сообщить(СтрокаТЗ.Получить(Х)); КонецЦикла; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |