18 октября, четверг 05:34
Bankir.Ru

Объявление

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

Печать платежных требований. HELP!!!

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

  • Печать платежных требований. HELP!!!

    при печати платежных требований по всему листу полосы. Все остальное печается нормально. Платежные требования формируются из другого модуля. Все перепробывал.И библиотеки просмотрел и дрова переустоновил и print15.add подкорректировал. Подскажите,кто что знает? может кто нибудь с этим сталкивался? Заранее спасибо!!!

  • #2
    "-- Вот что, -- сказал Эдик. -- Так нельзя. Мы работаем, как дилетанты. Как авторы любительских писем: "Дорогие ученые. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит". Система нужна. Где у тебя бумага, Витя? Сейчас мы все распишем..." (с) Стругацкие

    Какая модель принтера ? Какая версия Кворума ? Как печатается - по старому Ctrl+P,Ctrl+P или через Ctrl+P,Alt+W ? Из какого "другого" модуля формируются требования ? И при чем тут вообще другой модуль ? Где картинка с образцом "листа с полосами" ?

    Комментарий


    • #3
      Версия Кворума 8.800\20. Принтер HP 1020. печатается - по старому Ctrl+P,Ctrl+P или через Ctrl+P,Alt+W. Из модуля Кредиты.

      Комментарий


      • #4
        В платежные документы попадает из модуля кредиты. Когда в ручную заполняешь платежное требование на печать выводиться корректно.

        Комментарий


        • #5
          Частично понятно, но хмм... или не верю, или мистика какая-то...
          Panda_23rus, можно попросить еще выложить сюда картинку-скан-копию распечатанного "с полосами по всему листу" требования ? Просто понять, какого рода полосы...
          По моему опыту, многочисленные случайные тонкие горизонтальные полоски дает неисправность картриджа (неконтакт). И проявление/непроявление этого неконтакта сильно зависит от характера вибраций принтера. Такая вот фантастическая черновая гипотеза. Но принимать ее за рабочую версию пока сильно рано.
          Итак 1. Прошу картинку с образцом "полос". Если получится - сюда, если нет, мне на heg (гав-гав) bankir.ru .
          2. Посмотреть код печатаемой формы (в правом верхнем углу листа). Во всех ли случаях он печатается 0401061, или при печати "полосатого листа" он другой ?

          P.S.
          3. А еще сам текстовый файл с "полосатым" требованием (сохраненный из синего окна просмотра по Alt+F2) тоже желательно, на всякий случай.

          Комментарий


          • #6
            Выкладываю скан копию листа.

            Комментарий


            • #7
              123

              Комментарий


              • #8
                Ага...
                Очень похоже, что начиная с назначения платежа и ниже, был включен режим подчеркивания символов, а потом он не выключился.
                Похоже ?

                Если так, то надо искать в назначении требования, формируемого из кредитного модуля, управляющую последовательность - последовательность символов, включающую режим подчеркивания.

                Управляющая последовательность (для Кворума) представляет из себя нуль-байт (байт со значением #0), за которым следует второй управляющий байт, включающий (а повторно - выключающий) нужный режим отображения текста. Последние 5 бит второго байта соответствуют переключению одного из режимов. Последовательности:
                0,1 - жирный;
                0,4 - подчеркнутый;
                0,2 - курсив;
                0,8 - элита;
                0,16 - сжатый.
                Например, последовательность 0,5 - это переключение на жирный+подчеркнутый.
                А при печати текста, Кворум транслирует свою управляющую последовательность в реальные команды соответствующего драйвера принтера (или в необходимые переключения в GDI).
                Вроде бы где-то так.

                Итого:
                Похоже кредитный модуль при формировании назначения платежа в требовании (или какого-то еще соседнего текстового поля, надо внимательнее смотреть, мне на скане плохо видно), впихивает туда нуль-байт. А в следующем за ним байте, третий бит (=4) оказывается установленым в единицу, вот и включается подчеркивание... Похоже ?

                Комментарий


                • #9
                  Многоуважаемый heg,искать эту последовательность уже в сформированном требовании в назначении платежа? или исходники смотреть надо?

                  Комментарий


                  • #10
                    И ещё текстовый фаил, зачем он вам нужен был? в нем искать эту последовательность?

                    Комментарий


                    • #11
                      Эээ... как бы попроще сформулировать...
                      Искать надо нуль-байт, а вот где ? Суть в том, что эти последовательности стандартны для управления шрифтами в Кворуме, поэтому в уже сформированном тексте платежного требования их будет много, и это нормально.
                      Но среди этого множества "правильных" управляющих последовательностей, где-то в районе назначения платежа вклинивается одна "неправильная". Вот ее надо найти и понять, откуда она взялась. Поэтому:
                      1. Внимательно посмотреть, где именно ТОЧНО начинается полосатость, с какой конкретно буквы. Вот в этом месте и искать лишний нуль-байт.
                      2. Понять в какое точно поле требования вкрался этот лишний нуль-байт. В назначение платежа, или еще куда ?
                      3. Устранить этот нуль-байт из этого поля. Здесь может быть два варианта:
                      3.1. Найти то место в кредитном модуле, где это самое поле формируется с нуль-байтом и поправить его.
                      3.2. Взять алгоритм печати требования (wtr.rpt / "H. Платежное требование") и подправить его так, чтобы перед печатью требования из соотвествующего поля удалялись нафиг все нуль-байты.

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

                      Комментарий


                      • #12
                        Уважаемый heg могли бы Вы привести реальный пример этой последовательности,чтоб я смог сориентироваться...

                        Комментарий


                        • #13
                          могли бы Вы привести реальный пример...
                          Нет, не мог бы. И так уже все разжевал.

                          Предлагаю другое.
                          1. Ищем алгоритм, который отвечает за печать платежного требования. Эта процедура подключена к десктопу модуля PayDoc, называется "H. Платежное требование". Исходный текст ее скорее всего лежит в common.cns\wtr.rpt
                          2. Так вот, открываем этот исходник алгоритма печати платежного требования на редактирование.
                          3. Ищем там операторы присваивания:
                          PO_ASSIGN:=GetStr('PO_ASSIGN');
                          PO_ASSIGN2:=GetStr('PO_ASSIGN2');
                          Они находятся недалеко от начала исполняемого кода формулы.
                          4. Добавляем после этих двух операторов присваивания код, который я напишу. Должно получиться примерно так:
                          Код:
                          ...
                             PO_ASSIGN:=GetStr('PO_ASSIGN');
                             PO_ASSIGN2:=GetStr('PO_ASSIGN2');
                             
                             //добавляем этот кусок кода
                             Index:=1;
                             while Index=Length(PO_ASSIGN) do
                             {
                               if Ascii(Substr(PO_ASSIGN,Index,1))32
                                PO_ASSIGN:=Substr(PO_ASSIGN,1,Index-1)+' '+Substr(PO_ASSIGN,Index+1,255);
                               Index:=Index+1;
                             };
                             Index:=1;
                             while Index=Length(PO_ASSIGN2) do
                             {
                               if Ascii(Substr(PO_ASSIGN2,Index,1))32
                                PO_ASSIGN2:=Substr(PO_ASSIGN2,1,Index-1)+' '+Substr(PO_ASSIGN2,Index+1,255);
                               Index:=Index+1;
                             };
                             //конец добавленного куска
                          ....
                          5. Перекомпилируем измененный алгоритм.
                          6. Пробуем снова печать и докладываем о результатах.

                          Комментарий

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

                          Свернуть

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

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