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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение 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  ))
  {
     // здесь собираем сумму 
  }
...
Не собирается, пишет: "В баунде на таблицу не может быть более одного ограничения, отличного от ==". И как тогда собрать проводки?
Irina_
Местный житель
Сообщения: 546
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

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

Сообщение Irina_ »

Здравствуйте.
Не нашла среди индексов у Oborot того, который соответствует заданным Вами условиям. Попробуйте убрать из Where условие на договор и проверять его отдельно перед суммированием.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

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

Сообщение 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)
                                 ))
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение 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, помогло! Странно, что я сам не додумался :)
Ответить