27 мая, среда 19:18
Bankir.Ru

Объявление

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

Help!Прикрепление ИНН в .p файле

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

  • Help!Прикрепление ИНН в .p файле

    Здравствуйте! Не получается забить ИНН в оборотную ведомость.Базовый модуль-счета. Это та , что по ctrl+G загружается. Вот пример цикла в пэшке.....
    RUN GetCustName IN h_base (acct.cust-cat,
    acct.cust-id,
    acct.acct,
    OUTPUT mName[1],
    OUTPUT mName[2],
    INPUT-OUTPUT mName[3]).
    FOR EACH tmprecid NO-LOCK,
    FIRST cust-corp WHERE (cust-corp) = tmprecid.id NO-LOCK.
    for each acct where acct.acct begins "40" and acct.cust-cat EQ 'Ю' AND acct.cust-id EQ cust-corp.cust-id AND acct.filial-id EQ "0000" and acct.close-date EQ ?.
    then put unformatted " ИНН " + cust-corp.inn format "x(20)" skip.

    end.
    Не хочет, не работает и всё.Подскажите, кто знает, правильное решение.Правильный цикл.Спасибо.

  • #2
    Что это за непонятный кусок кода?
    Вы правите стандартную процедуру или пишете собственную?
    У вас по идее должно быть что-то (если процедура выполняет цикл по счетам)

    FOR EACH tmprecid NO-LOCK, FIRST acct WHERE RECID(acct) EQ tmprecid.id NO-LOCK:
    CASE acct.cust-cat:
    WHEN "Ю" THEN DO:
    FIND FIRST cust-corp WHERE cust-corp.cust-id EQ acct.cust-id NO-LOCK NO-ERROR.
    mINN = cust-corp.inn.
    END.

    WHEN "Ч" THEN DO:
    FIND FIRST person WHERE cust-corp.cust-id EQ acct.cust-id NO-LOCK NO-ERROR.
    mINN = person.inn.
    END.
    <...>
    END.
    ИБС БИСКВИТ: Внедрение, консалтинг: www.reunico.ru

    Комментарий


    • #3
      Стандартную процедуру правлю. Вот полная пэшка,вставив вашу версию выдает ошибку все равно...мозг кипит уже...


      {globals.i}
      {chkacces.i}
      {tmprecid.def}
      {wordwrap.def}

      /*-------------------- Входные параметры --------------------*/
      Define Input Param RID as RecID no-undo.

      /*-------------------- Объявление переменных --------------------*/

      Define Buffer buf_0_acct For acct .
      DEFINE VAR tmpname AS character NO-UNDO EXTENT 5.
      DEFINE TEMP-TABLE ttXAttr NO-UNDO
      FIELD PickValue AS RECID.
      {setdest.i}
      find _user where _user._userid eq userid('bisquit') no-lock no-error.

      /*--------------- Переменные для специальных полей: ---------------*/
      Define Variable mAccumDays As Integer No-Undo.
      Define Variable mAccumObCr As Decimal No-Undo.
      Define Variable mAccumObDb As Decimal No-Undo.
      Define Variable mAccumSaldo As Decimal No-Undo.
      Define Variable mAccumValCr As Decimal No-Undo.
      Define Variable mAccumValDb As Decimal No-Undo.
      Define Variable mAccumValSaldo As Decimal No-Undo.
      Define Variable mBegDate As Date No-Undo.
      Define Variable mEndDate As Date No-Undo.
      Define Variable mNameMonth As Character No-Undo.
      Define Variable mObCr As Decimal No-Undo.
      Define Variable mObDb As Decimal No-Undo.
      Define Variable mSaldo2 As Decimal No-Undo.
      Define Variable mStrWorkOrCalend As Character No-Undo.
      Define Variable mValCr As Decimal No-Undo.
      Define Variable mValDb As Decimal No-Undo.
      Define Variable mValSaldo2 As Decimal No-Undo.


      /*--------------- Определение форм для циклов ---------------*/
      /* Форма для цикла "r1" */
      Form
      mNameMonth format "x(10)" at 2 mValDb format "->>>,>>>,>>>,>>9.99" at 30 mObDb format "->>>,>>>,>>>,>>9.99" at 51 mValCr format "->>>,>>>,>>>,>>9.99" at 72 mObCr format "->>>,>>>,>>>,>>9.99" at 93 mSaldo2 format "->>>,>>>,>>>,>>9.99" at 114 skip
      with frame frm_-1 down no-labels no-underline no-box width 138.

      Def Var FH_osv2-1 as integer init 1 no-undo. /* frm_1: мин. строк до перехода на новую страницу */


      /* Начальные действия */
      {sh-defs.i}
      DEF SHARED VAR mWorkOrCalend AS INT NO-UNDO.
      DEF VAR mCurDate AS DATE NO-UNDO.
      DEF VAR mIsHoli AS LOGICAL NO-UNDO.
      DEF VAR mMonth AS INT NO-UNDO EXTENT 2.
      DEF SHARED VAR mAllLine AS LOGICAL NO-UNDO. /* показывать суммы за каждый день */
      DEF VAR mMoveDate AS DATE NO-UNDO.
      DEF VAR mCountDays AS INT NO-UNDO.
      DEF VAR mObDbBuf AS DEC NO-UNDO.
      DEF VAR mObCrBuf AS DEC NO-UNDO.
      DEF VAR mSaldoBuf AS DEC NO-UNDO.
      DEF VAR mCurDate2 AS DATE NO-UNDO.
      DEF VAR mBegDate2 AS DATE NO-UNDO.
      DEF VAR mEndDate2 AS DATE NO-UNDO.
      DEF VAR mDays AS INT NO-UNDO.
      DEF VAR mSaldo1 AS DEC NO-UNDO. /* сумма остатков за месяц */
      DEF VAR mValSaldo1 AS DEC NO-UNDO.
      DEF VAR mName AS CHARACTER FORMAT "x(40)" EXTENT 10 NO-UNDO.
      DEFINE VAR flag AS integer NO-UNDO.


      /*-----------------------------------------
      Проверка наличия записи главной таблицы,
      на которую указывает Input Param RID
      -------------------------------------------*/
      Find acct Where RecID(acct) = RID no-lock no-error.
      If Not Avail(acct) then do:
      message "Нет записи <acct>".
      Return.
      end.

      /*------------------------------------------------
      Выставить buffers на записи, найденные
      в соответствии с заданными в отчете правилами
      ------------------------------------------------*/
      /* Т.к. не задано правило для выборки записей из главной таблицы,
      просто выставим его buffer на input RecID */
      find buf_0_acct where RecID(buf_0_acct) = RecID(acct) no-lock.

      /*------------------------------------------------
      Вычислить значения специальных полей
      в соответствии с заданными в отчете правилами
      ------------------------------------------------*/
      /* Вычисление значения специального поля mAccumDays */
      mAccumDays = 0.

      /* Вычисление значения специального поля mAccumObCr */
      mAccumObCr = 0.

      /* Вычисление значения специального поля mAccumObDb */
      mAccumObDb = 0.

      /* Вычисление значения специального поля mAccumValCr */
      mAccumValCr=0.

      /* Вычисление значения специального поля mAccumValDb */
      mAccumValDb=0.

      /* Вычисление значения специального поля mBegDate */
      mBegDate = beg-date.

      /* Вычисление значения специального поля mEndDate */
      mEndDate = end-date.

      /* Вычисление значения специального поля mNameMonth */
      mNameMonth = "".

      /* Вычисление значения специального поля mObCr */
      mObCr = 0.

      /* Вычисление значения специального поля mObDb */
      mObDb = 0.

      /* Вычисление значения специального поля mSaldo2 */
      mSaldo2 = 0.

      /* Вычисление значения специального поля mStrWorkOrCalend */
      mStrWorkOrCalend = IF mWorkOrCalend EQ 0 THEN
      "рабочих"
      ELSE
      "календарных".

      /* Вычисление значения специального поля mValCr */
      mValCr=0.

      /* Вычисление значения специального поля mValDb */
      mValdb=0.

      /* Вычисление значения специального поля mValSaldo2 */
      mValSaldo2=0.

      /*-------------------- Формирование отчета --------------------*/
      {strtout3.i &cols=138 &option=Paged}

      RUN GetCustName IN h_base (acct.cust-cat,
      acct.cust-id,
      acct.acct,
      OUTPUT mName[1],
      OUTPUT mName[2],
      INPUT-OUTPUT mName[3]).
      FOR EACH tmprecid NO-LOCK, FIRST acct WHERE RECID(acct) EQ tmprecid.id NO-LOCK:
      CASE acct.cust-cat:
      WHEN "Ю" THEN DO:
      FIND FIRST cust-corp WHERE cust-corp.cust-id EQ acct.cust-id NO-LOCK NO-ERROR.
      mINN = cust-corp.inn.
      END.

      WHEN "Ч" THEN DO:
      FIND FIRST person WHERE cust-corp.cust-id EQ acct.cust-id NO-LOCK NO-ERROR.
      mINN = person.inn.
      END.
      <...>
      END.
      put unformatted "ООО КБ " CHR(34) "" CHR(34) skip "" skip "" skip(5).
      put unformatted date(today) FORMAT "99.99.9999" " " mName[1] skip.
      put unformatted "Исх._____ " tmpname[2] format "x(20)" skip.
      put unformatted skip(2) " Справка" SKIP (2) .
      put unformatted "ООО КБ " CHR(34) "" CHR(34) " сообщает, что за период с " mBegDate Format "99/99/9999" " по " mEndDate Format "99/99/9999" " " "обороты по счету" skip.
      put unformatted "№" buf_0_acct.acct Format "x(22)" "составили:" skip(3) .
      put unformatted "----------------------------------------------------------------------------------------------------------------" skip.
      put unformatted "| | | Обороты по дебету | Обороты по кредиту |" skip.
      put unformatted "| | Вал |-----------------------------------------|-----------------------------------------|" skip.
      put unformatted "| | | Валюта | Эквивалент (руб) | Валюта | Эквивалент (руб) |" skip.
      put unformatted "----------------------------------------------------------------------------------------------------------------" skip.
      put unformatted " " SUBSTR (acct.acct,6,3) skip(1).
      /* Начало цикла "r1" */
      do:

      DO mCurDate = mBegDate TO mEndDate
      :
      ASSIGN
      mBegDate2 = mCurDate
      mEndDate2 = mBegDate2 + 31
      mEndDate2 = DATE(MONTH(mEndDate2),1,YEAR(mEndDate2)) - 1
      .
      IF mEndDate2 > mEndDate THEN
      mEndDate2 = mEndDate.

      ASSIGN
      mValDb = 0
      mValCr = 0
      mValSaldo1 = 0
      mValSaldo2 = 0
      mObDb = 0
      mObCr = 0
      mSaldo1 = 0
      mSaldo2 = 0
      mDays = 0
      .
      DO mCurDate2 = mBegDate2 TO mEndDate2
      :
      IF mWorkOrCalend EQ 0 THEN
      DO:
      mIsHoli = Holiday (mCurDate2).
      IF mIsHoli EQ YES THEN
      NEXT.
      END.
      RUN acct-pos IN h_base ( acct.acct,
      acct.currency,
      mCurDate2,
      mCurDate2,
      gop-status
      ).
      ASSIGN
      sh-bal = IF acct.side EQ "П" THEN (0 - sh-bal) ELSE sh-bal
      sh-val = IF acct.side EQ "П" THEN (0 - sh-val) ELSE sh-val
      mDays = mDays + 1
      mValDb = mValDb + sh-vdb
      mValCr = mValCr + sh-vcr
      mValSaldo1 = mValSaldo1 + sh-val
      mObDb = mObDb + sh-db
      mObCr = mObCr + sh-cr
      .

      /* показать каждый день */
      IF mAllLine EQ YES THEN DO:
      mSaldo1 = sh-db - sh-cr.
      PUT
      UNFORMATTED " "
      mCurDate2 FORMAT "99/99/9999"
      sh-vdb FORMAT "->,>>>,>>>,>>>,>>9.99"
      sh-db FORMAT "->,>>>,>>>,>>>,>>9.99"
      sh-vcr FORMAT "->,>>>,>>>,>>>,>>9.99"
      sh-cr FORMAT "->,>>>,>>>,>>>,>>9.99"
      mSaldo1 FORMAT "->,>>>,>>>,>>>,>>9.99"
      SKIP
      .
      END.
      END.

      ASSIGN
      mSaldo2 = mObDb - mObCr /* средний остаток за месяц */
      mCurDate = mEndDate2
      mNameMonth = ENTRY(MONTH(mCurDate),'январь,февраль,март,апрель,май,июнь,июль,август,сентябрь,октябрь,ноябрь,декабрь')
      mAccumValDb = mAccumValDb + mValDb
      mAccumValCr = mAccumValCr + mValCr
      mAccumObDb = mAccumObDb + mObDb
      mAccumObCr = mAccumObCr + mObCr
      mAccumSaldo = mAccumSaldo + mSaldo2
      .

      Disp
      mNameMonth
      mObDb
      mObCr
      mValDb
      mValCr
      with frame frm_-1.
      if Line-Count + FH_osv2-1 >= Page-Size and Page-Size <> 0 then do:
      Page.
      end.
      else
      Down with frame frm_-1.
      end.
      end.
      /* Конец цикла "r1" */

      put unformatted "----------------------------------------------------------------------------------------------------------------" skip.
      put unformatted " "
      mAccumValDb Format "->>>,>>>,>>>,>>9.99"
      " " mAccumObDb Format "->>>,>>>,>>>,>>9.99"
      " " mAccumValCr Format "->>>,>>>,>>>,>>9.99"
      " " mAccumObCr Format "->>>,>>>,>>>,>>9.99"
      "" skip.
      put unformatted "----------------------------------------------------------------------------------------------------------------" skip(1).
      put unformatted " Итого:"
      " "
      mAccumObDb Format "->>>,>>>,>>>,>>9.99"
      " "
      mAccumObCr Format "->>>,>>>,>>>,>>9.99"
      "" skip.
      put unformatted " " skip (25) .
      put unformatted "Зам.Главного бухгалтера" skip(1).
      put unformatted "ООО КБ " CHR(34) "" CHR(34) " " " " skip(15).
      put unformatted "Исполнитель: " _user._user-name format "x(50)" skip "" skip "" skip.
      {intrface.del}
      {endout3.i &nofooter=yes}

      Комментарий


      • #4
        ВСе решилось
        FOR EACH tmprecid NO-LOCK, FIRST acct WHERE RECID(acct) EQ tmprecid.id NO-LOCK:
        FIND FIRST cust-corp WHERE cust-corp.cust-id EQ acct.cust-id NO-LOCK NO-ERROR.
        put unformatted "ИНН" + cust-corp.inn skip.
        END.

        Комментарий


        • #5
          Теперь осталось только лишь, чтобы к месяцу дописывался год...

          Комментарий

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