Имя: Пароль:
1C
1С v8
Обход метаданных и получение имени макета
0 frau
 
23.05.18
12:11
Всем привет! Для решения задачи необходимо вытащить имена всех печатных форм всех документов. Т.е.должно выйти что-то вроде ТЧ 2 колонки
Документ+ИмяМакета (так как в одном документе их может быть несколько) и флаг(булево).

Создала реквизит формы - ТЧ. В модуле формы пытаюсь вытащить данные.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    СписокПечатныхФорм(ТЧ);
КонецПроцедуры

&НаСервере
Процедура СписокПечатныхФорм (ТЧ)
    
МассивИмен = Новый Массив();
    Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
        Сообщить(ОбъектМетаданных);
    КонецЦикла;

КонецПроцедуры

Пока пытаюсь получить
Выходит, естественно, чушь. Буду благодарна за пинок в нужное направление (кроме как закрыть конфигуратор и варить борщ)
1 Greeen
 
23.05.18
12:15
Как то так вроде
Метаданные.Документы.<имядокумета>.Макеты
2 frau
 
23.05.18
12:41
У меня несколько десятков видов документов. Выходит, надо все таки руками все прописывать?
3 Мыш
 
23.05.18
12:44
(2) Вложенные циклы помогут
4 catena
 
23.05.18
12:53
(2)
Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
    Сообщить(ОбъектМетаданных);
    Для Каждого текМакет из Метаданные.Документы[ОбъектМетаданных.Имя].Макеты Цикл
        Сообщить(текМакет);
    КонецЦикла;    
КонецЦикла;
5 frau
 
24.05.18
09:41
(4)  Метаданные.Документы[ОбъектМетаданных.Имя].Макеты
это сработало!Большое Спасибо!

Немного оптимизировала

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Док = Новый Массив();
    Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
        
        
        Для Каждого Макет Из Метаданные.Документы[ОбъектМетаданных.Имя].Макеты Цикл
            
            
            ДокументМакет = ОбъектМетаданных.Синоним +"\"+ Макет.Синоним;
            Сообщить(ДокументМакет);
            ДокументМакет = ТЧ.Добавить();
            
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

но теперь не знаю как выводить на форму. Циклично строки добавляются, но пустые
6 catena
 
24.05.18
11:17
(5)ТЧ.Добавить() - возвращает ссылку на добавленную строку, а не заполняет ее. Реквизиты придется прописывать самостоятельно.
стр = ТЧ.Добавить();
стр.Наименование = Наименование;
стр.Использовать = Истина
и т.д.
7 DrShad
 
24.05.18
11:35
а самое прикольное, что не все печатные формы это макеты привязанные к объекту как макет )))
8 DrShad
 
24.05.18
11:39
если БД на базе БСП то есть для этого целый общий модуль
9 frau
 
29.05.18
12:55
(6) Сама разобралась, но за ответ - спасибо)
(8) Можно подробнее? Или где почитать? Я так поняла, что еще в Общие->макеты хранятся печатные формы.