|
Приведение к универсальному виду | ☑ | ||
---|---|---|---|---|
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) На случай, если понадобится кому нибудь, такому же как я :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |