16 ноября, пятница 01:42
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Начисление. Структура. Процедура внутри курсора: cannot find Object

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Начисление. Структура. Процедура внутри курсора: cannot find Object

    Наличие вызова выделенной процедуры внутри курсора приводит к генерации ошибки cannot find object Диасофтом.
    Если выполнять тот же код через Query Analyzer - все ок, следовательно проблема связана с косяком в среде разработки DS
    Нет идей как побороть?
    Код:
    --  1. Ôîðìèðîâàíèå âõîäÿùèõ äîêóìåíòîâ äëÿ ïîðó÷åíèé íà áóõãàëòåðñêèå äåïîçèòàðíûå îïåðàöèè.
    --  2. Ïðèâÿçêà ñôîðìèðîâàííûõ âõ. äîêóìåíòîâ ê ïîðó÷åíèÿì.
    
    Declare  @DateAccrual     smalldatetime
            ,@InstitutionID   numeric(15,0)
            ,@RetVal          int
            ,@ID              numeric(15,0)
            ,@Counter         int
            ,@DealTransactID  numeric(15,0)
            ,@InstBrief       varchar(30)     -- Ñîêðàùåíèå êëèåíòà èç ïîðó÷åíèÿ
            ,@InnerNumber     char(25)
            ,@DocName         char(60)
            ,@DocNameNDC      char(60)
            ,@DocNameOwn      char(60)
            ,@ResSecondID     numeric (15,0)
    
      select @DateAccrual = '20091113' /* :DateStart */
    
    
      if (select count(*)   -- Åñòü ñôîðìèðîâàííûå ïîðó÷åíèÿ â òåêóùåì äíå
            from tDealTransact
           where TransactType=7
             and InstrumentID= 3022      -- ÔÎ ÁóõÎïåð
             and  Date=@DateAccrual)>0
      begin
    
        -- Ôîðìèðîâàíèå âõîäÿùåãî äîêóìåíòà òèïà "îò÷åò/âûïèñêà ÍÄÖ   -- 10000000089
    
        select @DocNameNDC = 'Îò÷åò/âûïèñêà ÍÄÖ îò ' + convert(varchar(10),@DateAccrual,104)+ ' ã.'
    
        exec @RetVal = InputDoc_Insert
                     @InputDocID       = @ID output,            -- ID âõîäÿùåãî äîêóìåíòà
                     @TypeInOut        = 0,
                     @DocTypeID        = 10000000089,           -- Ïîðó÷åíèå îïåðàòîðà ñ÷åòà
                     @DocNum           = 1 ,
                     @DocDate          = @DateAccrual ,
                     @DocName          = @DocNameNDC  ,         -- Íàèìåíîâàíèå
                     @SenderID         = 95014436,              -- ÇÀÎ ÍÄÖ
                     @InstStaffID      = 0 ,
                     @SendTypeID       = 10000000088 ,          -- ýëåêòðîííàÿ ïî÷òà, êëàññèôèêàòîð @ObjType = 10 , @ParentID = 3012
                     @InNum            = 'á/í' ,
                     @InDate           = @DateAccrual ,
                     @OutNum           = 'á/í' ,
                     @OutDate          = @DateAccrual,
                     @Descr            = @DocNameNDC ,             -- Îïèñàíèå
                     @InDocID          = 0,
                     @ImportFileID     = 0 ,
                     @UserID           = 1 ,
                     @ResourceID       = 0 ,                    -- Ñ÷åò èç ïîðó÷åíèÿ
                     @InnerNumber      = '1',                   -- Âíóòðåííèé íîìåð
                     @DepoInstructID   = 0 ,                    -- Åñëè ïîðó÷åíèå íå çàäàíî, âõîäÿùèé äîêóìåíò íèêóäà íå ïðèâÿçûâàåòñÿ
                     @DepoInstructType = 1
      -- êîíåö ôîðèìðîâàíèÿ âõîäÿùåãî äîêóìåíòà òèïà "îò÷åò/âûïèñêà ÍÄÖ
    
      -- Ïðèâÿçêà âõîäÿùåãî äîêóìåíòà òèïà "îò÷åò/âûïèñêà ÍÄÖ" ê ïîðó÷åíèÿì
      declare cur_DayPoruch insensitive cursor for  -- Âñå ïîðó÷åíèÿ äíÿ
    
            select DealTransactID
          from tDealTransact
         where TransactType = 7
           and InstrumentID = 3022      -- ÔÎ ÁóõÎïåð
           and InstitutionID > 2000
           and  Date=@DateAccrual
    
           open cur_DayPoruch
    
           fetch Cur_DayPoruch into @DealTransactID
    
           while @@fetch_status=0
           begin
    
             exec BIN_InsertLinkDepo  @DealTransactID  = @DealTransactID  -- Ïîðó÷åíèå
                           , @ID                       = @ID              -- Ñôîðìèðîâàííûé âõîäÿùèé äîêóìåíò
    
    
             fetch Cur_DayPoruch into @DealTransactID
           end
    
           deallocate Cur_DayPoruch
    
           select @ID = 0 -- Íà âñÿêèé ñëó÷àé
    
      -- Êîíåö ïðèâÿçêè âõîäÿùåãî äîêóìåíòà òèïà "îò÷åò/âûïèñêà ÍÄÖ" ê ïîðó÷åíèÿì
    
    
    -- Âõîäÿùèé äîêóìåíò òèïà Ðàñïîðÿæåíèå äåïîçèòàðèþ ( 10000000130) - ïî ñîáñòâåííûì áèðæåâûì ñäåëêàì áàíêà
       declare cur_OwnPoruch insensitive cursor for
    
          select DealTransactID
            from tDealTransact
         where TransactType = 7
           and InstrumentID = 3022      -- ÔÎ ÁóõÎïåð
           and InstitutionID = 2000     -- èíèöèàòîð è âëàäåëåö - íàø áàíê
           and instsecondID = 2000      --
           and  Date        = @DateAccrual
           and resSecondID = 10000000022--K50000060007
    
           open cur_OwnPoruch
    
           fetch cur_OwnPoruch into @DealtransactID
    
           select @Counter=1
    
           while @@fetch_status=0
           begin
    
             -- íà÷àëî ñîçäàíèÿ äîêóìåíòà
             select @DocNameOwn = 'Ðàñïîðÿæåíèå äåïîçèòàðèþ ïî áèðæåâûì îïåðàöèÿì'
    
             select @InnerNumber = convert(char(25),@Counter)
    
                 exec @RetVal = InputDoc_Insert
                     @InputDocID       = @ID output,            -- ID âõîäÿùåãî äîêóìåíòà
                     @TypeInOut        = 0,
                     @DocTypeID        =  10000000130,          -- Ðàñïîðÿæåíèå äåïîçèòàðèþ
                     @DocNum           = @Counter ,
                     @DocDate          = @DateAccrual ,
                     @DocName          = @DocNameOwn  ,         -- Íàèìåíîâàíèå
                     @SenderID         = 2000,                  -- Íàø áàíê
                     @InstStaffID      = 0 ,
                     @SendTypeID       = 3014 ,                 -- Ñïîñîá äîñòàâêè0 /* : */ ëè÷íî
                     @InNum            = 'á/í' ,
                     @InDate           = @DateAccrual ,
                     @OutNum           = 'á/í' ,
                     @OutDate          = @DateAccrual,
                     @Descr            = @DocNameOwn ,          -- Îïèñàíèå
                     @InDocID          = 0,
                     @ImportFileID     = 0 ,
                     @UserID           = 1 ,
                     @ResourceID       = 10000000022 ,          -- K50000060007                  -- Ñ÷åò èç ïîðó÷åíèÿ
                     @InnerNumber      = @InnerNumber,          -- Âíóòðåííèé íîìåð
                     @DepoInstructID   = 0 ,                    -- Åñëè ïîðó÷åíèå íå çàäàíî, âõîäÿùèé äîêóìåíò íèêóäà íå ïðèâÿçûâàåòñÿ
                     @DepoInstructType = 1
    
             -- êîíåö ñîçäàíèÿ äîêóìåíòà
    
             exec BIN_InsertLinkDepo  @DealTransactID  = @DealTransactID  -- Ïîðó÷åíèå
                           , @ID                       = @ID              -- Ñôîðìèðîâàííûé âõîäÿùèé äîêóìåíò
    
    
             select @Counter = @Counter + 1
             fetch cur_OwnPoruch into @DealtransactID
           end
    
           deallocate cur_OwnPoruch
    
           select @ID=0
    
      -- Êîíåö ôîðìèðîâàíèÿ è ïðèâÿçêè âõîäÿùåãî äîêóìåíòà òèïà Ðàñïîðÿæåíèå äåïîçèòàðèþ ( 10000000130)
    
    
    
    
      end
    
    
    
    select  ID        = 0
           ,ObjectID  = 0
           ,Confirmed = 0
           ,DealType  = 0

  • #2
    Если полностью убрать код в процедуру за исключением входных параметров, "Диасофт" начинает что-то в ней проверять.
    Пишет, в частности: Некоректные параметры процедуры. Не задан ID
    Хотя если запускать отдельно, то все ОК.

    Написал в конце начисления
    select ObjectID = 0
    ,InstrumentID = 0
    ,ID = 0
    ,DealType = 0
    ,DealID = 0
    ,Confirmed = 0
    - ругаЦЦо перестало.

    Также инетерсует инфа по механизму обработки ошибок "диасофта" - хотелось бы, чтобы ошибки в "докрутках" обрабатывались по общим правилам.
    Последний раз редактировалось zbc; 24.11.2009, 11:12.

    Комментарий


    • #3
      Скажите, а вы весь текст из первого поста загнали в структуру начисления?
      Имейте ввиду - все ЭТО будет выполняться с клиента... он Вам надо?
      Может проще запихать этот текст в хранимую процедуру, а в структуре ее просто вызвать?
      И еще - Структура начисления должна заканчиваться результирующим селектом. Хоть каким нибудь. Поэтому и перестало ругаться.
      Васильев А.Б.

      Комментарий


      • #4
        Сообщение от leshabv Посмотреть сообщение
        Скажите, а вы весь текст из первого поста загнали в структуру начисления?
        Имейте ввиду - все ЭТО будет выполняться с клиента... он Вам надо?
        Может проще запихать этот текст в хранимую процедуру, а в структуре ее просто вызвать?
        И еще - Структура начисления должна заканчиваться результирующим селектом. Хоть каким нибудь. Поэтому и перестало ругаться.
        Да.
        Впредь буду закатывать в процедуры все что можно, мысль верная. К тому же мне редактор "структуры" очень не нравится. Я по привычке нажимаю ctrl+c, при этом копирования не происходит, а происходит какая-то хрень: в наименовании начисления появляется значек ~. Меня это напрягает.
        Насчет параметров - тут хитрая штука.
        В пустом начислении стояло:

        select ID = 500
        ,ObjectID = 0
        ,Confirmed = 0
        ,DealType = 0
        и оно отрабатывало.
        После того, как в структуру был прописан вызов процедуры, стало ругаться, и заткнулось только после того, как было прописано.
        select ObjectID = 0
        ,InstrumentID = 0
        ,ID = 0
        ,DealType = 0
        ,DealID = 0
        ,Confirmed = 0

        Отсюда делаю вывод, что набор обязальных полей, который диасофт "хочет" иметь на выходе структуры, каким-то образом зависит от содержания текста структуры.

        Комментарий


        • #5
          Ну, насчет параметров вообще то в хелпе есть Core_Adm п.7.1

          Вставить цитату как у Вас не могу - по тупости...

          А насчет редактора - попробовал, ничего такого не увидел. Ctrl+C - все как обычно.
          Про обработку ошибок - задавайте конкретные вопросы... так я и не знаю что ответить
          Васильев А.Б.

          Комментарий


          • #6
            Сообщение от leshabv Посмотреть сообщение
            Ну, насчет параметров вообще то в хелпе есть Core_Adm п.7.1

            Вставить цитату как у Вас не могу - по тупости...

            А насчет редактора - попробовал, ничего такого не увидел. Ctrl+C - все как обычно.
            Про обработку ошибок - задавайте конкретные вопросы... так я и не знаю что ответить
            Хм, действительно копирование по ctrl+c работает

            Но точно помню, что где-то, то ли в формулах, то ли еще где не работает.

            Тильда возникает при копировании через контекстное меню, но насколько мне известно, "диасофт" вкладывает в этом копирование какой-то другой (неведомый мне) смысл. (по ходу создается копия объекта "структура" - наясно для чего это вообще надо)

            Насчет системы обработки ошибок - спасибо за желание помочь. Сформулирую вопрос поточнее (после изучения), и спрошу (скорее всего, в другой ветке) :-)

            Комментарий


            • #7
              доброго времени...
              А убрать из кода знак ":" даже в комментариях пробовали?
              Диас чувствителен к этому. В анализире все работает а в Диасофте нет.
              Я сталкивался с подобной вешью при отработки структуры начисления - теперь избегаю двоеточий в комментах!

              Комментарий

              Пользователи, просматривающие эту тему

              Свернуть

              Присутствует 1. Участников: 0, гостей: 1.

              Обработка...
              X