Имя: Пароль:
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) "Объект.ТЗ" Вы не сможете таким образом обратиться, если ТЗ лишь реквизит формы. Словите "Поле объекта не обнаружено (ТЗ)"
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn