Имя: Пароль:
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) Основное торможение именно из-за отсутствия отбора по дебету.
А так еще ускорить можно ограничив начальную даду датой договора, например. Но это всё мёртвому припарки.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn