Имя: Пароль:
1C
1C 7.7
v7: Обход метаданных в цикле
0 Масянька
 
17.05.17
08:58
День добрый!
Гуглила - не нагуглила...
Вариант обойти все метаданные в одном цикле, а не каждый отдельно?
Спасибо.
1 Ёпрст
 
17.05.17
09:01
че ?
2 Ёпрст
 
17.05.17
09:02
скачай ужо als от 427 по метаданным, там усё есть
3 Ёпрст
 
17.05.17
09:05
4 Масянька
 
17.05.17
09:06
(1) Блин... Я не знаю, как объяснить...
Не цикл для Метаданные.Документ() и пр., а (например) Метаданные[Массив].
5 Масянька
 
17.05.17
09:08
(2) Если женщина хочет :)))
6 Смотрящий
 
17.05.17
09:11
Массив чего ?
7 Масянька
 
17.05.17
09:12
СписокОбъектов = СоздатьОбъект("СписокЗначений");
    
    СписокОбъектов.ДобавитьЗначение("Константы");
    СписокОбъектов.ДобавитьЗначение("Справочники");
    СписокОбъектов.ДобавитьЗначение("Документы");
    СписокОбъектов.ДобавитьЗначение("Перечисления");
    СписокОбъектов.ДобавитьЗначение("Отчеты");
    СписокОбъектов.ДобавитьЗначение("Обработки");
    СписокОбъектов.ДобавитьЗначение("Виды субконто");
    СписокОбъектов.ДобавитьЗначение("Нумераторы");
    СписокОбъектов.ДобавитьЗначение("Графы отбора");
    СписокОбъектов.ДобавитьЗначение("Журналы");
    СписокОбъектов.ДобавитьЗначение("Общ.рекв.док");
    СписокОбъектов.ДобавитьЗначение("Регистры");
    СписокОбъектов.ДобавитьЗначение("Журн.расчетов");
    
    
    Для Счетчик = 1 По СписокОбъектов.РазмерСписка() Цикл
        мТекОбъект = СписокОбъектов.ПолучитьЗначение(Счетчик);    


И как теперь достучаться до метаданных?
8 Смотрящий
 
17.05.17
09:18
Процедура ОбработкаКонстант()
   Для I = 1 По Метаданные.Константа() Цикл
   ...
   КонецЦикла;
КонецПроцедуры

Если мТекОбъект = "Константы" Тогда
    ОбработкаКонстант();
ИначеЕсли мТекОбъект = "Справочники" Тогда
...

Как то так
9 Масянька
 
17.05.17
09:20
(8) А вот вместо "Для I = 1 По Метаданные.Константа() Цикл" вариант (что-то типа) "Для I = 1 По Метаданные.СписокОбъектов Цикл"?
Хочу без отдельных циклов.
Вариант?
10 Смотрящий
 
17.05.17
09:21
(9) Тама (3) все расписано )
11 linoblack
 
17.05.17
10:23
(9) используй функцию Шаблон для подстановки в цикл содержимого переменной
12 linoblack
 
17.05.17
10:24
в шапку цикла
13 Масянька
 
17.05.17
10:26
(11) Ткни примером, пожалуйста.
14 linoblack
 
17.05.17
10:29
по аналогии

Процедура ОбработкаБуквеннойКнопки(НомерКнопки)           
    Буква = Шаблон("["+"Форма.Кнопка"+НомерКнопки+".Заголовок()"+"]");    
    Если ВводимыйТекст = "" Тогда    
        ВводимыйТекст = Буква;
    Иначе                         
        ВводимыйТекст = ВводимыйТекст + Буква;
    КонецЕсли;    
КонецПроцедуры
15 linoblack
 
17.05.17
10:31
в этой процедуре идет обращение к имени реквизита формы в неявном виде, а формируемым функцией шаблон из явно заданного текста и ЗНАЧЕНИЯ переменно НомерКнопки. тебе в обявлении цикла нужно что-то подобное задать
16 linoblack
 
17.05.17
10:32
но циклов наверно будет два - один для перебора групп метаданных, второй для перебора содержимого групп
17 Масянька
 
17.05.17
10:33
(15) Именно.
(16) Именно. Но не десять оригинальных.
(14) Спасибо. Пробую.
18 Ёпрст
 
17.05.17
10:35
ТКВ ?
19 orefkov
 
17.05.17
10:36
В опенконфе в скриптах можно перебирать все метаданные циклом, а вот в режиме предприятия только хардкодить, к сожалению.
20 Масянька
 
17.05.17
10:37
(19) Я вот порылась - везде только явно.
То есть - не вариант?
21 Ёпрст
 
17.05.17
10:37
ну, можно еще activemd посмотреть, не помню ужо, как там метаданные выгребаются.
Вот только, зачем это всё ?
22 Масянька
 
17.05.17
10:38
(21) Зацепило (так сойдет?)
23 Масянька
 
17.05.17
10:38
(18) Терское Казачье Войско?
24 Ёпрст
 
17.05.17
10:42
(23) Традицинный китайский вопрос - а на куа ?
25 Масянька
 
17.05.17
10:45
Вот так:
Сообщить("! - " + мТекОбъект);
        мТекДанные = Шаблон("[Метаданные."+мТекОбъект+"()]");
Сообщить("кол-во - " + мТекДанные);    

Ругается:
! - Константы
Поле агрегатного объекта не обнаружено (Константы)
кол-во - [Метаданные.Константы()]
26 Масянька
 
17.05.17
10:46
(25) Не ругается - мой косяк.
27 Zmich
 
17.05.17
10:49
(24). Метаданные.Константа(), а не Константы().
28 Масянька
 
17.05.17
10:54
(27) Говорю же - мой косяк.
29 Масянька
 
17.05.17
10:56
(15) (16) Огромное человеческое СПАСИБО :)))))
30 linoblack
 
17.05.17
11:15
(29) та не за что. это Zmich спасибо. ткнул меня недавно носом в нужное http://dml.compkaluga.ru/forum/index.php?showtopic=35958
31 Масянька
 
17.05.17
12:01
(30) Век живи - век учись (С) (без продолжения!!!)
Тады, и товарищу Zmich тоже спасибо.