6 апреля, понедельник 08:55
Bankir.Ru

Объявление

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

Дайте ликбез по таблицам Кворума

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

  • Дайте ликбез по таблицам Кворума

    Народ!
    Дайте описание основных таблиц Кворума, или любой sql-запрос для примера - хочу разобраться как получить основные поля документа и остаток по счёту. Моим админам не до меня, описания таблиц у меня нет, а разбираться через SQL-Developer долго буду без помощи.

  • #2
    Вопрос, к сожалению, требует слишком развернутого ответа. Попробую очень кратко наметить направления копания.
    1. Официального описания таблиц Кворума ИМХО нет. Все что есть - это исходники словаря (файлы *.dii) и комментарии в самом описании структуры таблиц на Оракле. Плюс разбросанные по всем файлам документации *.rme ссылки на предназначение того или иного нового поля таблицы. Так что красивой и ежу_понятной доки не ждите.
    2. Разные виды документов в Кворуме хранятся в разных таблицах. Например:
    - внутрибанковские документы - MemOrder;
    - межбанковские документы - PayOrder;
    - кассовые документы - CashOrder...
    Есть еще другие виды документов и соответственно другие таблицы для них. Комментарии к документам (назначения платежа) как правило хранятся в отдельной таблице (для вышеперечисленных видов документов это таблица PayOrCom). Некоторые поля документа (например "налоговые" поля платежных поручений) хранятся в отдельной таблице "шифров, привязанных к документам" (DocsByShifr).
    Подробного описания таблиц я давать не буду, попробуйте все-таки выполнить select * from MemOrder и самостоятельно посмотреть что там к чему. На более конкретизированные вопросы по структуре таблиц, народ здесь может и постарается ответить.
    3. Остатки по счетам хранятся в таблице Lim.
    Для получения остатков по счетам рекомендуется использовать функции из пакета LimMan:
    GetOutLim, GetNewOutLim, GetInLim, GetNewInLim
    4. P.S. На лицевые счета в большинстве таблиц Кворума ссылаются не по их новому 20-значному номеру (NewAccNum), а по так называемому "старому" 10-значному номеру счета и "старому" коду валюты - совокупность AccNum+CurrCode идентифицирует счет.

    Больше конкретики !

    Комментарий


    • #3
      Прошу прощения за оффтопик, но только что поймал себя на мысли, что это будет самый черный день в моей жизни, когда кто-нибудь из нашего филиала не из отдела автоматизации оставит аналогичную просьбу.
      "Единственный способ научиться играть лучше - играть с более сильным соперником!"

      Комментарий


      • #4
        Юнец

        НО.. есть время подготовиться..

        Комментарий


        • #5
          Сообщение от Юнец Посмотреть сообщение
          Прошу прощения за оффтопик, но только что поймал себя на мысли, что это будет самый черный день в моей жизни, когда кто-нибудь из нашего филиала не из отдела автоматизации оставит аналогичную просьбу.
          Этого нельзя допускать, поскольку богу - богово, кесарю - кесарева, а слесарю - слесарево. Нельзя давать пользователям писать программы. Я тоже, как и вы не стал отвечать. Если хочет - пускай поставит на свой комп oracle и тренируется. Когда получится хоть что то толковое - тогда можно посмотреть. Дело не в том, что пользователь что то испортит, а дело в том - как потом с этой галематьей работать другим, поскольку программист нацеливается не только на получение конкретных данных, а на решение целого класса проблем, и одна из проблем - красивый и удобный интерфейс пользователя и связка с другими задачами.

          Комментарий


          • #6
            kgbprioda Прошу понять меня правильно, я НЕ намекал, что Kromen далек от сферы ИТ (история его сообщений тому подтверждение), просто видимо фраза "Моим админам не до меня" навеяла эту мысль.
            "Единственный способ научиться играть лучше - играть с более сильным соперником!"

            Комментарий


            • #7
              А как понять, находясь в коде, над какой из основных таблиц ты сейчас выполняешь операцию?

              Т.е привязывая какую-то процедуру под Ф12 над Внутрибанковские документы -> Ввод/просмотр я знаю, что она выполнится над MemOrder.

              Но можно ли один .rpt подвязать под несколько форм и там уже узнавать, какая таблица сейчас "основная" MemOrder или PayOrder.

              И ещё, по ликбезу, правильно ли я понимаю, что соответствие форм и таблиц () таково:

              Внутрибанковские документы
              - Ввод/просмотр -MemOrder
              - Ввод/просмотр (вал) -MemOrder
              - Ввод/просмотр (конв) -MemOrder
              - Ввод/просмотр (конв 1) -MemOrder
              - Архив -MemOrder

              Межбанковские документы
              - Ввод просмотр -PayOrder
              - Архив -PayOrder

              Спасибо.

              Комментарий


              • #8
                Сообщение от RoverHP Посмотреть сообщение
                А как понять, находясь в коде, над какой из основных таблиц ты сейчас выполняешь операцию?
                Т.е привязывая какую-то процедуру под Ф12 над Внутрибанковские документы -> Ввод/просмотр я знаю, что она выполнится над MemOrder.
                Но можно ли один .rpt подвязать под несколько форм и там уже узнавать, какая таблица сейчас "основная" MemOrder или PayOrder.
                Есть несколько способов один из самых распространенных - воспользоваться функцией isCurrentTable, например так:
                Код:
                if  isCurrentTable(coMemOrder)
                {
                  //делаем действия специфичные для MemOrder
                } else
                if  isCurrentTable(coPayOrder)
                {
                  //делаем действия специфичные для PayOrder
                } else PutError('Для этого инерфейса данная процедура не предназначена!');
                Сообщение от RoverHP Посмотреть сообщение
                И ещё, по ликбезу, правильно ли я понимаю, что соответствие форм и таблиц () таково:

                Внутрибанковские документы
                - Ввод/просмотр -MemOrder
                - Ввод/просмотр (вал) -MemOrder
                - Ввод/просмотр (конв) -MemOrder
                - Ввод/просмотр (конв 1) -MemOrder
                - Архив -MemOrder

                Межбанковские документы
                - Ввод просмотр -PayOrder
                - Архив -PayOrder
                Ну вобщем да. Весь внутрибанк смотрит на таблицу MemOrder, почти весь межбанк - на таблицу PayOrder. При этом в разных пунктах меню разные фильтры, разные формы ввода, разные возможности...

                Комментарий


                • #9
                  Спасибо, heg!

                  Комментарий


                  • #10
                    И ещё вопрос. По части ликбеза, так сказать.

                    В какой момент появляются в таблице PRO? После проводки?

                    И ещё - можно ли как-то определить, что некий документ первый по какому-то счёту?

                    Спасибо.

                    Комментарий


                    • #11
                      Записи в таблице Pro обычно появляются в момент проводки распоряжения на проводку.
                      Т.е. Операции/Проводка документов, там выделить одно или несколько распоряжения со статусом "Нов" и нажать на кнопочку "Провести" - в этот момент вставляются новые записи в таблицу Pro.
                      Также проводки в таблице Pro порождаются при проведении кассовых документов: Операции/Кассовые документы/Проводка касс. документов (рубли/валюта)/Alt+В
                      Ну и еще проводки могут порождаться автоматизировано какой-нибудь самописной процедурой, но это уже не уровень ликбеза...

                      Что значит "документ первый по счету"? Что имеется ввиду под "документом" и зачем вообще нужно знать, который из них был первый? В системе есть понятие "операционный день", а понятия "операционный час или минута" - нет. Баланс ведется с точностью до одного дня, все документы в одном дне с бухгалтерской точки зрения как бы одновременны.
                      А с технической точки зрения все выглядит так:
                      1. Первичные бухгалтерские документы или операции (то что хранится в таблицах PayOrder, MemOrder и т.п.) как правило не содержат поля "время" - установить очередность их ввода можно только косвенно, по возрастанию значения уникального ключа в таблице.
                      2. Система отслеживает изменения статусов документов. В момент изменения статуса создается запись в таблице Journal, в которой фиксируется кто и в какое время менял статус какого документа. Следовательно можно узнать, какой документ в какой момент регистрировался.
                      3. Система отслеживает порождение одних документов/операций от других документов/операций. Момент порождения новых документов фиксируется в таблице Kvitan, с указанием времени. Из этого можно, например, определить, в какой момент межбанковский документ породил распоряжение на проводку.
                      4. В таблице Pro фиксируется время совершения проводки (момент нажатия кнопочки "Провести"), поэтому можно посмотреть, какая из проводок была раньше проведена.
                      5. Существует возможность ведения протокола изменений в БД. С этой штукой вообще можно посмотреть кто, что и когда вставлял, апдейтил, удалял в какой таблице... Но это уже чисто административный уровень. Мы протоколом не пользовались.

                      Комментарий

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