|
УФ Как найти строку таблицы по значению в колонке и сделать её текущей? | ☑ | ||
---|---|---|---|---|
0
Тактик
18.09.13
✎
11:41
|
УФ Как найти строку таблицы по значению в колонке и сделать её текущей?
НайтиСтроки( не работает. в ТаблицаНаФорме.ТекущаяСтрока = полагается записать идентификатор строки. Как его получить? |
|||
1
Тактик
18.09.13
✎
11:44
|
Пытаюсь найти
СтруктураДляПоиска = Новый Структура; СтруктураДляПоиска.Вставить("КлючСвязи", КлючСвязи); Элементы.ТаблцаНаФорме.НайтиСтроки(СтруктураДляПоиска); А так пытаюсь обратиться к таблице Элементы.ТаблицаНаФорме.ТекущаяСтрока = ИндексТекущейСтроки; |
|||
2
banco
18.09.13
✎
11:44
|
(0) что значит НайтиСтроки() не работает?
|
|||
3
Тактик
18.09.13
✎
11:46
|
(2) НайтиСтроки( синтаксиспомощник не предлагает, а если пишешь вручную пишет ошибку.
|
|||
4
Тактик
18.09.13
✎
11:49
|
(2) Метод объекта не обнаружен (НайтиСтроки)
|
|||
5
Defender aka LINN
18.09.13
✎
11:51
|
(0) "в ТаблицаНаФорме.ТекущаяСтрока = полагается записать идентификатор строки.
Как его получить?" - ты не поверишь... (3) "НайтиСтроки( синтаксиспомощник не предлагает, а если пишешь вручную пишет ошибку." - у работает. Что я делаю не так? |
|||
6
Defender aka LINN
18.09.13
✎
11:51
|
+(5) Хотя у табличного поля реально нет такого метода, факт
|
|||
7
Тактик
18.09.13
✎
11:52
|
(5) напиши пожалуйста что ты пишешь до НайтиСтроки(
|
|||
8
Тактик
18.09.13
✎
11:53
|
(6) Это не табличное поле, а элемент формы типа "таблица".
|
|||
9
Eugeneer
18.09.13
✎
11:55
|
Очень легко
ТекущиеДанные = ЭлементыФормы.ГруппыНоменклатуры.ТекущиеДанные; НайденнаяСтрока = ДеревоНоменклатуры.Строки.Найти(ТекущиеДанные.Группа,"Номенклатура",Истина); ЭлементыФормы.ДеревоНоменклатуры.ТекущаяСтрока = НайденнаяСтрока; |
|||
10
banco
18.09.13
✎
11:55
|
(8) а ПутьКДанным что у этого элемента?
|
|||
11
banco
18.09.13
✎
11:56
|
(9) у тебя пример из обычных форм
|
|||
12
Тактик
18.09.13
✎
11:57
|
"ЭлементыФормы" - это обычные формы, там я и сам знаю. Но на УФ это не работает.
|
|||
13
Eugeneer
18.09.13
✎
11:57
|
(11) ща управляемые дам
|
|||
14
Тактик
18.09.13
✎
11:57
|
(9) "ЭлементыФормы" - это обычные формы, там я и сам знаю. Но на УФ это не работает.
|
|||
15
Defender aka LINN
18.09.13
✎
11:58
|
(8) Чо ты меня лечишь? Я прекрасно вижу, что у тебя где прямо отсюда.
|
|||
16
Тактик
18.09.13
✎
11:59
|
(15) Я же писал - таблица на форме обработки. Управляемые формы. На УФ не может быть "таблицы значений"
|
|||
17
olegves
18.09.13
✎
12:00
|
(1) попробуй так:
СтруктураДляПоиска = Новый Структура; СтруктураДляПоиска.Вставить("КлючСвязи", КлючСвязи); Объект.ИмяТабличнойЧасти.НайтиСтроки(СтруктураДляПоиска); |
|||
18
Тактик
18.09.13
✎
12:01
|
(15) и табличного поля тоже...
|
|||
19
Defender aka LINN
18.09.13
✎
12:01
|
(18) О как.
*умчался за попкорном* |
|||
20
Eugeneer
18.09.13
✎
12:02
|
Короче не могу найти старую версию обработки. В УТ11 есть типовой подбор, там пример.
При активации номенклатуры в окне с иерархией автоматом становится на родителя этой номенклатуры |
|||
21
Тактик
18.09.13
✎
12:02
|
(17) Пробовал. Великолепно ищет строки в источнике. Но как эту строку потом связать с строкой в таблице на УФ.
|
|||
22
Тактик
18.09.13
✎
12:02
|
(20) Спасибо, буду смотреть.
|
|||
23
Eugeneer
18.09.13
✎
12:03
|
Вот из УТ11
Форма.Элементы.ИерархияНоменклатуры.ТекущаяСтрока = ТекущиеДанные.Родитель; |
|||
24
banco
18.09.13
✎
12:03
|
(21) с этого и надо было начинать. ПолучитьИдентификатор()
|
|||
25
Defender aka LINN
18.09.13
✎
12:04
|
(21) ВОЗМОЖНО, только ВОЗМОЖНО стоит таки отлипнуть от Мисты и заглянуть в СП - а нет ли там СЛУЧАЙНО каких-нибудь методов, связанных с идентификаторами?
|
|||
26
Тактик
18.09.13
✎
12:05
|
(24) Будь добр, напиши пожалуйста к чему относится ПолучитьИдентификатор()
В строке найденной в источнике нет такого метода. |
|||
27
Тактик
18.09.13
✎
12:05
|
(25) я смотрел. увы, примеров кода нет, к чему этот идентификатор относится тоже не понятно
|
|||
28
Eugeneer
18.09.13
✎
12:06
|
(21) найти строки возвращает массив строк.
Ты не можешь массив назначить на текСтроку. это уже разные типы. ТекущаяСтрока = значение должно быть равно тоже именно строке. Одной строке. Либо тогда тебе еще надо массив обойти 7 в нем уже будет тип конертной строки. целой. |
|||
29
Defender aka LINN
18.09.13
✎
12:06
|
(26) Да у тебя и у таблицы метода нет...
|
|||
30
olegves
18.09.13
✎
12:08
|
(21)
ТаблицаФормы (FormTable) ДанныеСтроки (RowData) Синтаксис: ДанныеСтроки(<Строка>) Параметры: <Строка> (обязательный) Тип: Произвольный. Строка таблицы, данные которой необходимо получить. Тип параметра зависит от типа редактируемого значения. Возвращаемое значение: Тип: ДанныеФормыСтруктура; ДанныеФормыЭлементДерева; ДанныеФормыЭлементКоллекции. Для таблиц, связанных с разными типами данных, тип возращаемого значения данного метода может различаться: Для динамического списка тип свойства - ДанныеФормыСтруктура; Для дерева значений - ДанныеФормыЭлементДерева; Для остальных (таблица значений, табличные части и др.) - ДанныеФормыЭлементКоллекции. Описание: Возвращает значение, содержащее данные указанной строки. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Из данных строки получить идентификатор |
|||
31
Eugeneer
18.09.13
✎
12:08
|
Короче все есть. У меня обработка была полностью рабочая. Но я потом все переделал и это вообще исчезло.
|
|||
32
Тактик
18.09.13
✎
12:09
|
(29) Да, увы. У реквизита типа таблица на управляемой форме, источником которой является запрос или таб.часть документа, метода НайтиСтроки( почему-то нет, и именно в этом проблема.
буду благодарен если поможете мне его найти. |
|||
33
Тактик
18.09.13
✎
12:11
|
(30) Спмсибо, откуда растет идентификатор понятно.
Осталось разобраться как найти строку |
|||
34
banco
18.09.13
✎
12:11
|
(32) ты путаешь реквизит формы с элементом формы
|
|||
35
Тактик
18.09.13
✎
12:13
|
(34) Виноват, действительно. Речь идет об элементе формы... может сделать его реквизитом?
|
|||
36
banco
18.09.13
✎
12:16
|
(35) подожди, у тебя на форме есть таблица, какой источник(ПутьКДанным) у этой таблицы?
|
|||
37
Eugeneer
18.09.13
✎
12:17
|
Сделай таблицу - табличной частью самой обработки. реквизитом объекта.
|
|||
38
Eugeneer
18.09.13
✎
12:18
|
если у тебя ТЗ не является реквизитом объекта а добавлена как реквизит формы - ты действительно по ней хрен чо сделаешь.
|
|||
39
Defender aka LINN
18.09.13
✎
12:19
|
(38) Маня, если ты не знаешь нифига про управляемые формы - нефиг пытаться других чему-то "учить"
|
|||
40
Eugeneer
18.09.13
✎
12:21
|
(39) я вижу что ты пока ничего не знаешь раз нет результата. А он у меня есть. Я с первого дня выхода УТ11 уже писал обработки.
|
|||
41
banco
18.09.13
✎
12:22
|
(40) но в (38) ты не прав
|
|||
42
olegves
18.09.13
✎
12:23
|
(33)
СтруктураДляПоиска = Новый Структура; СтруктураДляПоиска.Вставить("КлючСвязи", КлючСвязи); нс = Объект.ИмяТабличнойЧасти.НайтиСтроки(СтруктураДляПоиска); ИДстроки = Элементы.ИмяТЧ.ДанныеСтроки(нс[0]).ПолучитьИдентификатор(); |
|||
43
olegves
18.09.13
✎
12:24
|
+ (42) дальше сообразишь?
|
|||
44
Eugeneer
18.09.13
✎
12:26
|
(41) абсолютно прав.
|
|||
45
Defender aka LINN
18.09.13
✎
12:26
|
(40) Маня, ты кретин, не?
|
|||
46
Eugeneer
18.09.13
✎
12:27
|
(42) даже подтверждает это.
Как мы видим Объект.ИмятабличнойЧасти это и есть табличная часть объекта. а не ТЗ добавленная как элемент формы. |
|||
47
Eugeneer
18.09.13
✎
12:27
|
(45) иди нах. с неучами не о чем говорить.
|
|||
48
banco
18.09.13
✎
12:28
|
(46) если будет ТЗ как реквизит формы, тогда просто надо писать имяТЗ.НайтиСтроки()
|
|||
49
Eugeneer
18.09.13
✎
12:35
|
(0) короче не ипите мосх.
Вот из синтаксиса в самой типовой Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ // текст запроса // ... "; Запрос.Текст = ТекстЗапроса; СписокРаботников = Запрос.Выполнить().Выгрузить(); Отбор = Новый Структура(); Отбор.Вставить("ФизЛицо",Справочники.ФизическиеЛица.ПустаяСсылка()); Строки = СписокРаботников.НайтиСтроки(Отбор); Если Строки.Количество() > 0 Тогда ЭлементыФормы.СписокРаботников.ТекущаяСтрока = Строки[0]; КонецЕсли; |
|||
50
olegves
18.09.13
✎
12:36
|
(46) не совсем так, это ТаблицаФормы, а чтобы она стала ТЧ, надо выполнить РеквизитФормыВЗначение()
|
|||
51
Infsams654
18.09.13
✎
12:38
|
(49) какие ЭлементыФормы в УФ ?
|
|||
52
Тактик
18.09.13
✎
13:11
|
УРА! Заработало!
Всем огромное спасибо за помощь. Никто не дал готового решения, но все понемногу подсказали и пазл сложился. Как сделал: 1. На форму добавил реквизит типа "ТаблицаЗначений" (не элемент формы, а именно реквизит), в нем создал необходимые колонки. 2. Запросом заполнил полученный реквизит (РезультатЗапроса.Выгрузить()) 3. Нашел строку содержащую значение в нужной колонке СтруктураДляПоиска = Новый Структура; СтруктураДляПоиска.Вставить("КлючСвязи", КлючСвязи); МассивСтрок = ТаблицаКакРеквизитФормы.НайтиСтроки(СтруктураДляПоиска); 4. Установил текущую строку по индексу. Элементы.ТаблицаНаФорме.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор(); Вывод: ЭлементыФормы только для отображения данных, если нужно сделать что-то еще используйте реквизиты формы. |
|||
53
Мимохожий Однако
18.09.13
✎
13:12
|
(52)Молодца.
|
|||
54
Тактик
18.09.13
✎
13:12
|
В догонку пункт 1.1. - выложил этот реквизит на форму.
|
|||
55
Тактик
18.09.13
✎
13:13
|
Реквизит переименовал в ТаблицаНаФорме
|
|||
56
Eugeneer
18.09.13
✎
13:26
|
(52) ну а я о чем говорил?
Тебе просто оставалось сделать Элементы и к строке дописать .ПолучитьИдентификатор(); |
|||
57
Defender aka LINN
18.09.13
✎
13:32
|
(47) Это ты про себя, что ли?
|
|||
58
Odavid
18.09.13
✎
13:44
|
(45), (47), (57) 1С над вами издевнулась - заставила пергонять впустую туда-сюда бесполезную инфо, что вызывает недопонимание процессов и логики, а вы и рады собачится )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |