Переключение на Главную Страницу Страницы: 1 ... 15 16 [17]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Прямые запросы к бухгалтерским итогам (число прочтений - 124028 )
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #240 - 27. Ноября 2012 :: 07:24
Печать  
andrmit писал(а) 26. Ноября 2012 :: 11:28:
БПК и БЛК - счета (не группы)
...
Нужны остатки

Я не представляю, как можно получить остатки с отбором по корсчёту без перебора проводок от начала времён. Если это именно то, что нужно, такие данные лучше хранить в регистре.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Прямые запросы к бухгалтерским итогам
Ответ #241 - 27. Ноября 2012 :: 13:26
Печать  
Прошу прощения...
Нужны обороты
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #242 - 28. Ноября 2012 :: 06:41
Печать  
Для SQL это было бы
Код
Выбрать все
ар = СоздатьОбъект("AccountsRecordset");
ТекстЗапроса = "
	|SELECT Субконто1 [Бланк $Документ]
	|	, Субконто2 [Бронь $Документ.Бронь]
	|	, КоличествоОборотДт
	|	, КоличествоОборотКт
	|FROM $БИОбороты.Основной(:РабочаяДата, :РабочаяДата ~,,,,
	|		(Субконто1, Субконто2),
	|		Субконто1 IN (SELECT val FROM #Бланки)
	|		AND Счет = :БПК
	|		AND КорСчет = :БЛТ,,
	|		БезСубконто
	|	) AS БИОборотыОсновной
	|";
ар.УстановитьТекстовыйПараметр("РабочаяДата", РабочаяДата());
ар.УстановитьТекстовыйПараметр("БПК", БПК);
ар.УстановитьТекстовыйПараметр("БЛТ", БЛТ);
ар.УложитьСписокОбъектов13(Дк, "#Бланки");
тз = ар.ВыполнитьИнструкцию(ТекстЗапроса);
 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Дмитрий Д.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 07. Апреля 2013
Re: Прямые запросы к бухгалтерским итогам
Ответ #243 - 12. Июля 2014 :: 07:45
Печать  
всем привет. Решил переписать акт сверки на прямой запрос, вроде работает, но сильного прирост а по скорости не получил. Может, что не так сделал? Знающие люди, подскажите пожалуйста. Вот сам запрос.

рс = СоздатьОбъект("AccountsRecordset");
     рс.УстБД1С();
     //рс.Отладка(1);
     
     ТекстЗапроса = "
     |SELECT
     |ПозицияДокумента
     |, ВидДокумента
     |, Счет [Счет $Счет.Основной]
     |, Валюта [Валюта $Справочник.Валюты]
     |, Субконто1 [Субконто1 $Субконто]
     |, Субконто1_вид
     |, СуммаНачальныйОстаток СуммаНач
     |, СуммаОборот СуммаОборот 
     |, СуммаОборотДт Дебет 
     |, СуммаОборотКт Кредит 
     |, СуммаКонечныйОстаток СуммаКон
     |, ВалютнаяСуммаНачальныйОстаток  ВалНач
     |, ВалютнаяСуммаОборот ВалСумма
     |, ВалютнаяСуммаКонечныйОстаток ВалКон
     |, Журнал.IDDOC [Документ $Документ.РасходнаяНакладнаяР]
     |, Журнал.IDDOCdef ВидДок
     |, Журнал.DOCNO НомерДок
     |  FROM $БИОстаткиОбороты.Основной(:НачДата, :КонДата~,
     |      Документ,
     |      ,,
     |      ,(Субконто1),
     |      Счет IN (SELECT val FROM #accs)
     |      AND (Субконто1  = :ВыбКлиент)
     |      AND (Субконто2  = :ВыбДоговор)
     |) БИОстаткиОбороты
     |LEFT OUTER JOIN _1SJOURN AS Журнал With (NOLOCK) ON БИОстаткиОбороты.ПозицияДокумента = Журнал.DATE_TIME_IDDOC
     |ORDER BY
     |БИОстаткиОбороты.ПозицияДокумента
     |";
     
     рс.УстановитьТекстовыйПараметр("НачДата",НачДата);
     рс.УстановитьТекстовыйПараметр("КонДата",КонДата);
     рс.УложитьСписокОбъектов(СписокВыбранныхСчетов, "#accs", "Основной");
     рс.УстановитьТекстовыйПараметр("ВыбКлиент",Контрагент);
     Если ПустоеЗначение(Договор) = 1 Тогда
           ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "AND (Субконто2  = :ВыбДоговор)", "");
     ИначеЕсли Договор.ЭтоГруппа() = 1 Тогда
           ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "AND (Субконто2  = :ВыбДоговор)", "AND (Субконто2 IN (SELECT val FROM #ВыбДоговор))");
           рс.УложитьСписокОбъектов(Договор, "#ВыбДоговор", "Договоры");
     Иначе
           рс.УстановитьТекстовыйПараметр("ВыбДоговор",Договор);
     КонецЕсли;
     
     тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
     
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #244 - 14. Июля 2014 :: 06:08
Печать  
На первый взгляд ничего особо критичного. Нужно добавить отбор по разделителю учёта, если разделитель в конфигурации определён. Можно убрать группировку по субконто и соединение с журналом, а документ-регистратор движения получать из полей ВТ ПозицияДокумента и ВидДокумента.
Вообще штатные бухзапросы тяжело обогнать, если не нужна аналитика по группам счетов и по субконто.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #245 - 14. Июля 2014 :: 11:52
Печать  
Условие по счету отнести в УсловиеСчета. Или на скорость не влияет?
И смущает Цитата:
(Субконто1)
вроде ж там должны быть через зпт ВидСубконто какие хочешь использовать (или у Дмитрий Д. вид субконто называется Субконто1)?
И, собсна, если использовать только одно субконто, то взлетит ли условие Цитата:
AND (Субконто2  = :ВыбДоговор)
, когда не пустоезначение выбдоговор?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #246 - 14. Июля 2014 :: 13:17
Печать  
vinogradoff писал(а) 14. Июля 2014 :: 11:52:
Условие по счету отнести в УсловиеСчета. Или на скорость не влияет?

Если нет отбора по группам счетов и не включен в конфигурации отбор по счетам, не влияет.

vinogradoff писал(а) 14. Июля 2014 :: 11:52:
И смущает Цитата:
(Субконто1)
вроде ж там должны быть через зпт ВидСубконто какие хочешь использовать (или у Дмитрий Д. вид субконто называется Субконто1)?

Можно по видам, можно номерам. Читай инструкцию. Улыбка

vinogradoff писал(а) 14. Июля 2014 :: 11:52:
И, собсна, если использовать только одно субконто, то взлетит ли условие Цитата:
AND (Субконто2  = :ВыбДоговор)
, когда не пустоезначение выбдоговор?

Группировка выполняется уже после наложения условий.  Круглые глаза
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #247 - 16. Июля 2014 :: 05:13
Печать  
berezdetsky писал(а) 14. Июля 2014 :: 13:17:
Группировка выполняется уже после наложения условий.  Круглые глаза


т.е. можно указать использование только по одного субконто, но при этом делать отбор по второму?
  
Наверх
 
IP записан
 
Дмитрий Д.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 07. Апреля 2013
Re: Прямые запросы к бухгалтерским итогам
Ответ #248 - 20. Декабря 2014 :: 13:32
Печать  
Здравствуйте!  нужно выполнить запрос из 8 к 7  и получить след. инфу:
выбрать товары с количеством и ценой из расходных накладных по опред. клиенту (по инн), и себестоимость списанного товара (из проводок по сч 41).  Сделал запрос через внешний источник данных, все работает, но тупит капец. Видимо не попал в индекс. Как можно ускорить этот запрос? использовать внешние источники не принципиально, можно и 1сpp (если его можно юзать из 8-ки) и ado



"ВЫБРАТЬ
                    |      РасходнаяНакладнаяР.Ссылка КАК РасхНакл,
                    |      ВЫРАЗИТЬ(ЖурналДокументов.DATE_TIME_IDDOC КАК СТРОКА(8)) КАК ДатаДок,
                    |      ЖурналДокументов.DOCNO КАК НомерДок,
                    |      Контрагенты.DESCR КАК Контрагент,
                    |      РасходнаяНакладнаяРМнЧ.LINENO_ КАК НомерСтроки,
                    |      РасходнаяНакладнаяРМнЧ.SP283 КАК Товар,
                    |      Номенклатура.DESCR КАК ТоварDESCR,
                    |      Номенклатура.SP47792 КАК ТоварКодТорговли,
                    |      РасходнаяНакладнаяРМнЧ.SP48636 КАК Партия,
                    |      РасходнаяНакладнаяРМнЧ.SP284 КАК Количество,
                    |      РасходнаяНакладнаяРМнЧ.SP285 КАК Цена,
                    |      ЕСТЬNULL(ТаблицаПроводок.SUM_, 0) КАК Себестоимость,
                    |      ЕСТЬNULL(ТаблицаПроводок.AMOUNT, 0) КАК СебестоимостьКолво
                    |ИЗ
                    |      ВнешнийИсточникДанных.Бух7.Таблица.РасходнаяНакладнаяР КАК РасходнаяНакладнаяР
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.Бух7.Таблица.Контрагенты КАК Контрагенты
                    |            ПО РасходнаяНакладнаяР.SP277 = Контрагенты.ID
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.Бух7.Таблица.ЖурналДокументов КАК ЖурналДокументов
                    |            ПО РасходнаяНакладнаяР.IDDOC = ЖурналДокументов.IDDOC
                    |            ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.Бух7.Таблица.РасходнаяНакладнаяРМнЧ КАК РасходнаяНакладнаяРМнЧ
                    |            ПО РасходнаяНакладнаяР.IDDOC = РасходнаяНакладнаяРМнЧ.IDDOC
                    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.Бух7.Таблица.Номенклатура КАК Номенклатура
                    |            ПО (РасходнаяНакладнаяРМнЧ.SP283 = Номенклатура.ID)
                    |            ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.Бух7.Таблица.ТаблицаПроводок КАК ТаблицаПроводок
                    |            ПО (РасходнаяНакладнаяРМнЧ.IDDOC = ТаблицаПроводок.DOCID)
                    |                  И (РасходнаяНакладнаяРМнЧ.SP283 = ТаблицаПроводок.KTSC0)
                    |                  И (РасходнаяНакладнаяРМнЧ.SP48636 = ТаблицаПроводок.KTSC2)
                    |                  И (ТаблицаПроводок.ACCDTID = ""    64   "")
                    |ГДЕ
                    |      Контрагенты.SP126 = &ИНН
                    |      И (ВЫРАЗИТЬ(ЖурналДокументов.DATE_TIME_IDDOC КАК СТРОКА(8))) >= &НачПериода
                    |      И (ВЫРАЗИТЬ(ЖурналДокументов.DATE_TIME_IDDOC КАК СТРОКА(8))) <= &КонПериода";
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прямые запросы к бухгалтерским итогам
Ответ #249 - 22. Декабря 2014 :: 06:47
Печать  
Для начала убери ВЫРАЗИТЬ() и замени ЖурналДокументов.IDDOC на правые 9 символов от DATE_TIME_IDDOC. Дальше смотри план выполнения в профайлере.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Дмитрий Д.
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 07. Апреля 2013
Re: Прямые запросы к бухгалтерским итогам
Ответ #250 - 22. Декабря 2014 :: 10:31
Печать  
спасибо, буду пробовать
  
Наверх
 
IP записан
 
Анатолий
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 25
Зарегистрирован: 18. Сентября 2008
Re: Прямые запросы к бухгалтерским итогам
Ответ #251 - 08. Января 2015 :: 14:21
Печать  
и 7.7 SQL или DBF?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 
ОтправитьПечать