Имя: Пароль:
1C
 
Как обратиться к реквизиту формы, а не к элементу формы?
0 golem14
 
10.12.21
09:23
Добавил на форму реквизит формы ТЗ с типом ТаблицаЗначений.
Заполнил его.
Теперь хочу на клиенте в этой ТЗ найти строку
ЭтотОбъект["ТЗ"].Найти()
Получаю ошибку "Метод объекта не обнаружен (Найти)".
Потому что ЭтотОбъект["ТЗ"] имеет тип ДанныеФормыКолекции.
Как мне обратиться к реквизиту формы ТЗ, а не к элементу формы?
1 Ненавижу 1С
 
гуру
10.12.21
09:25
(0) Найти это как-то не по фэньшую, используй НайтиСтроки
2 golem14
 
10.12.21
09:29
(1) спасибо, НайтиСтроки работает
3 Kassern
 
10.12.21
09:32
(0) РеквизитФормыВЗначение("ТЗ")
4 Ненавижу 1С
 
гуру
10.12.21
09:34
(3) НайтиСтроки умеет на клиенте
5 golem14
 
10.12.21
09:37
(3) Метод недоступен на клиенте
6 Kassern
 
10.12.21
09:37
(4) я в курсе, просто подсказал по теме топика, как получить ТЗ из коллекции. Может потом ТС захочет в запрос таблицу пихнуть.
7 Kassern
 
10.12.21
09:38
(5) а у вас где-то в топике указано, что обязательно на клиенте нужно?
8 Kassern
 
10.12.21
09:39
вопрос был как обратиться, я и ответил
9 golem14
 
10.12.21
09:39
так всё-таки не понятно почему по  ЭтотОбъект["ТЗ"]
получаю не реквизит формы ТЗ с типом ТаблицаЗначений а элемент формы?
10 Kassern
 
10.12.21
09:40
(9) потому что ТЗ нет на клиенте, там только коллекции. Почитайте за клиент-серверное взаимодействие
11 golem14
 
10.12.21
09:46
(10) понятно, то еть таблицазначений которая на форме она как таблицазначений только на сервере, а на клиенте она как ДанныеФормыКолекции.
12 golem14
 
10.12.21
09:48
и метод НайтиСтроки() в данном случае это не метод ТаблицыЗначений, а метод ДанныеФормыКоллекция.
13 Kassern
 
10.12.21
09:49
(12) именно так, хотя у ТЗ так же есть этот метод.
14 Ненавижу 1С
 
гуру
10.12.21
09:50
(9) не элемент, а реквизит получается, но они да - вот такие
(6) а может и нет, что и подтвердилось в (7)
15 golem14
 
10.12.21
09:58
(14) не реквизит а представление реквизита на клиенте, с типом ДанныеФормыКоллекция.
16 Kassern
 
10.12.21
10:02
Не надо путать понятия:
ЭлементФормы - Это то, что вы на форму перетащили, обращаться можно через Элементы.ВашЭлемент //тут можно управлять видимостью, доступностью и т.д.
РеквизитФормы - Это те реквизиты, которые были созданы на вкладке "Реквизиты" в форме. обращаться к ним можно сразу ВашРеквизит, без ЭтотОбъект.
РеквизитОбъекта - Эту же объекты добавленные в структуру конфигурации/обработки, к ним можно обращаться в модуле объекта. Чтобы к ним обратиться на форме, можно использовать Объект.ВашРеквизит.
Поэтому обращаясь ЭтотОбъект["ТЗ"]  вы получаете не элемент формы, а его реквизит, только с типом коллекция, а не ТЗ, так как последний на клиенте не работает.
17 Kassern
 
10.12.21
10:02
(16) это к (9)
18 golem14
 
10.12.21
10:12
(16) Объект.ТЗ это тоже ДанныеФормыКоллекция.
19 Ненавижу 1С
 
гуру
10.12.21
10:18
(15) новые термины))) поверь оно на сервере тоже ДанныеФормыКоллекция
20 golem14
 
10.12.21
10:38
(19) точно, пока не применить РеквизитФормыВЗначение()
21 Ненавижу 1С
 
гуру
10.12.21
10:40
(20) а когда применить - оно к форме никакого отношения не имеет - пока обратно не сделаешь ЗначениеВРеквизитФормы
22 Kassern
 
10.12.21
10:50
(18) "Объект.ТЗ" Вы не сможете таким образом обратиться, если ТЗ лишь реквизит формы. Словите "Поле объекта не обнаружено (ТЗ)"
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн