Имя: Пароль:
1C
1С v8
Метаданные
0 Начинающий_13
 
23.02.15
17:27
Здравствуйте
УФ 8.3
Как получить все метаданные обработки без определения ее имени в самой обработке?

    МетаданныеОбработки = Метаданные.НайтиПоТипу(ТипЗнч(Обработки.ПечатьНакладных));

// это в документе
    //МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(ПустаяСсылка()));
1 ShoGUN
 
23.02.15
17:34
(0) Если я правильно понял вопрос, то
МетаданныеОбработки = Обработки.ПечатьНакладных.Получить().Метаданные();
2 ShoGUN
 
23.02.15
17:34
Пардон
МетаданныеОбработки = Обработки.ПечатьНакладных.Создать().Метаданные();
3 Начинающий_13
 
23.02.15
17:35
Я хочу избавиться от имени ПечатьНакладных
4 Начинающий_13
 
23.02.15
17:35
Заменить на что надо  ??
5 Начинающий_13
 
23.02.15
17:36
Как в документе (ПустаяСсылка)
МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(ПустаяСсылка()));
и экспортируешь все сразу куда надо
6 ShoGUN
 
23.02.15
17:36
(4) Смотря где. В модуле самой обработки? ЭтотОбъект. Или просто Метаданные(). Если ещё где-то надо обратиться - скажи, где.
7 Начинающий_13
 
23.02.15
17:38
Я уже перепробовал все ВСЕГДА ошибка вылетает
8 ShoGUN
 
23.02.15
17:38
Какая задача вообще изначально? Метаданные всех обработок выгрузить куда-то?
9 ShoGUN
 
23.02.15
17:39
(7) ЧТО и ЗАЧЕМ ты делаешь? Задача какая?
10 Начинающий_13
 
23.02.15
17:39
Да записать в ХранилищеЗначений
11 Начинающий_13
 
23.02.15
17:39
Все и сразу
12 ShoGUN
 
23.02.15
17:41
(10) Ну и?
Для каждого Обработка Из Обработки Цикл
МетаданныеОбработки = Обработка.Создать().Метаданные();
КонецЦикла;

Не катит?
13 Wobland
 
23.02.15
17:42
(12) что-то не похоже на "избавиться от имени ПечатьНакладных" ;)
14 ShoGUN
 
23.02.15
17:44
(13) ЗАДАЧУ ОЗВУЧЬ!
Нельзя избавиться от имени обработки при выгрузке метаданных конкретной обработки, потому что как бе надо понять какую же конкретную обработку мы выгружать собираемся. А (12) перебирает метаданные всех обработок.
15 ShoGUN
 
23.02.15
17:45
(13) Тьфу ты, я думал это ТС :) Дятлизм какой-то...
16 Начинающий_13
 
23.02.15
17:47
У меня есть обработка ПечатьНакладных в ней заполянются данные для печати самой накладной (место погрузки , разгрузки перевозчик и т.д.) Данные хочу сохранять в хранилище. Все решил. по записи в регистр и получения из регистра. хочу сделать еще лучще и измбавиться от имени обработки
17 Начинающий_13
 
23.02.15
17:48
НИкаких ссылок на обработку при этом не надо.
18 ShoGUN
 
23.02.15
17:48
(16) Показывай код.
19 Wobland
 
23.02.15
17:48
(16) как насчёт избавиться от обработки? и чем лучше
20 ShoGUN
 
23.02.15
17:49
Идиотизм какой-то. Данные документа должны храниться в документе.
21 prog-Igor
 
23.02.15
17:49
покажите код!
22 Начинающий_13
 
23.02.15
17:49
&НаСервере
Процедура СохранитьНастройкиПечатиДокументов()
    
    //МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(ПустаяСсылка()));
    МетаданныеОбработки = Метаданные.НайтиПоТипу(ТипЗнч(Обработки.ПечатьНакладных)); /// ?????
                          
    Если ЗначениеЗаполнено(Объект.СсылкаНаОбъект) Тогда
        
        //сформируем структуру настроек
        СтруктураНастроек = новый Структура;
        //Для каждого Ключ Из Объект.Метаданные().Реквизиты Цикл
        Для каждого Ключ Из МетаданныеОбработки.Реквизиты Цикл
            СтруктураНастроек.Вставить(Ключ.Имя,Объект[Ключ.Имя]);
        КонецЦикла;
        
        //Для каждого ТЧ Из Объект.Метаданные().ТабличныеЧасти Цикл
        Для каждого ТЧ Из МетаданныеОбработки.ТабличныеЧасти Цикл
            СтруктураНастроек.Вставить(ТЧ.Имя,Объект[ТЧ.Имя].Выгрузить());
        КонецЦикла;
        
        НаборЗаписей = РегистрыСведений.ХранилищеДанныхПечатиНакладных.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.ДокументСсылка.Установить(Объект.СсылкаНаОбъект);
        НаборЗаписей.Отбор.Обработка.Установить(Строка(Объект));
        НаборЗаписей.Прочитать();
        Если НаборЗаписей.Количество() = 0 Тогда
            
            НоваяЗапись = НаборЗаписей.Добавить();
            НоваяЗапись.Настройка = Новый ХранилищеЗначения(СтруктураНастроек);
            НоваяЗапись.ДокументСсылка = Объект.СсылкаНаОбъект;
            НоваяЗапись.Обработка      = Строка(Объект);
            
        Иначе
            //перезапишем настройку
            Запись = НаборЗаписей[0];
            Запись.Настройка = Новый ХранилищеЗначения(СтруктураНастроек);
            
        КонецЕсли;
        
        НаборЗаписей.Записать();
    КонецЕсли;
    
КонецПроцедуры
23 Начинающий_13
 
23.02.15
17:50
Все прекрасно работает
24 ILM
 
гуру
23.02.15
17:52
(14) Первое правило обработки: - никому не рассказывать про  имя обработки)))
Сохраняйте в структуру как простой ключ и значение, потом уже упакуйте в хранилище
25 Wobland
 
23.02.15
17:52
(22) ну избавься от обработки совсем и имена сохраняемых реквизитов тащи откуда-нибудь ещё
26 ILM
 
гуру
23.02.15
17:52
О уже написали
27 Wobland
 
23.02.15
17:53
можно обработку переименовать в Людмилу. тогда обращение по имени не будет таким противным
28 ShoGUN
 
23.02.15
17:54
(22) Ну и чего? Если ты хочешь сделать универсальную процедуру - передавай в неё имя/объект обработки. А иначе как ты от имени избавишься - непонятно, для какой же обработки эти настройки.
29 ShoGUN
 
23.02.15
17:55
Или тут просто беда с преобразованием данных форму в объект? :))
30 Начинающий_13
 
23.02.15
17:55
Я как раз универсальную и хочу сделать для отчетов потом пойдет еще
31 Начинающий_13
 
23.02.15
17:58
(28) Мысль потом проверю
32 Начинающий_13
 
23.02.15
18:00
Спасибо Работа уже заканчивается пора идти.
33 ShoGUN
 
23.02.15
18:00
(30) Может тебе надо
МетаданныеОбработки = РеквизитФормыВЗначение("Объект").Метаданные();

?

Спрашивал же в (6)...
34 ShoGUN
 
23.02.15
18:01
Но (28) это не отменяет.