Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) как получить Тип и Вид метаданных зная имя таблицы? (число прочтений - 4437 )
At0m
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 16. Октября 2008
как получить Тип и Вид метаданных зная имя таблицы?
16. Октября 2008 :: 11:39
Печать  
Подскажите, как получить Тип и Вид метаданных зная имя таблицы?
Например :
"Справочник.Номенклатура" - это глMDW.ОбрМетаСКЛ("$Справочник.Номенклатура") = SC33
как имея строку "SC33" получить - "Справочник.Номенклатура"?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #1 - 16. Октября 2008 :: 11:43
Печать  
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
At0m
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 16. Октября 2008
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #2 - 16. Октября 2008 :: 12:04
Печать  
Вадимко писал(а) 16. Октября 2008 :: 11:43:
infostart_ru/articles/201/

Спасибо за ссылку, но не понимаю чем она может помочь?

Уточню вопрос:
У меня есть строка = "SC33", как получить Тип и Вид?
Т.е. строку "Справочник" и "Номенклатура"
Можно это сделать с помощью MetaDataWork?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #3 - 16. Октября 2008 :: 12:15
Печать  
Можно так если SC - справочник, т.е тип вообще влегкую )
потом в цикле по всем видам справочников.
  
Наверх
 
IP записан
 
At0m
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 16. Октября 2008
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #4 - 16. Октября 2008 :: 12:21
Печать  
kiruha писал(а) 16. Октября 2008 :: 12:15:
Можно так если SC - справочник, т.е тип вообще влегкую )
потом в цикле по всем видам справочников.


А проще решения нету?
Например, обратного этому - глMDW.ОбрМетаСКЛ("$Справочник.Номенклатура") = SC33
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #5 - 16. Октября 2008 :: 12:57
Печать  
kiruha писал(а) 16. Октября 2008 :: 12:15:
Можно так если SC - справочник, т.е тип вообще влегкую )
потом в цикле по всем видам справочников.

Метаданные.Справочники(33)
или Метаданные.Справочники(32) или Метаданные.Справочники(34) Улыбка
не помню, как идет нумерация
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #6 - 16. Октября 2008 :: 13:20
Печать  
At0m писал(а) 16. Октября 2008 :: 12:21:
kiruha писал(а) 16. Октября 2008 :: 12:15:
Можно так если SC - справочник, т.е тип вообще влегкую )
потом в цикле по всем видам справочников.


А проще решения нету?
Например, обратного этому - глMDW.ОбрМетаСКЛ("$Справочник.Номенклатура") = SC33

Создай т.з с двумя колонками ТЗ_1
ТЗ_1 = СоздатьОбъект("ТаблицаЗначений");
ТЗ_1.НоваяКолонка("Имя_1с","Строка");
ТЗ_1.НоваяКолонка("Имя_sql","Строка");
Имя_1с и имя_sql. Заполнилни строки по всем справочникам методом
Код
Выбрать все
   ТЗ_1.НоваяСтрока();
   ТЗ_1.Имя_1с = <Справочник.ТвойТекущийСправочник>
   ТЗ_1.Имя_sql = глMDW.ОбрМетаСКЛ("$Справочник.ТвойТекущийСправочник")
 



и ищи по второй колонке строку.
в первой колонке будет нужный справочник.
С документами все тоже самое.
  
Наверх
 
IP записан
 
At0m
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 16. Октября 2008
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #7 - 16. Октября 2008 :: 14:38
Печать  

Цитата:
Создай т.з с двумя колонками ТЗ_1


нда... проще уж - "SC" это справочник и т.д. ....  Печаль
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #8 - 16. Октября 2008 :: 17:24
Печать  
At0m писал(а) 16. Октября 2008 :: 12:04:
Спасибо за ссылку, но не понимаю чем она может помочь?


Мдя...

Код
Выбрать все
  МойИД = "SC33";
  ИД = СтрЗаменить(МойИД,"SC","");

Стр = "{" +"""B"""+","+"""0"""+","+"""0"""+","+"""*"""+","+"""0"""+","+"""0"""+","+"""	   0   """+"}";

Стр = СтрЗаменить(Стр, "*", ИД);

Сообщить(ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Стр)) + "." + ЗначениеИзСтрокиВнутр(Стр).Вид());
 


  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #9 - 16. Октября 2008 :: 17:26
Печать  
Неуниверсально и коряво, но теперь я думаю принцип понятен Улыбка
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #10 - 17. Октября 2008 :: 03:44
Печать  
Z1 писал(а) 16. Октября 2008 :: 13:20:
At0m писал(а) 16. Октября 2008 :: 12:21:
kiruha писал(а) 16. Октября 2008 :: 12:15:
Можно так если SC - справочник, т.е тип вообще влегкую )
потом в цикле по всем видам справочников.


А проще решения нету?
Например, обратного этому - глMDW.ОбрМетаСКЛ("$Справочник.Номенклатура") = SC33

Создай т.з с двумя колонками ТЗ_1
ТЗ_1 = СоздатьОбъект("ТаблицаЗначений");
ТЗ_1.НоваяКолонка("Имя_1с","Строка");
ТЗ_1.НоваяКолонка("Имя_sql","Строка");
Имя_1с и имя_sql. Заполнилни строки по всем справочникам методом
Код
Выбрать все
   ТЗ_1.НоваяСтрока();
   ТЗ_1.Имя_1с = <Справочник.ТвойТекущийСправочник>
   ТЗ_1.Имя_sql = глMDW.ОбрМетаСКЛ("$Справочник.ТвойТекущийСправочник")
 



и ищи по второй колонке строку.
в первой колонке будет нужный справочник.
С документами все тоже самое.

Неплохой вариант Улыбка

ЗЫ а можно и в 1С++ в Metadawork добавить спец.метод Улыбка
Если хотите, пишите хотелку в багзиллу.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
At0m
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 16. Октября 2008
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #11 - 17. Октября 2008 :: 06:23
Печать  
2 Вадимко.
Спасибо огромное, за подсказку и терпение. Улыбка
Действительно, все было в первой ссылке.
Заработался... Торможу.... Печаль
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #12 - 17. Октября 2008 :: 06:56
Печать  
Вадимко писал(а) 16. Октября 2008 :: 17:24:
At0m писал(а) 16. Октября 2008 :: 12:04:
Спасибо за ссылку, но не понимаю чем она может помочь?


Мдя...

Код
Выбрать все
  МойИД = "SC33";
  ИД = СтрЗаменить(МойИД,"SC","");
	  
Стр = "{" +"""B"""+","+"""0"""+","+"""0"""+","+"""*"""+","+"""0"""+","+"""0"""+","+"""	   0   """+"}";

Стр = СтрЗаменить(Стр, "*", ИД);

Сообщить(ТипЗначенияСтр(ЗначениеИзСтрокиВнутр(Стр)) + "." + ЗначениеИзСтрокиВнутр(Стр).Вид());
 




А если нет спр. для например SC666 ?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #13 - 17. Октября 2008 :: 06:59
Печать  
Делаю таблицу соответствий а потом к ней соединяюсь:
Код
Выбрать все
	Запрос=глСоединение();
	Метадата=СоздатьОбъект("MetaDataWork");
	ТекстЗапр="
	|IF EXISTS (SELECT *
	|	     FROM sysobjects
	|	     WHERE id = object_id('DocTypes') and objectproperty(id, 'IsUserTable') = 1
	|	    )
	|DROP TABLE DocTypes";
	Запрос.ВыполнитьСкалярный(ТекстЗапр);

	ТекстЗапр="
	|CREATE TABLE DocTypes (ID INT PRIMARY KEY,
	|						ID13 char(4),
	|					    NAME varchar(50) not null,
	|			     O BIT DEFAULT 0,
	|			     B BIT DEFAULT 0,
	|			     R BIT DEFAULT 0
	|			    )";
	Запрос.ВыполнитьСкалярный(ТекстЗапр);
	Запрос.Отладка(1);

	Для икс=1 по Метаданные.Документ() Цикл
		МетаДок = Метаданные.Документ(икс);
		//стр=_IdToStr()
		ТекстЗапр=Шаблон("INSERT INTO DocTypes VALUES ([Метадата.ИДОбъекта(МетаДок)],'[прав(_IdToStr(Метадата.ИДОбъекта(МетаДок)),4)]' , '[МетаДок.Идентификатор]', [МетаДок.ОперативныйУчет], [МетаДок.БухгалтерскийУчет], [МетаДок.Расчет])");
		Запрос.ВыполнитьСкалярный(ТекстЗапр);
	КонецЦикла;

 


думаю по аналогии можно сделать и справочники.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: как получить Тип и Вид метаданных зная имя таблицы?
Ответ #14 - 17. Октября 2008 :: 08:54
Печать  
kiruha писал(а) 17. Октября 2008 :: 06:56:
А если нет спр. для например SC666 ?


Проверять сначала на пустое значение ТипЗначенияСтр() Улыбка
Говорю же коряво и для постобработки
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать