Имя: Пароль:
1C
1С v8
помогите с запросом - тормозит
0 slicem
 
23.10.12
05:58
БУ 2.0

Задача:
Получить Платежи по договору.

две видимых ситуации:
1.платеж Д60 К50
2.взаимозачет/прочая хрень
Д76.5 К60

Это утрировано, ессно - состав счетов ширее.


проблема возникает по второй части:
Когда делаю запрос:

   |    ХозрасчетныйОборотыДтКт.СуммаОборот КАК Сумма
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
   |            ,
   |            &ДатаКон,
   |            ,
   |            СчетДт.Ссылка В ИЕРАРХИИ (&СписокСчетовВзаиморасчетов),
   |            &СубконтоДоговор,
   |            СчетКт.Ссылка В ИЕРАРХИИ (&СписокСчетовВзаиморасчетов),
   |            &СубконтоДоговор,
   |            СубконтоДт1 = &Договор
   |                И СубконтоКт1 <> &Договор) КАК ХозрасчетныйОборотыДтКт

все летает,
но
если наоборот

   "ВЫБРАТЬ
   |    ХозрасчетныйОборотыДтКт.СуммаОборот КАК Сумма
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
   |            ,
   |            &ДатаКон,
   |            ,
   |            СчетДт.Ссылка В ИЕРАРХИИ (&СписокСчетовВзаиморасчетов),
   |            &СубконтоДоговор,
   |            СчетКт.Ссылка В ИЕРАРХИИ (&СписокСчетовВзаиморасчетов),
   |            &СубконтоДоговор,
   |            СубконтоКт1 = &Договор
   |                И СубконтоДт1 <> &Договор) КАК ХозрасчетныйОборотыДтКт

все встает колом.

Создаётся впечатление, что сперва делается отбор по дебетовой части, поэтому в первом запросе результат отбора маленький и все хорошо - выполняется менее секунды.
А вот во втором случае, по дебету считай всё прилетает и это вгоняет комп в ступор (порядка 20-30 сек думает).

Поможите, как это обойти. Я не вижу ((.
1 Рэйв
 
23.10.12
06:17
А у тебя может быть ситуация когда один и тот же договор стоит и в Дт и в Кт одновременно в одной проводке?

Если нет, то смысла в двойных условиях нет, только лишняя нехилая нагрузка
2 skunk
 
23.10.12
06:17
это что конкурс кто быстрее найдет три отличия? .. я пока нашел только одно ... во втором запросе есть - "ВЫБРАТЬ ... а в первом этой строки нет
3 skunk
 
23.10.12
06:18
а все нашел оставшееся
4 Рэйв
 
23.10.12
06:18
(2)В конце Дт -Кт  у субконто:-)
5 slicem
 
23.10.12
06:41
Upd. В принципе, самоустранилось:
Тормоза на файловой копии, на сиквеле летает.
Но сам факт интересен, если есть идеи выкладывайте - пригодятся.
6 slicem
 
23.10.12
06:44
(1) во1 Я думал условия в запросе ускоряют его работу ибо ограничивают размер выборки.
во2. Д60.1 К60.2 например.
7 НЕА123
 
23.10.12
08:06
не по теме.
ВЫРАЗИТЬ не помешало бы.
8 НЕА123
 
23.10.12
08:07
+(7)
а может как раз и по теме...
не проснулся еще (с)
9 Fragster
 
гуру
23.10.12
08:10
добавь отбор по видам субконто в 3-й параметр ВТ
10 Fragster
 
гуру
23.10.12
08:11
(7) монопенисуально, если нет обращения через точку. ну, разве что доп. отбор по (И СубконтоКт1 Ссылка Справочник.ДоговорыКонтрагентов), но 1с вроде умная и так его делает для простых сравнений с составными типами
11 Fragster
 
гуру
23.10.12
08:12
а, там есть отбор...
12 НЕА123
 
23.10.12
08:12
СчетДт.Ссылка

Ссылка - надо?
13 Fragster
 
гуру
23.10.12
08:13
(12) не надо. и В ИЕРАРХИИ заменить на плоский список
14 НЕА123
 
23.10.12
08:14
(10)
да. согласен. практически просто байтики сравниваются.
15 Fragster
 
гуру
23.10.12
08:16
я думаю, что дело в том, что база - файловая
16 Fragster
 
гуру
23.10.12
08:17
можно попробовать заменить виртуальную таблицу ОборотыДтКт на Обороты и сравнивать Субконто1 и КорСубконто1
17 slicem
 
23.10.12
09:30
(16) думал, но не покатит мне направление движения принципиально. СуммаОборотДТ это же не Приход, если я прально понимаю.

(13) Основное торможение именно из-за отсутствия отбора по дебету.
А так еще ускорить можно ограничив начальную даду датой договора, например. Но это всё мёртвому припарки.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан