Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Все-таки, можно ли запросом получить вид документа (число прочтений - 2379 )
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Все-таки, можно ли запросом получить вид документа
01. Июля 2008 :: 11:24
Печать  
Именно строкой, а не id вида?
  
Наверх
ICQ  
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Все-таки, можно ли запросом получить вид докум
Ответ #1 - 01. Июля 2008 :: 11:42
Печать  
Собственно, задача была такая - статистика документов по видам и базам.
Решить-то задачку решил выгрузкой в ТЗ.  Но хотел сразу в КубикБерездетского Улыбка  выгрузить, и там покрутить...
Академический интерес остался...
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Все-таки, можно ли запросом получить вид докум
Ответ #2 - 01. Июля 2008 :: 12:05
Печать  
Если у тебя SQL, то можно:
Цитата:
{ВидДокумента|DocumentKind}      int - вид документа SQL формат
char(4) - вид документа SQL формат (база 36)
{ВидДокументаПредставление|DocumentKindPresent}      int - вид документа SQL формат
char(4) - вид документа SQL формат (база 36)

Если ДБФ - используй 1sqlite
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Все-таки, можно ли запросом получить вид докум
Ответ #3 - 01. Июля 2008 :: 13:03
Печать  
Для ДБФ(vfpoledb)
В процедуре перед началом работы
Код
Выбрать все
Процедура СоздатьТаблицуВидов()
	ОлеДБ = СоздатьОбъект("OLEDBData");
	Рез=ОлеДБ.Соединение("
	|Provider=VFPOLEDB.1;
	//	|Deleted=Yes;
	|Null = Yes;
	|Exclusive = No;
	|SourceType = DBF;
	|Data Source=" + КаталогИБ() + ";
	|Mode=ReadWrite;
	|Extended Properties="""";
	|User ID="""";
	|Password="""";
	|Mask Password=False;
	|Collating Sequence=MACHINE;
	|DSN=""""");
	МД = СоздатьОбъект("MetaDataWork");
	ОлеДБКоманда = ОлеДБ.СоздатьКоманду();
	ОлеДБКоманда.Выполнить("EXECSCRIPT('CREATE CURSOR VidDocument (IDDOCDEF Character(4) ,Vid Character(30),Predstavlenie Character(30)) ')");


	Для ИИ=1 По Метаданные.Документ() Цикл
		ДокИИ=Метаданные.Документ(ИИ);
		Представление=ДокИИ.Представление();
		Идентификатор=ДокИИ.Идентификатор;
		ИДДокумента= МД.ИДДокумента(Идентификатор);  
		//IDDOCDEF=МД.ЧислоВСтроку(ИДДокумента,36);
		IDDOCDEFКратко=СокрЛП(МД.ЧислоВСтроку(ИДДокумента,36));
		ДлинаВида=СтрДлина(IDDOCDEFКратко);
		СтрПробелов="";
		Если ДлинаВида=1 Тогда  СтрПробелов="   ";
		ИначеЕсли ДлинаВида=2 Тогда СтрПробелов="  ";
		ИначеЕсли ДлинаВида=3 Тогда  СтрПробелов=" ";
		КонецЕсли;
		IDDOCDEF=СтрПробелов+IDDOCDEFКратко;
		ТекстЗапроса="INSERT INTO VidDocument (IDDOCDEF,Vid,Predstavlenie )   VALUES ('"+IDDOCDEF+"','"+Идентификатор+"','"+Представление+"')";
		ОлеДБКоманда.Выполнить(ТекстЗапроса);
	КонецЦикла;
//Для истинных ценителей скорости добавим индекс
ОлеДБКоманда.Выполнить("EXECSCRIPT('INDEX ON VidDocument.IDDOCDEF TAG INDIDD')");


//    Тест кому интересно
//	тз=ОлеДБКоманда.ВыполнитьиНСТРУКЦИЮ("Select * from VidDocument ");
//	тз.ВыбратьСтроку();

КонецПроцедуры 


Выполняется около 0.1 сек.
Создает временную таблицу(курсор) VidDocument c полями
IDDOCDEF,Vid(Вид),Predstavlenie (Представление)

К ней можно цепляться в запросах
ОлеДБ должна быть глобальной переменной и курсор действует в рамках сессии этой ОлеДБ
(Но можно готовить таблицу и в локальной обработке - временные затраты достаточно малы)
« Последняя редакция: 17. Июля 2008 :: 08:33 - kiruha »  
Наверх
 
IP записан
 
Mikeware
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 262
Зарегистрирован: 27. Июля 2006
Пол: Мужской
Re: Все-таки, можно ли запросом получить вид докум
Ответ #4 - 01. Июля 2008 :: 13:39
Печать  
kiruha писал(а) 01. Июля 2008 :: 13:03:
 

С временной таблицей - запросто, просто искал "тайный типизатор" Улыбка из iddocdef в текстовое представление.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать