Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Учусь писать запросы...ошибки ...помогите разобрат (число прочтений - 13886 )
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #30 - 20. Ноября 2007 :: 11:57
Печать  
Усе, дошло.

Просто условие на производителя надо встаять не внутрь конструкции "$РегистрОстатки.ОстаткиТоваров(:КонДата~,,................"

а вынести как внешнее условие, например WHERE.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #31 - 20. Ноября 2007 :: 12:35
Печать  
Кстати, отбор по подразделению тоже заработал, просто вынес его в условие WHERE
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #32 - 21. Ноября 2007 :: 08:39
Печать  
А можно ли как-то в запросе выбрать уровень в справочнике?

Или хотя бы при работе с результатом запроса по справочнику можно было обращаться к какому-то полю (ID, Desc...) методом "Уровень()"?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #33 - 21. Ноября 2007 :: 21:48
Печать  
Можно с помощью функции - это если неоптимально и нечасто
А можно хранить его уже
Ты бы поиском прошелся... глядишь и накопал бы чего...
  

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


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #34 - 22. Ноября 2007 :: 09:59
Печать  
В общем пока как вариант на крайний случай, если понадобится, такой придумал. Только придется обращаться с методом уровень() уже к результату запроса:

В запоросе выбираем:

СпрТов.ID as [элемент $Справочник.Товары]

А потом можно проверять из ТЗ:

ТЗ.элемент.Уровень()
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #35 - 22. Ноября 2007 :: 10:00
Печать  
Хоть и не очень оптимально, наверно, что пооригинальней можно придумать, но работает!
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #36 - 22. Ноября 2007 :: 13:09
Печать  
Может кто-нибудь даст ссылочки на практические примеры использования конструкций 1С++ в модулях проведения? В принципе понимаю, как можно это сделать, но хотелось бы конкретные примеры поглядеть, а то еще не пробовал...
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #37 - 27. Ноября 2007 :: 14:04
Печать  
Ну хотя бы вкратце своим словами может кто пояснит, как в модуле проведения 1СРР использовать? Заменять команды "СводныйОстаток" на запросы ? Пробовал сделать простенький пример такой замены, замерил в конфигураторе, вроде "СводныйОстаток" работает быстрее, причем значительно... Может, я что-то не то делаю?
  
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #38 - 27. Ноября 2007 :: 21:30
Печать  
Neo писал(а) 27. Ноября 2007 :: 14:04:
Ну хотя бы вкратце своим словами может кто пояснит, как в модуле проведения 1СРР использовать? Заменять команды "СводныйОстаток" на запросы ? Пробовал сделать простенький пример такой замены, замерил в конфигураторе, вроде "СводныйОстаток" работает быстрее, причем значительно... Может, я что-то не то делаю?


Приведи пример , как у тебя в модуле проведения идет обращение к остаткам регистра.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #39 - 28. Ноября 2007 :: 06:31
Печать  
На ТА так получаю:

ВремРегистры=СоздатьОбъект("Регистры");
Рег=ВремРегистры.ОстаткиТоваров;
Если ИтогиАкутальны()=0 Тогда
ВремРегистры.Актуальность()=1;
ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;

Рег.СводныйОстаток(...);

---
           
Заменил на:

|SELECT
|SUM(Рег.ОстатокТовараОстаток) as Количество
|FROM
|$РегистрОстатки.ОстаткиТоваров(:ДатаДок~,,Товар=:ВыбТовар AND Склад=:ВыбСклад,(Товар,Склад),(ОстатокТовара)) as Рег
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #40 - 28. Ноября 2007 :: 06:37
Печать  
PS Чего-то код не копируется в браузер, выводится какими-то странными значками, хотя раньше вроде нормально все выводилось... Теперь ручками приходится все забивать...
  
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #41 - 28. Ноября 2007 :: 06:45
Печать  
Neo писал(а) 28. Ноября 2007 :: 06:31:
На ТА так получаю:

ВремРегистры=СоздатьОбъект("Регистры");
Рег=ВремРегистры.ОстаткиТоваров;
Если ИтогиАкутальны()=0 Тогда
ВремРегистры.Актуальность()=1;
ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;

Рег.СводныйОстаток(...);

---
           
Заменил на:

|SELECT
|SUM(Рег.ОстатокТовараОстаток) as Количество
|FROM
|$РегистрОстатки.ОстаткиТоваров(:ДатаДок~,,Товар=:ВыбТовар AND Склад=:ВыбСклад,(Товар,Склад),(ОстатокТовара)) as Рег



1. Почему не пользуешься "ВыгрузитьИтоги" ?
2. Неужели ты делаешь запрос к регистру по каждой строке табличной части ? Только не говори , что это так Улыбка

Запрос к регистру должен делаться 1 раз по всем строкам табличной части.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #42 - 28. Ноября 2007 :: 07:07
Печать  
> 2. Неужели ты делаешь запрос к регистру по каждой строке табличной части ? Только не говори , что это так 


- Увы, это так. Конфа просто не мной писалась, сейчас как раз работаю над оптимизацией. Везде запрос делает по каждой строке табличной части...

> Запрос к регистру должен делаться 1 раз по всем строкам табличной части.

- Пробовал тестировать на простеньком примере, всего 2 позиции в доке. Стандартный СводныйОстаток() делает за 0,013 с расчет остатков, отчет 1СРР - порядка 0,1с !!!
  
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #43 - 28. Ноября 2007 :: 07:10
Печать  
Neo писал(а) 28. Ноября 2007 :: 07:07:
>
> Запрос к регистру должен делаться 1 раз по всем строкам табличной части.

- Пробовал тестировать на простеньком примере, всего 2 позиции в доке. Стандартный СводныйОстаток() делает за 0,013 с расчет остатков, отчет 1СРР - порядка 0,1с !!!


Приведи пример прямого запроса , если в табличной части у тебя 3 позиции.

И еще . А если в табличной части у тебя будет 100 позиций , то будет 100 запросов ?
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Учусь писать запросы...ошибки ...помогите разо
Ответ #44 - 28. Ноября 2007 :: 09:05
Печать  
> Приведи пример прямого запроса , если в табличной части у тебя 3 позиции

- Вариант запроса, если запускать по каждой строке таб части, чуть выше уже приводил.

Так еще наверное можно :

СЗ=СоздатьОбъект("СписокЗначений");
ВыгрузитьТабличнуюЧасть(СЗ,"Товар");

Текст="
           |SELECT
           |Рег.Товар as [Товар $Справочник.Товары],
           |Sum(Рег.ОстатокТовараОстаток) as Количество
           |FROM
           |$РегистрОстатки.ОстаткиТоваров(:ДатаДок~,,Товар IN (SELECT Val FROM #ГруппаТов) AND Склад=:ВыбСклад,(Товар),(ОстатокТовара)) as Рег
           |GROUP BY
           |Рег.Товар                                                   
           |";

              Recordset.УложитьСписокОбъектов(СЗ,"#ГруппаТов","Товары");

Но так работает еще дольше, чем если по каждой строке делать.

>  еще . А если в табличной части у тебя будет 100 позиций , то будет 100 запросов ?

- Хороший вопрос... В принципе да. Просто вспомнил, как в каком доке я делал заполение не одним запросом по группе товаров, а перебором товаров и отдельным запросом для каждого товара - работало быстрее!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать