Имя: Пароль:
1C
 
Приведение к универсальному виду
,
0 LeoKeyn
 
26.10.17
16:30
МассивИменМетаданных = Новый Массив();
            МассивИменМетаданных.Добавить("Документ.СудебноеРешениеПоИску");
            т = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
        
                Для каждого стр из т цикл
                
                    Область.Параметры.Индекс = стр.ИмяТаблицыХранения;
                    Область.Параметры.Реквизит = стр.Метаданные;
                    ТабДокумент.Вывести(Область);
                    Область.Параметры.Тип = "";
                    Если стр.Метаданные = "Документ.СудебноеРешениеПоИску" тогда
                        мета = Метаданные.Документы.СудебноеРешениеПоИску.Реквизиты;
                    ИначеЕсли  стр.Метаданные = "Документ.СудебноеРешениеПоИску.ТабличнаяЧасть.ДополнительныеРеквизиты" тогда
                        мета = Метаданные.Документы.СудебноеРешениеПоИску.ТабличныеЧасти.ДополнительныеРеквизиты.Реквизиты;
                    ИначеЕсли  стр.Метаданные = "Документ.СудебноеРешениеПоИску.ТабличнаяЧасть.ВводОстатков" тогда
                        мета = Метаданные.Документы.СудебноеРешениеПоИску.ТабличныеЧасти.ВводОстатков.Реквизиты;
                    КонецЕсли;
                    Для каждого стр1 из стр.Поля цикл
                        Область.Параметры.Индекс = стр1.ИмяПоляХранения;
                        Область.Параметры.Реквизит = стр1.ИмяПоля;
                        
                            Для Каждого мет из мета цикл
                                Если мет.имя = стр1.ИмяПоля  Тогда
                                    Область.Параметры.Тип = мет.Тип;
                                    Прервать;
                                КонецЕсли;
                            КонецЦикла;
                            ТабДокумент.Вывести(Область);
                        КонецЦикла;
                
                    
            КонецЦикла;

            
           Возврат ТабДокумент;

Помогите универсализировать, кому не лень конечно, а то мне никак почему то, голова плывет уже :)
1 h-sp
 
26.10.17
16:35
вот тут что-то похоже на бред

Если стр.Метаданные = "Документ.СудебноеРешениеПоИску" тогда

сравниваете метаданное с обычным куском текста.
2 LeoKeyn
 
26.10.17
16:37
(1) это предсталение метаданных и оно работает, только вот топрно, мне нужно сделать, чтобы он сам понимал какая перед ним таб часть и присваивал Метаданные.Документы.СудебноеРешениеПоИску.ТабличныеЧасти.ДополнительныеРеквизиты.Реквизиты; например это автоматом
3 elCust
 
26.10.17
16:48
(0) А привод то какой нужен передний или полный?
(2) Используй функцию ТипЗнч()
4 LeoKeyn
 
26.10.17
17:08
(3) Увы, не получается ничего с этим придумать
5 Fish
 
26.10.17
17:12
(4) Ну оставь так. Работает ведь?
6 LeoKeyn
 
26.10.17
17:14
(5) так нужно сделать, чтобы он разные документы так грузил, а табличные части у всех разные :(
7 Fish
 
26.10.17
17:17
(6) Цикл по метаданным и рекурсия тебе в помощь. Можно и без рекурсии обойтись - вложенными циклами.
8 Филиал-msk
 
26.10.17
17:19
Есть такой метод, НайтиПоПолномуИмени называется...
9 LeoKeyn
 
26.10.17
17:22
(7) так у меня и так циклы, только я не знаю как их построить то логичнее
10 dezss
 
26.10.17
17:23
(6) вообще во все табчати всех документов, у которых есть реквизиты с таким именем?
11 LeoKeyn
 
26.10.17
17:24
(10) нет, обойти все реквизиты(включая таб части) и вывести в документ SQL имя реквизита, обычное имя и его тип данных. По разным документам это все
12 LeoKeyn
 
26.10.17
17:25
(8) а можно поподробней про него?)
13 mehfk
 
26.10.17
17:25
(12) Плохо, плохо без ДенисаЧ, некому даже СП продавать...
14 dezss
 
26.10.17
17:30
(11) Принцип, думаю, будет понятен
Для каждого документ Из Метаданные.Документы Цикл
   Для каждого реквизит из документ.Реквизиты Цикл
   КонецЦикла
   Для каждого табчасть из документ.ТабличныеЧасти Цикл
       Для каждого рек из табчасть.Реквизиты Цикл
       КонецЦикла
   КонецЦикла
КонецЦикла
15 LeoKeyn
 
26.10.17
17:33
(14) В итоге будет то же, что и у меня, если я правильно понимаю :) может и нет, извиняюсь если туплю
16 dezss
 
26.10.17
17:35
(15) Не будет
Если стр.Метаданные = "Документ.СудебноеРешениеПоИску" тогда

Он просто будет тупо обходить все метаданные документа...вернее, все реквизиты и все реквизиты табчастей
17 LeoKeyn
 
03.11.17
12:52
Я Додумкал)))
ИмяМетаДляОбращения = Строка(Лев(ВидОбъекта,СтрДлина(ВидОбъекта)-1)+"."+ОбъектСохраняемый);
               МассивИменМетаданных = Новый Массив();
            МассивИменМетаданных.Добавить(ИмяМетаДляОбращения);
            т = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
        
                Для каждого стр из т цикл
                
                    Область.Параметры.Индекс = стр.ИмяТаблицыХранения;
                    Область.Параметры.Реквизит = стр.Метаданные;
                    Область.Параметры.Тип = "";
                    ТабДокумент.Вывести(Область);
                    
                    Строка = СтрРазделить(стр.Метаданные,".");
                    Попытка
                            мета = Метаданные[ВидОбъекта][Строка[1]].ТабличныеЧасти[Строка[3]].Реквизиты;
                    исключение
                            мета = Метаданные[ВидОбъекта][Строка[1]].Реквизиты;
                    КонецПопытки;
                    
                    
                    Для каждого стр1 из стр.Поля цикл
                        Область.Параметры.Индекс = стр1.ИмяПоляХранения;
                        Область.Параметры.Реквизит = стр1.ИмяПоля;
                        
                        
                        
                        
                        
                
                        Для Каждого мет из мета цикл
                            проверка = 0;
                                Если мет.имя = стр1.ИмяПоля  Тогда
                                    Область.Параметры.Тип = мет.Тип;
                                    проверка = 1;
                                    Прервать;
                                КонецЕсли;
                            КонецЦикла;
                            
                                                            
                            ТабДокумент.Вывести(Область);
                    КонецЦикла;
                
                    
            КонецЦикла;
18 LeoKeyn
 
03.11.17
12:53
(17) На случай, если понадобится кому нибудь, такому же как я :-)