3 августа, понедельник 11:42
Bankir.Ru

Объявление

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

Универсальные транзакции

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

  • почему не попробовать вместо входящего параметра op.op взять RECID?

    DEFINE INPUT PARAM RID AS RECID NO-UNDO.

    А затем FIND FIRST op WHERE RECID(op) = RID NO-LOCK NO-ERROR.
    Ну и соответственно вызвать ПЕЧАТЬ()

    У меня сработало


    1. У меня проблема в том что список процедур печати ПП уже полон и добавить туда еще одну я не могу их там уже 9 штук.
    Вот по этому и надо, чтобы печатало сразу из УТ.
    2. Если УТ пройти до конца. потом в списке документов найти нужный, его выделить и через Ctrl+G вызвать мою процедуру с передачей RecId то все прекласно отрабатывает, а вот во время выполнения УТ все поля выдаются пустыми :-(. Т.е. такое ощущение что УТ блокирует запись в базе и не дает её читать пока не выполнится.

    Комментарий


    • Думаю, что RECID никак, а вот ROWID, что правильнее, можно, например,


      Код:
      @__rowid(20)


      Не получается передать этот параметр, пишет Ошибка выполнения.
      Какой точно синтаксис ?

      Комментарий


      • Сообщение от mns17 Посмотреть сообщение
        Код:
        @__rowid(20)

        Не получается передать этот параметр, пишет Ошибка выполнения.
        Какой точно синтаксис ?
        А куда пытаемся передать? ROWID это не тоже самое, что RECID, и передаваться он должен туда, где параметр объявлен как ROWID

        Комментарий


        • Сообщение от mns17 Посмотреть сообщение
          почему не попробовать вместо входящего параметра op.op взять RECID?

          DEFINE INPUT PARAM RID AS RECID NO-UNDO.

          А затем FIND FIRST op WHERE RECID(op) = RID NO-LOCK NO-ERROR.
          Ну и соответственно вызвать ПЕЧАТЬ()

          У меня сработало


          1. У меня проблема в том что список процедур печати ПП уже полон и добавить туда еще одну я не могу их там уже 9 штук.
          Вот по этому и надо, чтобы печатало сразу из УТ.
          2. Если УТ пройти до конца. потом в списке документов найти нужный, его выделить и через Ctrl+G вызвать мою процедуру с передачей RecId то все прекласно отрабатывает, а вот во время выполнения УТ все поля выдаются пустыми :-(. Т.е. такое ощущение что УТ блокирует запись в базе и не дает её читать пока не выполнится.

          Бляха-муха.Я ж говорю,закрой превьюер и попробуй выйти в ОС и увидишь что у тебя файл заполнен!У меня такая фигня была с УТ.Если память не изменяет.

          Комментарий


          • Подскажите пожалуйста...написал функцию для УТ, сохранил в файл pp-p*.p
            Откомпилил его. Что нужно сделать,чтобы зарегистрировать данную процедурку как библиотеку?

            Заранее спасибо
            Большой Московский Форум

            Комментарий


            • Сообщение от fotomix Посмотреть сообщение
              Подскажите пожалуйста...написал функцию для УТ, сохранил в файл pp-p*.p
              Откомпилил его. Что нужно сделать,чтобы зарегистрировать данную процедурку как библиотеку?

              Заранее спасибо
              Мне встречалось описание, что нужно. Наизусть не помню. Прежде чем искать, спрошу: а чем не устраивает дописывание в специально предназначенную для самодеятельности pp-ptmp.p ?
              /kiv

              Комментарий


              • Откомпилил его. Что нужно сделать,чтобы зарегистрировать данную процедурку как библиотеку
                Добавить в классификатор Библиотеки (Администрирование -> Настройки -> Классификаторы)

                Комментарий


                • Спасибо за подсказку! Получилось.
                  Большой Московский Форум

                  Комментарий


                  • В УТ есть функция КЛАССИФ возвращает одно значение из произвольного классификатора. Как вернуть из классификатора несколько значений с визуализацией? Т.е. классификатор выводится на экран, отмечаются несколько записей, и транзакция дальше со всем этим что-то делает. Пробовал сделать через ОБЪЕКТ(именно такое поведение и хочется получить), но он ругается на ошибку вызова метода Browse для класса "Наш классификатор", что вполне логично, т.к. такого класса нет Как решить?

                    Комментарий


                    • Сообщение от advbnk Посмотреть сообщение
                      В УТ есть функция КЛАССИФ возвращает одно значение из произвольного классификатора. Как вернуть из классификатора несколько значений с визуализацией? Т.е. классификатор выводится на экран, отмечаются несколько записей, и транзакция дальше со всем этим что-то делает. Пробовал сделать через ОБЪЕКТ(именно такое поведение и хочется получить), но он ругается на ошибку вызова метода Browse для класса "Наш классификатор", что вполне логично, т.к. такого класса нет Как решить?
                      Ну можно с визуальными фильтрами поиграться...filternavshowall

                      Комментарий


                      • Сообщение от kabysdox Посмотреть сообщение
                        Ну можно с визуальными фильтрами поиграться...filternavshowall
                        Пробовал, нужно указать FilterClass, а класса то нет, название классификатора не подходит, а при попытке указать code, при запуске ругается что не указан FirstFrame.

                        з.ы. помоему Filter и все его потомки и ОБЪЕКТ, суть есть одно и тоже, механизм одинаков -> проблема таже..

                        Комментарий


                        • Сообщение от advbnk Посмотреть сообщение
                          Пробовал, нужно указать FilterClass, а класса то нет, название классификатора не подходит, а при попытке указать code
                          Правильно, именно code.

                          Сообщение от advbnk Посмотреть сообщение
                          при запуске ругается что не указан FirstFrame.
                          з.ы. помоему Filter и все его потомки и ОБЪЕКТ, суть есть одно и тоже, механизм одинаков -> проблема таже.
                          Да. Это "одно и то же" называется browseld.p и, как правило, navigate.cqr . В частности, для "просто классификатора" это именно navigate.cqr .

                          Для правильного вызова нужно задавать поля фильтра. Вот тут http://dom.bankir.ru/showpost.php?p=2639911 я приводил текст процедуры, которая поля фильтра покажет.

                          Для "просто классификатора в корне" это поля
                          SetFirstFrm=0
                          class=(имя классификатора)
                          parent=(имя классификатора)

                          Только не путайте поле фильтра с именем "class" и параметр, в котором указывается класс объекта. Класс объекта == code .
                          /kiv

                          Комментарий


                          • Илюха,
                            Офигенски! (с)
                            Спасибо, все получилось! С наступающим Новым Годом!
                            Последний раз редактировалось advbnk; 31.12.2009, 10:35.

                            Комментарий


                            • Сообщение от advbnk Посмотреть сообщение
                              Илюха,
                              Офигенски! (с)
                              Спасибо, все получилось! С наступающим Новым Годом!
                              Может и мне объяснят, как дальше работать с тем, что выбралось в визуальном фильтре?Используете Гр_транзакция()?

                              Комментарий


                              • Сообщение от kabysdox Посмотреть сообщение
                                Может и мне объяснят, как дальше работать с тем, что выбралось в визуальном фильтре?Используете Гр_транзакция()?
                                Для шаблона с визуализацией(filter и его подклассы), я использую именно Гр_транзакция(). В которой идет уже обработка полученных данных. Как обращаться к ним описано в документации.

                                Функция ОБЪЕКТ возвращет результат в виде строки, с разделителем CHR(1). Т.е. если отметили 3 записи, то в результате получим 1 строку, в которой будут склеены эти 3 записи и отделены друг от друга CHR(1). Строку обрабатываем в зависимости от задачи.

                                з.ы. т.к. ОБЪЕКТ возвращает character то, если не ошибаюсь, имеем ограничение на длину строки в 32К. Если выбираться одновременно могут много обьектов с "длинными" данными, надо использовать шаблоны с визуализацией.

                                Комментарий


                                • Сообщение от advbnk Посмотреть сообщение
                                  Для шаблона с визуализацией(filter и его подклассы), я использую именно Гр_транзакция(). В которой идет уже обработка полученных данных. Как обращаться к ним описано в документации.

                                  Функция ОБЪЕКТ возвращет результат в виде строки, с разделителем CHR(1). Т.е. если отметили 3 записи, то в результате получим 1 строку, в которой будут склеены эти 3 записи и отделены друг от друга CHR(1). Строку обрабатываем в зависимости от задачи.

                                  з.ы. т.к. ОБЪЕКТ возвращает character то, если не ошибаюсь, имеем ограничение на длину строки в 32К. Если выбираться одновременно могут много обьектов с "длинными" данными, надо использовать шаблоны с визуализацией.
                                  Про Гр_транзакция все понятно,можно не продолжать...А вот что возвращает объект()?
                                  3 записи чего?Скажем если я выбираю з клиентов то что в результате?Какие поля?cust-id,corp-name?ЧТо?

                                  Комментарий


                                  • Сообщение от kabysdox Посмотреть сообщение
                                    Про Гр_транзакция все понятно,можно не продолжать...А вот что возвращает объект()?
                                    3 записи чего?Скажем если я выбираю з клиентов то что в результате?Какие поля?cust-id,corp-name?ЧТо?
                                    Возвращает суррогат объекта, для acct, например, будет НомСчета,КодВалюты
                                    А разбирать через num-entries и entry, а потом циклом его, циклом...

                                    Комментарий


                                    • Сообщение от JohnD Посмотреть сообщение
                                      Возвращает суррогат объекта, для acct, например, будет НомСчета,КодВалюты
                                      А разбирать через num-entries и entry, а потом циклом его, циклом...
                                      Что есть суррогат объекта?Как понять откуда он берется?

                                      Комментарий


                                      • Сообщение от kabysdox Посмотреть сообщение
                                        Что есть суррогат объекта?Как понять откуда он берется?
                                        Cуррогат - уникальное значение реквизита объекта для хранения однозначных ссылок в таких таблицах, как xattr и т.п.
                                        Я думаю что это первичный индекс. Может меня кто поправит?
                                        Кстати, для person и cust-corp будет cust-id.

                                        Комментарий


                                        • Сообщение от JohnD Посмотреть сообщение
                                          Cуррогат - уникальное значение реквизита объекта для хранения однозначных ссылок в таких таблицах, как xattr и т.п.
                                          Я думаю что это первичный индекс. Может меня кто поправит?
                                          Кстати, для person и cust-corp будет cust-id.
                                          Угу,возможно.Спасибо.

                                          Комментарий


                                          • Сообщение от JohnD Посмотреть сообщение
                                            Cуррогат - уникальное значение реквизита объекта для хранения однозначных ссылок в таких таблицах, как xattr и т.п.
                                            Я думаю что это первичный индекс. Может меня кто поправит?
                                            Кстати, для person и cust-corp будет cust-id.
                                            Чаще всего - это суррогат, смотреть в surr.i

                                            Но, например для navigate.cqr может быть переопределен через фильтр. А для любого другого браузера и вообще быть другим.
                                            /kiv

                                            Комментарий


                                            • Подскажите: начисляю комиссию по счету.
                                              Шаблон (всего один):
                                              Дебет: фильтр()
                                              Кредит:706...
                                              В "содержание" надо добавить наименование клиента счета по дебету (но там же он не 1, а их несколько и отбираются они по фильтру).
                                              Функции "Клиент2" и "НаимСчета" не отрабатывают - подозреваю из-за того, что стоит по дебету фильтр.
                                              Может есть еще какие функции?
                                              Доки может есть у кого?
                                              Я дам Вам парабеллум.

                                              Комментарий


                                              • Подскажите пожалуйста, можно ли при помощи функции ОБЪЕКТ отобрать в брауз счета с условиями (допустим условий может быть 5) в зависимости от значений доп.реквизита счета? p.s. Выбрать из брауза можно несколько записей.
                                                Такая конструкция у меня не работает...
                                                @AcctList = ОБЪЕКТ(ДА,
                                                'bal-acct' + chr(1) +
                                                'РеестрС', /* код доп.рекв. на счете*/
                                                '42301*' + chr(1) +
                                                '42305*', /* маска значения доп.река*/
                                                '',"MULTIPLE,ESC_NO_ERROR,acctb");

                                                Заранее спасибо.
                                                Большой Московский Форум

                                                Комментарий


                                                • Сообщение от fotomix Посмотреть сообщение
                                                  Подскажите пожалуйста, можно ли при помощи функции ОБЪЕКТ отобрать в брауз счета с условиями (допустим условий может быть 5) в зависимости от значений доп.реквизита счета? p.s. Выбрать из брауза можно несколько записей.
                                                  Такая конструкция у меня не работает...
                                                  @AcctList = ОБЪЕКТ(ДА,
                                                  'bal-acct' + chr(1) +
                                                  'РеестрС', /* код доп.рекв. на счете*/
                                                  '42301*' + chr(1) +
                                                  '42305*', /* маска значения доп.река*/
                                                  '',"MULTIPLE,ESC_NO_ERROR,acctb");

                                                  Заранее спасибо.
                                                  Можно (и единственно можно) выбрать то, что выбирается стандартным "фильтром". Вот Вы сперва просто в обычном браузере открываете счета, накладываете нужный фильтр, а потом смотрите, какие переменные фильтра (их имена не обязательно совпадают с именами полей таблиц или, тем более, названиями допреков) чему равны. Ссылку на простую p-шку, которая эти переменные и их значения покажет, я уже давал буквально на этой странице.

                                                  В случае допрека поле фильтра sc-1 должно быть равно коду допрека (РеестрС), а поле sv-1 = значению допрека (42305*).
                                                  /kiv

                                                  Комментарий


                                                  • Сообщение от fotomix Посмотреть сообщение
                                                    Подскажите пожалуйста, можно ли при помощи функции ОБЪЕКТ отобрать в брауз счета с условиями (допустим условий может быть 5) в зависимости от значений доп.реквизита счета? p.s. Выбрать из брауза можно несколько записей.
                                                    Такая конструкция у меня не работает...
                                                    @AcctList = ОБЪЕКТ(ДА,
                                                    'bal-acct' + chr(1) +
                                                    'РеестрС', /* код доп.рекв. на счете*/
                                                    '42301*' + chr(1) +
                                                    '42305*', /* маска значения доп.река*/
                                                    '',"MULTIPLE,ESC_NO_ERROR,acctb");

                                                    Заранее спасибо.
                                                    'bal-acct' + chr(1) +
                                                    и
                                                    '42301*' + chr(1) +
                                                    надо бы поправить.
                                                    в bal-acct не должно быть звездочки

                                                    Комментарий


                                                    • simsimd, звездочка должна быть...я отбираю счета по маске, дело в другом...не могу условие задать по значению доп.река
                                                      Большой Московский Форум

                                                      Комментарий


                                                      • Сообщение от fotomix Посмотреть сообщение
                                                        simsimd, звездочка должна быть...я отбираю счета по маске, дело в другом...не могу условие задать по значению доп.река
                                                        ОБЪЕКТ(ДА,'sc-1' + chr(1) + 'sv-1','РеестрС' + chr(1) + '42301,42305','','MULTIPLE,ESC_NO_ERROR ,acctb');
                                                        А вообще Илюха вам все уже объяснил.

                                                        з.ы. звездочку не надо, если у вас там действительно бал-аккт лежит из 5 символов ))

                                                        Комментарий


                                                        • Всем спасибо!
                                                          Большой Московский Форум

                                                          Комментарий


                                                          • Здравствуйте!
                                                            Не подскажите, есть у кого наработки такого рода…
                                                            Возникла проблема при написании универсальной транзакции по взиманию комиссии. После создания шаблона фильтра счетов запускается групповая транзакция создания документов. Если среди выбранных счетов попадает счет, у которого сумма недостаточна для оплаты комиссии, выводится сообщение, в котором предлагается поставить счет на картотеку 2 или «ОТКЛОНИТЬ». Если на картотеку ставить не нужно, выбираем «ОТКЛОНИТЬ», тогда транзакция прерывается, откатывая при этом ранее созданные документы.
                                                            А нужно, чтобы «дебетовый» счет пропускался, выбирался следующий счет, и транзакция дорабатывала до конца.
                                                            Заранее благодарна

                                                            Комментарий


                                                            • Сообщение от Татьянка Посмотреть сообщение
                                                              А нужно, чтобы «дебетовый» счет пропускался, выбирался следующий счет, и транзакция дорабатывала до конца.
                                                              Заранее благодарна
                                                              Любопатно, а зачем это надо? На картотеку все равно ставить надо.

                                                              Комментарий

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