Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Обход метаданных и получение имени макета

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует