Страница 1 из 1

После обновлений поехали поля в отчетах

Добавлено: 28 июн 2010, 13:56
Aleksandr Kryuchkov
Третьего дня обновили галактику по состоянию обновлений на 24.06.
После чего стала наблюдаться в некоторых отчетах "шикарная проблема". Например в авансовом в поле руководитель стоят паспортные данные, а номере отчета - расчетный счет. Такое ощущения что поля сдвинуты на несколько позиций.
Изображение

Uploaded with ImageShack.us

Re: После обновлений поехали поля в отчетах

Добавлено: 28 июн 2010, 15:52
empyros
А пользовательские ресурсы есть? Попробуйте без них отчет получить.

Re: После обновлений поехали поля в отчетах

Добавлено: 28 июн 2010, 17:08
Ged
F_PLPOR_RES_810570:
В ОБНОВЛЕНИИ ПОМЕНЯЛИСЬ БАЗОВЫЕ ФОРМЫ ОТЧЕТОВ:
PLATDOCS
KASSA_KO3
REEPLPOR
# ПРИМЕЧАНИЕ:
Возможно потребуется перекомпиляция Ваших форм
Подробности изменения базовых форм читайте в описании проблем

да и в патчмане это сообщение выскакивало

Re: После обновлений поехали поля в отчетах

Добавлено: 29 июн 2010, 12:00
Aleksandr Kryuchkov
empyros писал(а):А пользовательские ресурсы есть? Попробуйте без них отчет получить.
Вагон и маленькая тележка. Сейчас все отцепил сформировал - получился нормально; буду по одному прицеплять смотреть какой из них влияет.
А вот что делать когда локализую "злодейский" ресурс пока не очень представляю. Кто что посоветует, коллеги?

Re: После обновлений поехали поля в отчетах

Добавлено: 29 июн 2010, 12:06
Алексей
Нужно переделывать те отчеты, которые съехали. Если устраивают стандартные отчеты - используйте их. Программист есть в конторе?

Re: После обновлений поехали поля в отчетах

Добавлено: 29 июн 2010, 13:22
empyros
Aleksandr Kryuchkov писал(а):
empyros писал(а):А пользовательские ресурсы есть? Попробуйте без них отчет получить.
Вагон и маленькая тележка. Сейчас все отцепил сформировал - получился нормально; буду по одному прицеплять смотреть какой из них влияет.
А вот что делать когда локализую "злодейский" ресурс пока не очень представляю. Кто что посоветует, коллеги?
А в "злодейском" ресурсе - изменился прототип, его надо перекомпилировать. Если при компиляции будет говорить, что присоединенная форма не совпадает с прототипом - ищите отличия (иногда что изменилось можно найти в сопроводительных файлах) - но скорее всего надо будет просто добавить или убрать {фигурные скобки}.

Re: После обновлений поехали поля в отчетах

Добавлено: 29 июн 2010, 18:38
Aleksandr Kryuchkov
Алексей писал(а):Нужно переделывать те отчеты, которые съехали. Если устраивают стандартные отчеты - используйте их. Программист есть в конторе?
ну вроде как я за него, но на интуиции далеко не проедешь. А то "злодейский ресурс" тянулся еще с 7.12 с тиражного решения для Почты но это было сильно до меня.
empyros писал(а):.....А в "злодейском" ресурсе - изменился прототип, его надо перекомпилировать. Если при компиляции будет говорить, что присоединенная форма не совпадает с прототипом - ищите отличия (иногда что изменилось можно найти в сопроводительных файлах) - но скорее всего надо будет просто добавить или убрать {фигурные скобки}.
Да вот сколько не пробовал играть в игру нади десять отличий что то толком никак не получилось что то пересобрать. ТО переменные аобъявлены свои, то вьюхи...
Эх.. почитать бы толковую методу с примерами ....

Re: После обновлений поехали поля в отчетах

Добавлено: 29 июн 2010, 19:41
empyros
Aleksandr Kryuchkov писал(а): Да вот сколько не пробовал играть в игру нади десять отличий что то толком никак не получилось что то пересобрать. ТО переменные аобъявлены свои, то вьюхи...
Эх.. почитать бы толковую методу с примерами ....
То есть "злодея" нашли... Он компилируется без предупреждений? Если да, то после перекомпиляции - должен работать нормально.
Если нет - закидывайте код - будем вместе искать отличия.

Re: После обновлений поехали поля в отчетах

Добавлено: 01 июл 2010, 13:22
Aleksandr Kryuchkov
Приколы продолжаются. Скомпилил. прикрутил.
Злодей нужен для того чтобы закачивать некие хозоперации.
Вся суть его сведена к коду который не работает,а может и рабоатет тут пока открытый вопрос.

Код: Выделить всё

.LinkForm 'ВВОД ХОЗОПЕРАЦИЙ ДЛЯ ГЛАВНОЙ РАСПРЕДЕЛИТЕЛЬНОЙ КАССЫ' Prototype is 'PlatDocs'
.group ’ПРИХОДНЫЙ КАССОВЫЙ ОРДЕР ЦБРФ - РТФ’
.p 60
.DEFP PA4
.CLENGTH 148
.CWIDTH 210
.DEFO LANDSCAPE
.Var
 Count : Word;
.EndVar
.fields
Count
.endfields
.{
.{checkenter PlatDocsCycleDocRash
.}
.{checkenter PlatDocsCycleDebetBuhNotes
.}
.{checkenter PlatDocsCycleKreditBuhNotes
.}
.{
.}
.{
.}
.{checkenter PlatDocsCycleVKassu
.{checkenter PlatDocsCycleMemo1
.}
.}
.{checkenter PlatDocsCycleIzKassy
.{checkenter PlatDocsCycleMemo2
.}
.}
.{
.{
.{
.}
.}
.}
.if DELIMITERPLAT
---------------------------------------------------------------------------------
.else
.end
.if PAGESYMBOL
.else
.end
.begin
  RunInterface(Gkassa, PlPorNrec, Count);
end.
Импортировано ^ хозопераций 
.}
.endform
Мне не совсем понятно какого черта галка тянет авансовые, приходные, расходные из собственного ресурса а не из стандартного f_plpor.res?

P.S. Код достался по наследству от 7.12 писал его не я, я все го лигшь пытаюсь по аналогии заставить его работать под 8 и своершенно не понимаю пока как это сделать.
VIP-овский код тоже есть, если надо выложу.

Re: После обновлений поехали поля в отчетах

Добавлено: 01 июл 2010, 15:48
KATZ
Aleksandr Kryuchkov писал(а):Приколы продолжаются. Скомпилил. прикрутил.
Злодей нужен для того чтобы закачивать некие хозоперации.
Вся суть его сведена к коду который не работает,а может и рабоатет тут пока открытый вопрос.
Рассказали бы хотя бы в двух словах, что и где должно поменяться после того, как код отработает. В той форме, которая выложена, нет ничего информативного, идет обращение к интерфейсу и всё. Непонятно, зачем в форме опции печати, если она для печати не предназначена; остается предположить, что их просто удалить поленились.
Еще переменную Count желательно переименовать, т. к. есть стандартная функция с таким же именем. Может, совпадение имен на работу и не повлияет, но лучше подстраховаться...
Aleksandr Kryuchkov писал(а):Мне не совсем понятно какого черта галка тянет авансовые, приходные, расходные из собственного ресурса а не из стандартного f_plpor.res?
Тянет что? Если линкформы, так она и должна тянуть их из всех доступных RES-файлов, как из ваших, так и из стандартных.
Aleksandr Kryuchkov писал(а):P.S. Код достался по наследству от 7.12 писал его не я, я все го лигшь пытаюсь по аналогии заставить его работать под 8 и своершенно не понимаю пока как это сделать. VIP-овский код тоже есть, если надо выложу.
По уже выложенному коду сказать нечего. Хотите конкретный совет - выкладывайте, кто-нибудь что-нибудь наверняка скажет. Только на словах опишите, что этот код должен делать. И разместить всё это уместнее в форуме "Программирование".

Re: После обновлений поехали поля в отчетах

Добавлено: 01 июл 2010, 19:40
Aleksandr Kryuchkov
2Katz: Начну с конца.
KATZ писал(а):...И разместить всё это уместнее в форуме "Программирование".
Оставлю на усмотрения модератора - посчитает нужным - перенесет, на мой взгляд эта задача соповождения, поскольку во главе угла пользовательсякая доработка, но это мое частное мнение.
По существу:
KATZ писал(а):...Рассказали бы хотя бы в двух словах, что и где должно поменяться после того, как код отработает...
Рискну привести здесь gkassa.vip

Код: Выделить всё

Const
  sci134EnIns       =  6922;
  sci13EscTreeA   =  8209;
End;

Interface gKassa 'Импорт распоряжений по главной распределительной кассе'(,,sci134EnIns);
   Var 
    Handle : LongInt;
    jDDoc : String;
    jNazn, jPodr, jPodr1 : String;
    NrecPlPor : Comp;
    BadF, i : Word;
    jSum : String;
    CurF : String;
    SS, count_n : longint;
    mc4, mc41:string;
    NrecPodr, cSeg, At4, At16, AtS :Comp;
    MarB : Word;
    FirstNum : String;
    F16, F161 : String;
    
Table Struct jPrev "Таблица для превью"
 (
   cPodr  : Comp,
   Podr   : String,
   NumMc4 : String,
   Summa  : Double,
   Mar : String,
   NumF16 : String,
   NumSum : String,
   Prim  : String
 );

Table Struct jMar "Уникальные маршруты"
 (
   Mar : String,
   Num : String
 );
 Create View jView
 As
   Select * From PlPor, SoprHoz, BaseFin, KauReff
   , AttrVal, AttrNam, LastNumD, KatDoc, Pick, jPrev,JMAR
   , ExClassVal, ExClassSeg, ExClassName, KatPodr KatPodr1
   Where ((
            NrecPlPor==PlPor.Nrec and
            AttrVal.cAttrNam==AttrNam.Nrec and
            jPrev.cPodr == KatPodr.Nrec and
            Word(1413) == ExClassName.wTable and
            'Маршруты' == ExclassName.Name and
            Word(1413) == ExClassVal.wTable and
            KatPodr.Nrec ==ExClassVal.cRec and
            ExClassVal.cClassSeg==ExClassSeg.Nrec
          ))
          Order by jPrev.Mar, jPrev.Podr;

Parameters NrecPlPor, count_n;

Panel jBrow;
 Table jPrev;
 Browse jBr          
  Show at (,,,20)
  Fields
    KatPodr.Name 'Подразделение ' : [25], Protect;
    jPrev.Summa 'Сумма' : [18,2];//[18.2,'[|-]36`666`666`666.88']  ;
    jPrev.NumMc4 '№ МС-4' : [10],Protect;
    jPrev.Mar 'Маршрут'  : [12],Protect, PickButton;
    jPrev.NumF16 '№ Ф-16' : [10], Protect;
    jPrev.NumSum '№ бр/сумки' : [10], NoProtect;
    jPrev.Prim 'Примечание' : [35], NoProtect;
  End;
  Screen SRC (,,) show at (,21,,)
  Buttons
    cmOk, default;
    cmNum;
  <<
  
                                 <. Ввод данных .>                    <. Перенумерация Ф-16 .> 
  >>
  end;
End;  

!End;
!HandleEvent
! cmInit:
!   SS:='';
! cmOk: CloseDialogParam);  
!End;
!End;
Procedure InsertSoprHoz;
Begin
!  Message(NrecPlPor+' 1');
  GetFirst PlPor;
  
  ClearBuffer(#SoprHoz);
    SoprHoz.NREC    := GetNextNREC(#SoprHoz,0);
    SoprHoz.cSoprDoc:= PlPor.Nrec;
    SoprHoz.NoDoc   := PlPor.NoDok;
    SoprHoz.DatOb   := PlPor.DatOb;
    SoprHoz.TiDkGal := PlPor.TidkGal;
    SoprHoz.TipDoc  := PlPor.Tidk;
    SoprHoz.Descr   := PlPor.Descr;
    SoprHoz.DesGr   := PlPor.DesGr;
    SoprHoz.Direct  := Word(2);
    SoprHoz.cFilKor := PlPor.cFilKor;
    SoprHoz.VhSumHoz:= '+';
    SoprHoz.ModeDoc := PlPor.ModeDoc;
    SoprHoz.Summa   := jPrev.Summa;
    SoprHoz.cOrg    := Plpor.cPlat;
    SoprHoz.NameSho := jPrev.Prim;
  insert current SoprHoz;
  ClearBuffer(#AttrVal);
    AttrVal.Nrec     := GetNextNrec(#AttrVal,0);
    AttrVal.wTable   := Word(1120);
    AttrVal.cRec     := SoprHoz.Nrec;
    AttrVal.cAttrNam := At4;
    AttrVal.vString  := jPrev.NumMc4;
  Insert Current AttrVal;
  ClearBuffer(#AttrVal);
    AttrVal.Nrec     := GetNextNrec(#AttrVal,0);
    AttrVal.wTable   := Word(1120);
    AttrVal.cRec     := SoprHoz.Nrec;
    AttrVal.cAttrNam := At16;
    AttrVal.vString  := jPrev.NumF16;
  Insert Current AttrVal;
  ClearBuffer(#AttrVal);
    AttrVal.Nrec     := GetNextNrec(#AttrVal,0);
    AttrVal.wTable   := Word(1120);
    AttrVal.cRec     := SoprHoz.Nrec;
    AttrVal.cAttrNam := AtS;
    AttrVal.vString  := jPrev.NumSum;
  Insert Current AttrVal;
  ClearBuffer(#BaseFin);
    BaseFin.NREC    := GetNextNREC(#BaseFin,0);
    BaseFin.cSoprDoc:= PlPor.Nrec;
    BaseFin.cPlPor  := PlPor.Nrec;
    BaseFin.NoDoc   := PlPor.NoDok;
    BaseFin.dDoc    := PlPor.DatOb;
    BaseFin.TiDkGal := PlPor.TidkGal;
    BaseFin.TipDoc  := PlPor.Tidk;
    BaseFin.Descr   := PlPor.Descr;
    BaseFin.DesGr   := PlPor.DesGr;
    BaseFin.Direct  := Word(2);
    BaseFin.Summa   := jPrev.Summa;
    BaseFin.cOrg    := Plpor.cPlat;
    BaseFin.cSoprHoz:= SoprHoz.Nrec;
  insert current BaseFin;
 GetFirst PlPor;
 PlPor.SumPlat:=PlPor.SumPlat+ jPrev.Summa;
 Update current Plpor;
 If jPrev.cPodr>Comp(0)
   {
     ClearBuffer(#KauReff);
       KauReff.Nrec     := GetNextNrec(#KauReff,0);
       KauReff.CoTable  := Word(1120);
       KauReff.cRec     := SoprHoz.Nrec;
       KauReff.wKau     := Word(2);
       KauReff.cKau     := jPrev.cPodr;
     Insert Current KauReff;
   }  
End;

Procedure NumMar;
Begin
       GetFirst LastNumD Where ((Word(2068)==LastNumd.LndType and Word(0)==LastNumD.LndSubT));
       If LastNumD.LndNum<>FirstNum
        {
          LastNumD.LndNum:=FirstNum;
          Update Current LastNumD; 
        }
       
       If GetFirst jPrev =TsOk {};
       Do
        {
           MarB := 0;
           If GetFirst jMar=TsOk
            Do
             {
               If jMar.Mar = jPrev.Mar Marb:=1;
             }While GetNext jMar=TsOk;
           If MarB=0
            {
              jMar.Mar:=jPrev.Mar;
              GetFirst LastNumD Where ((Word(2068)==LastNumd.LndType and Word(0)==LastNumD.LndSubT));
              jMar.Num := LastNumD.LndNum;
              Insert Current jMar;
              LastNumd.LndNum:=Word(LastNumd.LndNum)+1;
              Update current LastNumD;
              PushPos(#jPrev);
              Update jPrev Where jPrev.Mar=jMar.Mar Set jPrev.NumF16:=jMar.Num;
              PopPos(#jPrev); 
            } 
        }While GetNext jPrev=TsOk 
    ReScanPanel(#jPrev);
    Delete All jMar; 
End;
Procedure InsertjPrev;
Begin
  ClearBuffer(#jPrev);
   If SS=0 
   If GetFirst KatPodr Where((jPodr==KatPodr.Name))=TsOk {};
   If SS=1 GetFirst KatPodr Where((Pick.cRec==KatPodr.Nrec));
   jPrev.cPodr := KatPodr.nRec;
   jPrev.Podr  := KatPodr.Name;
   jPrev.Summa :=Double(jSum);
   If GetFirst ExClassSeg = TsOk
      jPrev.Mar:= ExClassSeg.Name;
   GetFirst LastNumD Where ((Word(2067)==LastNumd.LndType and Word(0)==LastNumD.LndSubT))
   jPrev.NumMC4  :=LastNumd.LndNum; 
   jPrev.Prim :='' ;
  Insert Current jPrev;
  LastNumd.LndNum:=Word(LastNumd.LndNum)+1;
  Update current LastNumD;
End;

Procedure ReadExcel;
Begin
  CurF:='';
  BadF:=0;
  If GetFirst AttrVal Where ((Word(9015)==AttrVal.wTable and NrecPlPor==AttrVal.cRec))=TsOk
    Do
    {
       GetFirst AttrNam;
       If Instr('файл', AttrNam.Name)>0 Or Instr('Файл', AttrNam.Name)>0 CurF:=AttrVal.vString;
    }While GetNext AttrVal Where ((Word(9015)==AttrVal.wTable and NrecPlPor==AttrVal.cRec)) =TsOk  
  If CurF<>''
  {
   If Instr('.XLS', CurF)>0 or Instr('.xls', CurF)>0 
    {
        If Not xlIsExcelValid  
         If not xlCreateExcelWithTemplate(CurF, False) 
           {
             Message('Ошибка открытия Excel-файла '+ CurF);
             exit;
           }
        While Instr('\',CurF)>0 Do CurF:=substr(CurF,pos('\',CurF)+1,Length(CurF)-pos('\',CurF)+1);
        If Instr('.',CurF)>0 CurF:=SubStr(CurF,1,Length(CurF)-Instr('.',CurF)+1);
        xlSetActiveWorkBookByName(CurF);
        xlSetActiveSheetByName(CurF);
        StartNewVisual(vtRotateVisual, vfTimer+vfBreak,
                                       ''#3'Разбор файла...'+''#13#3,1);
        i:=5
        BadF:=0;
        xlGetCellValue(i, 1,jPodr); 
        Do
        {
          If GetFirst KatPodr Where((jPodr==KatPodr.Name))<>TsOk
          If Message('В справочнике подразделений отсутсвует подразделение '+ jPodr+ ' продолжить разбор файла?',YesNo)<>cmYes BadF:=1;
          If BadF=0
           {
            i:=i+1;
            xlGetCellValue(i, 1,jPodr);
           }  
        }While Instr('ИТОГ', jPodr)=0 and BadF=0;
        If BadF=0
        { 
            i:=5
            xlGetCellValue(i, 1,jPodr); 
            xlGetCellValue(i, 2,jSum); 
            If (InStr(',',jSum)<>0) jSum:=Replace(jSum,',','.');
            Do
            {
              i:=i+1;
!          GetFirst KatPodr Where((jPodr==KatPodr.Name));
              If Double(jSum)>0 InsertjPrev;
              xlGetCellValue(i, 1,jPodr);
              xlGetCellValue(i, 2,jSum); 
            }While Instr('ИТОГ', jPodr)=0 ;
         }
       If xlIsExcelvalid xlKillExcel;
       StopVisual('',0);
    }
   If Instr('.DBF', CurF)>0 or Instr('.dbf', CurF)>0 
    {
        i:=5
        Handle := DBFOpen(CurF,stOpenRead);
        StartNewVisual(vtRotateVisual, vfTimer+vfBreak,
                                       ''#3'Разбор файла...'+''#13#3,1);
        If dbfGetfirst(Handle)=tsOK
        Do
        {
          jPodr1:=dbfGetFieldValue(Handle,'KOT');
          If jPodr1<>'999'
           {
              jPodr:=''  
              GetFirst KatPodr1; 
              _Loop KatPodr1
               {
                If KatPodr1.TEl=jPodr1 jPodr:=KatPodr1.Name  
               }
               If jPodr='' 
                 If Message('В справочнике подразделений отсутсвует подразделение с кодом(Телефон)'+ jPodr1+ ' продолжить разбор файла?',YesNo)<>cmYes BadF:=1;
              jSum:=dbfGetFieldValue(Handle,'SVY');
              If Double(jSum)>0 
               {
                 InsertjPrev;
                 i:=i+1;
               }  
            }   
        }While dbfGetNext(Handle)=tsOK  and BadF=0;
       dbfClose(Handle);
       StopVisual('',0);
    }
 }
 Else Message('Не задано имя файла, задайте имя файла во внешнем атрибуте!!!');

End;

Procedure RunMyInterface;
Begin
  If GetFirst AttrNam Where ((Word(1120)==AttrNam.wTable and 'Ф-16'==AttrNam.Name))=TsOk
     At16:=AttrNam.Nrec
  Else   Message('Отсутсвует внешний атрибут "Ф-16" к таблице SoprHoz');
  If GetFirst AttrNam Where ((Word(1120)==AttrNam.wTable and 'МС-4'==AttrNam.Name))=TsOk
     At4:=AttrNam.Nrec
  Else   Message('Отсутсвует внешний атрибут "МС-4" к таблице SoprHoz');
  If GetFirst ExClassName<>TsOk 
    Message('Отсутсвует внешняя классификация "Маршруты" к каталогу подразделений');
  If GetFirst AttrNam Where ((Word(1120)==AttrNam.wTable and 'номер сумки'==AttrNam.Name))=TsOk
     AtS:=AttrNam.Nrec
  Else   Message('Отсутсвует внешний атрибут "номер сумки" к таблице SoprHoz');
  mc4:='1';
  If GetFirst LastNumD Where ((Word(2067)==LastNumd.LndType and Word(0)==LastNumD.LndSubT))=TsOk
    mc4:=String(LastNumD.LndNum)
  Else
    {
     ClearBuffer(#LastNumD);
       LastNumD.Nrec    := GetNextNrec(#LastNumD,0);
       LastNumD.LndType := Word(2067);
       LastNumD.LndSubT :=Word(0);
       LastNumD.LndNum  :='1'; 
     Insert Current LastNumD;
     ClearBuffer(#KatDoc);
       KatDoc.Nrec    := GetNextNrec(#KatDoc,0);
       KatDoc.TidkGal := Word(2067);
       KatDoc.TidkUsers :=Word(2067);
       KatDoc.Name  :='Письмо формы МС-4 (Почта)'; 
     Insert Current KatDoc;
    }    
    f16:='1';
    If GetFirst LastNumD Where ((Word(2068)==LastNumd.LndType and Word(0)==LastNumD.LndSubT))=TsOk
      f16:=String(LastNumD.LndNum)
    Else
      {
       ClearBuffer(#LastNumD);
         LastNumD.Nrec    := GetNextNrec(#LastNumD,0);
         LastNumD.LndType := Word(2068);
         LastNumD.LndSubT :=Word(0);
         LastNumD.LndNum  :='1'; 
       Insert Current LastNumD;
       ClearBuffer(#KatDoc);
         KatDoc.Nrec    := GetNextNrec(#KatDoc,0);
         KatDoc.TidkGal := Word(2068);
         KatDoc.TidkUsers :=Word(2068);
         KatDoc.Name  :='Накладная Ф-16(Почта)'; 
       Insert Current KatDoc;
      }    
  f161:=f16;  
  If RunDialog(Param111,ss, mc4, f16)=cmCancel exit;
  If mc41<>mc4
  If GetFirst LastNumD Where ((Word(2067)==LastNumd.LndType and Word(0)==LastNumD.LndSubT))=TsOk
   {
     LastNumD.LndNum:=mc4;
     Update current lastnumD;
   } 
  If f161<>f16
  If GetFirst LastNumD Where ((Word(2068)==LastNumd.LndType and Word(0)==LastNumD.LndSubT))=TsOk
   {
     LastNumD.LndNum:=f16;
     Update current LastNumD;
   } 
  FirstNum:=F16;   

  If SS=0 ReadExcel;
  If SS=1
  {
    ClearFieldOption(#jPrev.Summa, ofProtected);
    Delete all Pick;
    If RunInterface(Z_KATPODR::GetAnyPodr,NrecPodr,15)<>cmCancel
     {
       i:=5;
       If GetFirst Pick Where ((Word(11)==Pick.wList))=TsOk
         Do
         {
          GetFirst KatPodr Where ((Pick.cRec==KatPodr.Nrec));
           If KatPodr.IsLeaf=Word(1)
            {
              jSum:=0;
              InsertjPrev;
              i:=i+1;
              }
         }While GetNext Pick Where ((Word(11)==Pick.wList))=TsOk
       Else Message('1  '+NrecPodr);  
     }
    Delete all Pick;
  }
  NumMar;  
End; //RunMyInterface



HandleEvent
  cmInit:
  {
      mc4:='1';
      If GetFirst LastNumD Where ((Word(2068)==LastNumd.LndType and Word(0)==LastNumD.LndSubT))=TsOk
         mc4:=String(LastNumD.LndNum);
      FirstNum:=Mc4;   
    SetFieldOption(#jPrev.Summa, ofProtected);
    RunMyInterface;
  }//Init
  cmOK:
  {
   If GetFirst jPrev =TsOk
    Do
     {
        PushPos(#jPrev);    
        If jPrev.Summa>Double(0) InsertSoprHoz;
        PopPos(#jPrev);
     }While GetNext jPrev=TsOk
   Set count_n:=i-5;
   Delete All SoprHoz Where ((Word(8)==SoprHoz.TipDoc and NrecPlPor==SoprHoz.cSoprDoc)) and SoprHoz.Summa=0;
   CloseInterFace(-1);
  }//cmok

  cmNum:
   {
     NumMar;
   }
  cmCancel:
  {
   Set count_n:=0;
   CloseInterFace(-1);

  }
  cmUpdateRecord: Update current jPrev;
  cmPick:
  {
   Case CurField Of
     #jPrev.Mar :
       {
         If GetFirst ExClassName=TsOk
          If RunInterface (C_EXTCLASS::PickExClassifier,Word(1413),cSeg,1)<> cmCancel
            {
             GetFirst ExClassSeg Where ((cSeg==ExClassSeg.Nrec));
             jPrev.Mar:=ExClassseg.Name;
             UpDate Current jPrev;
             Set jPrev.Mar:=jPrev.Mar;
            } 
       }
   End; 
  }
End;//HandleEvent
End.//Interface

Param111 dialog
!Screen qqq; 
Fields
 SS :word;
 MC4 : String;
 F16 : String;
Buttons
 cmOk, Default;
 cmCancel; 
<<
Параметры: 
     (.) Импортировать из файла`
     (.) Ввести вручную`
     Нумерация МС-4 начинается с .@@@@@@@@@@@
     Нумерация Ф-16 начинается с .@@@@@@@@@@@
     <. ~В~вод .>     <. ~О~тмена .>
>>
Этот код пока для меня черный ящик от и до.
На входе или как это должно работать : Если мы выбираем Приходный ордер

Код: Выделить всё

..........
 .LinkForm 'ВВОД ХОЗОПЕРАЦИЙ ДЛЯ ГЛАВНОЙ РАСПРЕДЕЛИТЕЛЬНОЙ КАССЫ' Prototype is 'PlatDocs'
.group ’ПРИХОДНЫЙ КАССОВЫЙ ОРДЕР ЦБРФ - РТФ’
...........
то на входе используем xls файл в котором содерджатся сведения об излишках денег в отделении связи.
Изображение

Uploaded with ImageShack.us

имя файла вводим через внешние атрибуты у приходного ордера. Поэтому наверное и была притянута печать...
на выходе после обработки В Галке имеем на первом этапе список из полей: отделения связи, сумма, №мс45
на форме две кномпки ввод данных, а второй мы не пользовались.
по вводу данных куда-то импортируется количество хозопераций равное количеству отделений в списке.
дальше мы снова заходили в кассовый ордер выбирали тхо и формировалось количество проводок к документу равное количеству отделений в исходной xls-ке.

Буду премного благодарен если форумчане помогут мне понять логику этого кода, и помогут организовать нечто подобное для версии 8.10

Re: После обновлений поехали поля в отчетах

Добавлено: 02 июл 2010, 08:02
KATZ
Aleksandr Kryuchkov писал(а):Буду премного благодарен если форумчане помогут мне понять логику этого кода, и помогут организовать нечто подобное для версии 8.10
Теперь более-менее понятен смысл задачи. Код, ИМХО, далек от идеала...

В вашем случае для "быстрого старта" лучше всего было бы позвать грамотного специалиста, который бы в вашем присутствии написал эту задачу заново, и по ходу написания объяснял бы вам смысл каждой вводимой строки. Объем небольшой, одного дня хватило бы за глаза. Это так, философские "советы постороннего"...

По существу. Ресурсы от версии 7.12 к 8.1 не подойдут, перекомпиляция неизбежна. В большинстве случаев при переносе на 8.1 код не нуждается в редактировании. К тому же, судя по Z_KATPODR::GetAnyPodr и C_EXTCLASS::PickExClassifier, он у вас уже адаптировался под 8.1. Компилятор интерфейсов у вас есть? Файл компилируется? Какие ошибки/предупреждения при этом выдаются? Скомпилированный интерфейс пробовали использовать? В какой момент он начинает "капризничать"? По ходу его работы в БД что-нибудь успевает поменяться (это можно по журналу посмотреть)?