Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 12 ... 17 ОтправитьПечать
Очень популярная тема (более 25 ответов) AccountsRecordset v3.17. Прямые запросы к БИ. (число прочтений - 138187 )
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #135 - 23. Декабря 2009 :: 10:51
Печать  
В ВТ [b]БИОборотыДтКт [/b]и [b]БИОбороты[/b] при периодичности "Документ" отчего то удваиваются обороты по количеству относительно стандартной отчетности (и данных операции). Пример запроса

[code]      
select
     ПозицияДокумента,
     j.iddoc,
     j.iddocdef,
     КоличествоОборот
from
     $БИОборотыДтКт.Новый(:начДата, :конДата~, Документ, ,СчетДт != :выбСчет , , СчетКт = :выбСчет, Номенклатура, $РазделительУчета = :выбФирма and СубконтоКт1 =  :выбСубконто) таблицаДвижения
           inner join
     _1sjourn j (nolock)
                 on on j.date_time_iddoc = ПозицияДокумента and j.iddocdef = ВидДокумента[/code]

что я делаю не так ?
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #136 - 23. Декабря 2009 :: 11:17
Печать  
А этот запрос вообще работает?  Озадачен Если отвлечься от синтаксических ошибок, засада может быть (а может и не быть) в секции УсловиеСчетаДт. Отдельно непонятно наличие соединения с _1sjourn. В общем, давай тестовую обработку и ИБ с одной операцией.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #137 - 23. Декабря 2009 :: 12:47
Печать  
Про синтаксические ошибки это про два раза "on" ? Виноват, при копировании техническую ошибку допустил :)

Решение оказалось в условии "СчетДт != :выбСчет". Если его убрать, то все работает. Вот такой запрос рабочий
[code]
select
     ПозицияДокумента,
     j.iddoc,
     j.iddocdef,
     КоличествоОборот
from
     $БИОборотыДтКт.Новый(:начДата, :конДата~, Документ, , , , СчетКт = :выбСчет, Номенклатура, $РазделительУчета = :выбФирма and СубконтоКт1 =  :выбСубконто) таблицаДвижения
           inner join
     _1sjourn j (nolock)
                 on j.date_time_iddoc = ПозицияДокумента and j.iddocdef = ВидДокумента
where
СчетДт != СчетКт
[/code]

[b]А почему ?[/b]

PS На тестовой с одной операцией воспроизвести не удалось, к сожалению :( Там все работает !

PPS _1sjourn для общих реквизитов журнала, которые из примера вырезаны для удобочитаемости.
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #138 - 23. Декабря 2009 :: 13:07
Печать  
А потому, что.  Улыбка

Функция секций УсловиеСчета совпадает с функцией секции Счет штатного метода БИ.ВыполнитьЗапрос, а там условия вида '!= :выбСчет' невозможны. Т.е. правильными условиями в секциях УсловиеСчета будут выражения вида

Счет = :Счет1 OR Счет = :Счет2

и прочие

Счет IN (SELECT val FROM...


Если твой выбСчет - не группа, выражение

СчетДт != :выбСчет

правильно отработает в секции Условие.
  

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


1C++ rocks!

Сообщений: 5
Зарегистрирован: 26. Января 2010
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #139 - 26. Января 2010 :: 14:02
Печать  
Уважаемые коллеги, прочитал что AccRecSet может брать данные из другой базы, но у меня данная конструкция никак не хочет работать... SQL__      = СоздатьОбъект("AccountsRecordSet");
     
     ТЗ.ВыбратьСтроки();
     Пока ТЗ.ПолучитьСтроку() =1 Цикл
           БазаХТ.ПрисоединитьИБ("Z:\trade"+ТЗ.Года+"\",<>,<>,"Driver={SQL Server};Server=<>Смехatabase=Trade"+ТЗ.Года+";Uid=sa;Pwd=<>;");
           SQL__.УстБД(БазаХТ);
далее к примеру
     SQL__.УложитьСписокОбъектов(СпСчет, "#СпСчет","Основной");
и потом
SQL__.ВыполнитьИнструкцию(ТекстЗапроса);

ругается на Invalid object name '#СпСчет'.
хотя проверил что конект к базе создаётся, а временная табл. получается в тек базе.... где засада никак не пойму.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #140 - 26. Января 2010 :: 14:29
Печать  
opozicioner84 писал(а) 26. Января 2010 :: 14:02:
Уважаемые коллеги, прочитал что AccRecSet может брать данные из другой базы

Ссылку можно увидеть?

См. ответ #80.
  

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


1C++ rocks!

Сообщений: 5
Зарегистрирован: 26. Января 2010
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #141 - 27. Января 2010 :: 06:39
Печать  
только зарегился, поэтому ссылка в след. сообщении
  
Наверх
 
IP записан
 
opozicioner84
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 26. Января 2010
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #142 - 27. Января 2010 :: 06:39
Печать  
  
Наверх
 
IP записан
 
IvanN
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 27. Января 2010
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #143 - 27. Января 2010 :: 07:33
Печать  
Доброго дня.
Скачал класс, посмотрел описание ert и... ничего не понял =).
Можно попросить выложить какой-нибудь простой пример отчета, чтобы было от чего оттолкнуться начинающему?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #144 - 27. Января 2010 :: 10:03
Печать  
Многие факты и умолчания, совместимые с штатными ВТ 1С++, в описании даже не упомянуты. Т.ч. для понимания нужно посмотреть ещё документацию 1С++. Как минимум - описание ВТ, а лучше - всё приложение А.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #145 - 20. Февраля 2010 :: 22:16
Печать  
Иван, тут вот вопрос мне задали, а я в свою очередь задумался малость.
Если текст запроса получается из функции ВТОбороты, то в конце запроса секция HAVING содержит проверку SUM([Вид]ОборотДт) <> 0 OR SUM([Вид]ОборотКт) <> 0. При этом если текст состоит из объединения двух таблиц ВТ БИОборотыДтКт, то эта секция (HAVING) содержит проверку SUM([Вид]Оборот) <> 0.
Ранее у тебя была проверка аналогичная ВТОбороты, потом ты поменял. Если помнишь на память причину, расскажи плиз.
Лично меня гложат сомнения, что это правильно.

Пы.сы. для себя я наверное верну проверку Дт и Кт оборотов.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #146 - 22. Февраля 2010 :: 07:46
Печать  
При получении оборотов без поддержки корреспонденции поле Оборот является производным (вычисляемым из) полей ОборотДт и ОборотКт.

При получении оборотов с поддержкой корреспонденции - поля ОборотДт и ОборотКт вычисляются из Оборот, т.к. для ВТ БиОборотыДтКт поля ОборотДт и ОборотКт не имеют смысла, и их там просто нет.

В HAVING используются базовые поля.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #147 - 22. Февраля 2010 :: 12:36
Печать  
Можно я все-таки попробую прояснить.
Далее речь пойдет о ВТ БИОбороты с поддержкой корреспонденции.
Сбор данной ВТ идет путем объединения 2-х ВТ БИОборотыДтКт.
1. В первой мы берем поле "Оборот" и добавляем его в "ОборотДт" + оно же идет в колонку "Оборот".
2. Во второй мы берем обратные проводки и поле "Оборот" добавляем в "ОборотКт" + оно же идет с минусом в колонку "Оборот".

Теперь, например если у нас были проводки (за период):
1. 51-60 = 100
2. 60-51 = 100
то запрос (очень грубо) получится так:
Код
Выбрать все
select 100 Оборот, 100 ОборотДт, 0 ОборотКт
from БИОборотыДтКт(51-60)
union all
select -100 Оборот, 0 ОборотДт, 100 ОборотКт
from БИОборотыДтКт(60-51) 


А сгруппированный и суммированный вернет одну строку: 0 Оборот, 100 ОборотДт, 100 ОборотКт.
Вот и получается что HAVING SUM(Оборот) <> 0 по сути просто отрежет данную строк. Разве нет?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #148 - 22. Февраля 2010 :: 12:54
Печать  
А, ну да.  Улыбка Там HAVING вообще можно выбросить.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: AccountsRecordset v3.08. Прямые запросы к БИ.
Ответ #149 - 22. Февраля 2010 :: 16:05
Печать  
berezdetsky писал(а) 22. Февраля 2010 :: 12:54:
А, ну да.  Улыбка Там HAVING вообще можно выбросить.

Я поставил у себя проверку. В принципе согласен что можно и выкинуть. Ну хорошо что прояснились  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 12 ... 17
ОтправитьПечать