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


Приведение к универсальному виду

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

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

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

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

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

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

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