Страница 1 из 1

Цикл по проводкам

Добавлено: 23 апр 2019, 00:39
Buddy
Коллеги, что-то никак не могу сделать простую, казалось бы, вещь.
Мне нужно просуммировать проводки по определенным условиям (Д62/К51, К51 КАУ2=нрек договора + ограничение по датам)

Пишу так:

Код: Выделить всё

...
  set myPlansSch := coGetTune('FIN.USER.CPLANSSCH');
  if getfirst PlansSch = tsOk
    myPlansNo := PlansSch.Kod;
  else
    exit;

  _loop FullCache Oborot Where ((
                                 myPlansNo+'62' ==  Oborot.ScheTo    And
                                 myPlansNo+'51' ==  Oborot.SchetK    And
                                 cDogNrec         ==  Oborot.KauKs[2]  And
                                 dtb            <<= Oborot.DatOb     And
                                 dte            >>= Oborot.DatOb  ))
  {
     // здесь собираем сумму 
  }
...
Не собирается, пишет: "В баунде на таблицу не может быть более одного ограничения, отличного от ==". И как тогда собрать проводки?

Re: Цикл по проводкам

Добавлено: 23 апр 2019, 10:05
Irina_
Здравствуйте.
Не нашла среди индексов у Oborot того, который соответствует заданным Вами условиям. Попробуйте убрать из Where условие на договор и проверять его отдельно перед суммированием.

Re: Цикл по проводкам

Добавлено: 23 апр 2019, 11:11
Den
Можно переписать условие .в соответствии с индексом OBOROT33, вынеся просто в фильтр условие на Oborot.Scheto

Код: Выделить всё

_loop FullCache Oborot Where ((                                   
                                 myPlansNo+'51' ==  Oborot.SchetK    And
                                 cDogNrec         ==  Oborot.KauKs[2]  And
                                 dtb            <<= Oborot.DatOb     And
                                 dte            >>= Oborot.DatOb  and
                                     (myPlansNo+'62' =  Oborot.ScheTo)
                                 ))

Re: Цикл по проводкам

Добавлено: 23 апр 2019, 17:57
Buddy
Den писал(а):Можно переписать условие .в соответствии с индексом OBOROT33, вынеся просто в фильтр условие на Oborot.Scheto

Код: Выделить всё

_loop FullCache Oborot Where ((                                   
                                 myPlansNo+'51' ==  Oborot.SchetK    And
                                 cDogNrec         ==  Oborot.KauKs[2]  And
                                 dtb            <<= Oborot.DatOb     And
                                 dte            >>= Oborot.DatOb  and
                                     (myPlansNo+'62' =  Oborot.ScheTo)
                                 ))
Спасибо, Den, помогло! Странно, что я сам не додумался :)