Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Прямой запрос к БИ без AccountsRecordset (число прочтений - 1576 )
NFF
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 19. Июня 2008
Прямой запрос к БИ без AccountsRecordset
24. Июня 2009 :: 08:17
Печать  
Как сформировать прямой запрос к БИ без AccountsRecordset аналог:
Код
Выбрать все
ИТ=СоздатьОбъект("БухгалтерскиеИтоги");
ИТ.ИспользоватьСубконто(ВидыСубконто.МестаХранения);
ИТ.ИспользоватьСубконто(ВидыСубконто.Материалы);
Ит.ВыполнитьЗапрос(НДата,КонДата,"10","60",,3,"Операция",5) = 0

ИТ.ВыбратьСубконто(2);
Пока ИТ.ПолучитьСубконто(2) = 1 Цикл
	Если ИТ.СКД("К")=0 Тогда
		Продолжить;
	КонецЕсли;
      Субконто2 = ИТ.Субконто(2);
       ТЗДокум=СоздатьОбъект("ТаблицаЗначений");
	ТЗДокум.НоваяКолонка("ДатаДок");
	ТЗДокум.НоваяКолонка("Колво");
	ТЗДокум.НоваяКолонка("Сумма");
ИТ.ВыбратьПериоды();
	Пока ИТ.ПолучитьПериод()=1 Цикл
		Если ИТ.ДО("К")=0 Тогда
			Продолжить;
		КонецЕсли;
		ТЗДокум.НоваяСтрока();
		ТЗДокум.ДатаДок = ИТ.Операция.Документ.ДатаДок;
		ТЗДокум.Колво   = ИТ.ДО("К");
		ТЗДокум.Сумма   = ИТ.ДО("С");
	КонецЦикла;
КонецЦикла;
Если ТЗДокум.КоличествоСтрок()<>0 Тогда
		ТЗ_ТекЦены.НоваяСтрока();
		ТЗ_ТекЦены.Код 		= СокрЛП(Субконто2.Код);
		ТЗ_ТекЦены.Материал = СокрЛП(Субконто2.Наименование);
		ТЗ_ТекЦены.Колво    = ИТ.ДО("К");
		ТЗ_ТекЦены.Сумма    = ИТ.ДО("С");
		ТЗ_ТекЦены.Докум 	= ТЗДокум;
КонецЕсли;
КонецЦикла;
 

  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Прямой запрос к БИ без AccountsRecordset
Ответ #1 - 24. Июня 2009 :: 08:36
Печать  
Ну ты же обороты смотришь, сделай запрос к _1SEntry, здесь проводки лежат, сверни все по документу.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Прямой запрос к БИ без AccountsRecordset
Ответ #2 - 24. Июня 2009 :: 09:15
Печать  
кусок из кода с запросом к бух итогам, может поможет разобраться
Код
Выбрать все
	ТекстЗапроса = "
	|set nocount on
	|insert into #ttls__
	|select
	|  РазделительУчета               РазделительУчета,
	|  Счет                           Счет,
	|  Валюта                         Валюта,
	|  Субконто1                      Субконто1,
	|  Субконто1_вид                  Субконто1_вид,
	|  Субконто2                      Субконто2,
	|  Субконто2_вид                  Субконто2_вид,
	|  Субконто3                      Субконто3,
	|  Субконто3_вид                  Субконто3_вид,
	|  Субконто4                      Субконто4,
	|  Субконто4_вид                  Субконто4_вид,
	|  Субконто5                      Субконто5,
	|  Субконто5_вид                  Субконто5_вид,
	|  sum(СуммаОстаток)              СуммаОстаток,
	|  sum(ВалютнаяСуммаОстаток)      ВалютнаяСуммаОстаток,
	|  sum(КоличествоОстаток)         КоличествоОстаток
	|from
	|  (
	|   select  
	|    _1sbkttl_vt.sp599                        РазделительУчета,
	|    _1sbkttl_vt.accid                        Счет,
	|    _1sbkttl_vt.currid                       Валюта,
	|    _1sbkttl_vt.sc0                          Субконто1,
	|    _1sbkttl_vt.vsc0                         Субконто1_вид,
	|    _1sbkttl_vt.sc1                          Субконто2,
	|    _1sbkttl_vt.vsc1                         Субконто2_вид,
	|    _1sbkttl_vt.sc2                          Субконто3,
	|    _1sbkttl_vt.vsc2                         Субконто3_вид,
	|    _1sbkttl_vt.sc3                          Субконто4,
	|    _1sbkttl_vt.vsc3                         Субконто4_вид,
	|    _1sbkttl_vt.sc4                          Субконто5,
	|    _1sbkttl_vt.vsc4                         Субконто5_вид,
	|    case when kind = '1' then "+стрВыражениеСальдо+" else 0 end  СуммаОстаток,
	|    case when kind = '2' then "+стрВыражениеСальдо+" else 0 end  ВалютнаяСуммаОстаток,
	|    case when kind = '3' then "+стрВыражениеСальдо+" else 0 end  КоличествоОстаток
	|   from
	|    _1sbkttl _1sbkttl_vt (nolock)  
	|   where
	|    _1sbkttl_vt.date = '"+ДатаОстатки+"' and
	|    _1sbkttl_vt.kind in ('1','2','3') and
	|    _1sbkttl_vt.planid = "+Метадата.ИдОбъекта(Метаданные.ПланСчетов("Основной"))+" and
	|    _1sbkttl_vt.sp599 = '"+Метадата.ЗначениеВСтрокуБД(спрФирма)+"' "+?(ТекстУсловия1 = "",""," and " + ТекстУсловия1)+"
	|   union all
	|   select
	|    _1sentry_vt.sp599,
	|    _1sentry_vt.accdtid,
	|    _1sentry_vt.currid,
	|    _1sentry_vt.dtsc0,
	|    _1sentry_vt.vdtsc0,
	|    _1sentry_vt.dtsc1,
	|    _1sentry_vt.vdtsc1,
	|    _1sentry_vt.dtsc2,
	|    _1sentry_vt.vdtsc2,
	|    _1sentry_vt.dtsc3,
	|    _1sentry_vt.vdtsc3,
	|    _1sentry_vt.dtsc4,
	|    _1sentry_vt.vdtsc4,
	|    _1sentry_vt.sum_,
	|    _1sentry_vt.cursum,
	|    _1sentry_vt.amount
	|   from
	|    _1sentry _1sentry_vt (nolock)  
	|   where
	|    _1sentry_vt.date_time_docid between '"+ДатаПроводкиНач+"' and '"+ДатаПроводкиКон +"' and
	|    _1sentry_vt.active = ' ' and
	|    _1sentry_vt.provkind <> 'K' and
	|    _1sentry_vt.planid = "+Метадата.ИдОбъекта(Метаданные.ПланСчетов("Основной"))+" and
	|    _1sentry_vt.sp599 = '"+Метадата.ЗначениеВСтрокуБД(спрФирма)+"' and
	|    _1sentry_vt.accdtid <>'     0   ' "+?(ТекстУсловия2 = "",""," and " + ТекстУсловия2)+"
	|   union all
	|   select
	|    _1sentry_vt.sp599,
	|    _1sentry_vt.accktid,
	|    _1sentry_vt.currid,
	|    _1sentry_vt.ktsc0,
	|    _1sentry_vt.vktsc0,
	|    _1sentry_vt.ktsc1,
	|    _1sentry_vt.vktsc1,
	|    _1sentry_vt.ktsc2,
	|    _1sentry_vt.vktsc2,
	|    _1sentry_vt.ktsc3,
	|    _1sentry_vt.vktsc3,
	|    _1sentry_vt.ktsc4,
	|    _1sentry_vt.vktsc4,
	|    (-1)*_1sentry_vt.sum_,
	|    (-1)*_1sentry_vt.cursum,
	|    (-1)*_1sentry_vt.amount
	|   from
	|    _1sentry _1sentry_vt (nolock)  
	|   where
	|    _1sentry_vt.date_time_docid between '"+ДатаПроводкиНач+"' and '"+ДатаПроводкиКон +"' and
	|    _1sentry_vt.active = ' ' and
	|    _1sentry_vt.provkind <> 'D' and
	|    _1sentry_vt.planid = "+Метадата.ИдОбъекта(Метаданные.ПланСчетов("Основной"))+" and
	|    _1sentry_vt.sp599 = '"+Метадата.ЗначениеВСтрокуБД(спрФирма)+"' and
	|    _1sentry_vt.accktid <>'     0   ' "+?(ТекстУсловия3 = "",""," and " + ТекстУсловия3)+"
	|  ) Остатки_vt
	|group by
	|  РазделительУчета,
	|  Счет,
	|  Валюта,
	|  Субконто1,
	|  Субконто1_вид,
	|  Субконто2,
	|  Субконто2_вид,
	|  Субконто3,
	|  Субконто3_вид,
	|  Субконто4,
	|  Субконто4_вид,
	|  Субконто5,
	|  Субконто5_вид
	|having
	|  sum(СуммаОстаток) <> 0 or
	|  sum(ВалютнаяСуммаОстаток) <> 0 or
	|  sum(КоличествоОстаток) <> 0
	|"; 


  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Прямой запрос к БИ без AccountsRecordset
Ответ #3 - 24. Июня 2009 :: 09:16
Печать  
и еще чуток, в одно сообщение не влезлоУлыбка
Код
Выбрать все
	стрВыражениеСальдо       = "";                          
	ДатаОстатки              = "";
	ДатаПроводкиНач          = "";
	ДатаПроводкиКон          = "";


	Если НачКвартала(выбДата) = НачМесяца(выбДата) Тогда
		//первый месяц квартала
		стрВыражениеСальдо = "sd";  

		ДатаОстатки     = Формат(НачКвартала(выбДата),"ДГГГГММДД");  

		ДатаПроводкиНач = Формат(НачКвартала(выбДата),"ДГГГГММДД");
		ДатаПроводкиКон = Формат(выбДата+1,"ДГГГГММДД");
	ИначеЕсли ДобавитьМесяц(НачКвартала(выбДата),1) = НачМесяца(выбДата) Тогда
		//второй
		стрВыражениеСальдо = "sd+(obdt1-obkt1)";

		ДатаОстатки     = Формат(НачКвартала(выбДата),"ДГГГГММДД");
		ДатаПроводкиНач = Формат(ДобавитьМесяц(НачКвартала(выбДата),1),"ДГГГГММДД");
		ДатаПроводкиКон = Формат(выбДата+1,"ДГГГГММДД");
	ИначеЕсли ДобавитьМесяц(НачКвартала(выбДата),2) = НачМесяца(выбДата) Тогда
		//третий
		стрВыражениеСальдо = "sd+(obdt1-obkt1)+(obdt2-obkt2)";  

		ДатаОстатки     = Формат(НачКвартала(выбДата),"ДГГГГММДД");
		ДатаПроводкиНач = Формат(ДобавитьМесяц(НачКвартала(выбДата),2),"ДГГГГММДД");
		ДатаПроводкиКон = Формат(выбДата+1,"ДГГГГММДД");
	КонецЕсли; 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать