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

Форма-прототип

Добавлено: 25 авг 2014, 19:23
Руслан
Сами разрабатывали свой модуль с документами, справочниками, разными отчетами. Есть форма-прототип для отчетов, как в эту форму-прототип добавить новую переменную? Это все делали до меня...
Сама форма-прототип:

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

/*
Форма-Прототип 'SF'

d1 d2 - дата с/по
master - nrec выбранного мастера из таблицы sfpersons,
         также является временной переменной, для наложения ограничений на формирование отчета
mastFIO - ФИО мастера

! Шапка документа
nrecDoc   - nrec документа в таблице,       sfdocs.atl_nrec
datedoc   - Дата документа,                 sfdocs.datedoc
numbshift - Номер смены (1 - 0:00-8:00, 2 - 8:00-16:00, 3 - 16:00-24:00), sfdocs.numbshift
typedoc   - Тип документа,                  sfdocs.typedoc :
              1 - Литье
              2 - Керосиновый контроль
              3 - Сортировка (Туннельная печь)
              4 - Пересортировка из 1 сорта
              5 - ППД (Печь переменного действия)
              6 - Вторичный обжиг
              7 - Холодное лечение
              8 - Лечение полуфабриката
              9 - Пересортировка из 2 сорта
	     10 - Фотополимерная лечка
numbGlBr  - Номер глаз.бригады (1-4),       sfdocs.numbglazbring
numbVag   - Номер вагонетки,                sfdocs.numbrailroad
numbKiln  - Номер печи (1|2),               sfdocs.numbkiln
page      - Страница документа,             sfdocs.page
experiment - эскперимент (К),               sfmclist.experiment
cperNrec - nrec литейщика,     sfdocs.csfperson = sfpersons.atl_nrec
cperNumb - Номер литейщика,    sfdocs.csfperson->sfpersons.numbworker
cperFio  - ФИО литейщика,      sfdocs.csfperson->sfpersons.sffio
cperAllFIO - ФИО литейщика ОК, sfdocs.csfperson->sfpersons.cperson->persons.fio
cperTabnmb - Табельный номер,  sfdocs.csfperson->sfpersons.cperson->persons.tabnmb
cperType - Тип работника,      sfdocs.csfperson->sfpersons.typeWorker
cperCmas - nrec мастера у литейщика,  sfdocs.csfperson->sfpersons.cmaster = sfpersons.atl_nrec
cperNumbBr - Номер бригады литейщика, sfdocs.csfperson->sfpersons.numberbring

!   тоже самое по мастеру, технологу, обжигальщику и контролеру
cmasNrec cmasNumb cmasFio cmasAllFIO cmasTabnmb cmasType - мастер
cpertechNrec cpertechNumb cpertechFio cpertechType cpertechCmas cpertechNumbBr - технолог
cperburnNrec cperburnNumb cperburnFio cperburnType cperburnCmas cperburnNumbBr - обжигальщик
cpercontrNrec cpercontrNumb cpercontrFio cpercontrType cpercontrCmas cpercontrNumbBr - контролер

! МЦ привязанные к документу, sfmclist.csfdoc = sfdocs.atl_nrec,
! используются МЦ с katmc.isArch = 5
collMCNrec - nrec коллекции к которой относится МЦ, exclassseg.nrec
collMC - Название коллекции, exclassseg.name

 'SELECT exclassseg.nrec, exclassseg.name
  FROM exclassval, exclassseg, sfmclist
  WHERE (( sfmclist.ckatmc == exclassval.crec and   // равносильно katmc.nrec = exclassval.crec для МЦ
            1411 == exclassval.wtable and
            3 == exclassval.classcode ))
        and ( exclassval.cclassseg = exclassseg.nrec );'

sfmclistNrec - nrec МЦ в таблице sfmclist,  sfmclist.atl_nrec
mcNrec   - nrec МЦ,                         sfmclist.ckatmc->katmc.nrec
mcBarkod - Номер (баркод) МЦ,               sfmclist.ckatmc->katmc.barkod
mcName   - Название МЦ,                     sfmclist.ckatmc->katmc.name
mcGrNrec - nrec группы МЦ,                  sfmclist.ckatmc->katmc.cgroupmc = groupmc.nrec
mcGrName - Название группы МЦ,              sfmclist.ckatmc->katmc.cgroupmc->groupmc.name
mcGrKod  - Код группы МЦ,                   sfmclist.ckatmc->katmc.cgroupmc->groupmc.kod
mcPrSort - Процент сортности по МЦ,         sfmclist.ckatmc->katmc.volume
mcMassa  - Масса МЦ,                        sfmclist.ckatmc->katmc.massa

sfmclistDatecasting     - Дата отлитого изделия,    sfmclist.datecasting
sfmclistCsfperson       - nrec литейщика,           sfmclist.cperson = sfpersons.atl_nrec
sfmclistCsfpersonNumb   - Номер литейщика,          sfmclist.cperson->sfpersons.numbworker
sfmclistCsfpersonSffio  - ФИО литейщика,            sfmclist.cperson->sfpersons.sffio
sfmclistCsfpersonFIO    - ФИО лиейщика в ОК,        sfmclist.cperson->sfpersons.cperson->persons.fio
sfmclistCsfpersonTabnmb - Табельный номер литейщика,sfmclist.cperson->sfpersons.cperson->persons.tabnmb
sfmclistCsfpersonCmast  - nrec мастера литейщика,   sfmclist.cperson->sfpersons.cmaster
sfmclistCsfpersonCmastNumbMast - Номер мастера литейщика, sfmclist.cperson->sfpersons.cmaster->sfpersons.numbworker
sfmclistCsfpersonCmastSffio    - ФИО мастера литейщика,   sfmclist.cperson->sfpersons.cmaster->sfpersons.sffio
sfmclistCsfpersonNumbBr        - Номер бригады литейщика, sfmclist.cperson->sfpersons.numberbring

sfmclistCpLech          - nrec лекаря,           sfmclist.cpersonLech = sfpersons.atl_nrec
sfmclistCpLechSffio     - ФИО лекаря,            sfmclist.cpersonLech->sfpersons.sffio
sfmclistCpLechNumbW     - Номер лекаря,          sfmclist.cpersonLech->sfpersons.numbworker
sfmclistCpLechCmast     - nrec мастера лекаря,   sfmclist.cpersonLech->sfpersons.cmaster

sfmclistСpK             - nrec керосинщика,         sfmclist.csfpersonK
sfmclistСpKSffio        - ФИО керосинщика,          sfmclist.csfpersonK->sffio
sfmclistСpKNumbW        - Номер керосинщика,        sfmclist.csfpersonK->numbWorker
sfmclistCpKCmast        - nrec мастера керосинщика, sfmclist.csfpersonK->cmaster

sfmclistСpGl            - nrec глазуровавшего,         sfmclist.csfpersonGl
sfmclistСpGlSffio       - ФИО глазуровавшего,          sfmclist.csfpersonGl->sffio
sfmclistСpGlNumbW       - Номер глазуровавшего,        sfmclist.csfpersonGl->numbWorker
sfmclistCpGlCmast       - nrec мастера глазуровавшего, sfmclist.csfpersonKGl->cmaster

sfmclistСpZ             - nrec чистильщика,         sfmclist.csfpersonZ
sfmclistСpZSffio        - ФИО чистильщика,          sfmclist.csfpersonZ->sffio
sfmclistСpZNumbW        - Номер чистильщика,        sfmclist.csfpersonZ->numbWorker
sfmclistCpZCmast        - nrec мастера чистильщика, sfmclist.csfpersonZ->cmaster

sfmclistNumbglazbring   - Номер глаз.бригады с которой списывается МЦ, sfmclist.numbglazbring
sfmclistQuantity        - Количество изделия
                            При sfdocs.typedoc:
                              1 - Количество выставленного изделия литейщиком для керосинового контроля
                                  (маршрутный лист по Литью)
                              2 - Общее количество прошедшее керосиновый контроль
                                  (включая плохую оправку, с лечения полуфабриката и посечки)
                              8, 4, 9 - поле отсутствует
                              3, 5, 6, 7, 10 - количество 1 сорта
sfmclistQuantityfillup  - Количество залитого изделия при sfdocs.typedoc = 1 (Литье)

! Дефекты привязанные к МЦ в документе sfdefects.csfmclist = sfmclist.atl_nrec
sfdefCclasdisc        - nrec дефекта,     sfdefects.Cclasdisc = clasdisc.nrec
sfdefCclasdiscName    - Код дефекта,      sfdefects.Cclasdisc->clasdisc.name
sfdefCclasdiscComment - Название дефекта, sfdefects.Cclasdisc->clasdisc.comment
sfdefQuantity         - Количество дефекта, sfdefects.quantity
sfdefCsfpersons       - nrec литейщика у которого нашли брак в след. смене, sfdefects.csfperson
sfdefCsfpersonsNumb   - Номер литейщика,  sfdefects.csfperson->sfpersons.numbworker
sfdefCsfpersonsSffio  - ФИО литейщика,    sfdefects.csfperson->sfpersons.sffio
sfdefTypebr           - Тип дефекта:      sfdefects.typebr
                          1 - Брак
                          2 - 2 сорт
                          3 - На горячее лечение
                          4 - На холодное лечение
                          5 - Плохой оправки
                          6 - Примечание брака в литье
			  7 - На лечку полуфабриката
			  8 - На фотополимерную лечку
*/
.form 'SF'
.NameInList 'Список сорта'

.fields
d1 d2
master
mastFIO

nrecDoc datedoc numbshift typedoc numbGlBr numbVag numbKiln page
cperNrec cperNumb cperFio cperAllFIO cperTabnmb cperType cperCmas cperNumbBr
cmasNrec cmasNumb cmasFio cmasAllFIO cmasTabnmb cmasType
cpertechNrec cpertechNumb cpertechFio cpertechType cpertechCmas cpertechNumbBr
cperburnNrec cperburnNumb cperburnFio cperburnType cperburnCmas cperburnNumbBr
cpercontrNrec cpercontrNumb cpercontrFio cpercontrType cpercontrCmas cpercontrNumbBr

collMCNrec collMC
sfmclistNrec mcNrec mcBarkod mcName mcGrNrec mcGrName mcGrKod mcPrSort mcMassa
sfmclistDatecasting
sfmclistCsfperson sfmclistCsfpersonNumb sfmclistCsfpersonSffio 
sfmclistCsfpersonFIO sfmclistCsfpersonTabnmb
sfmclistCsfpersonCmast sfmclistCsfpersonCmastNumbMast sfmclistCsfpersonCmastSffio sfmclistCsfpersonNumbBr
sfmclistCpLech sfmclistCpLechSffio sfmclistCpLechNumbW sfmclistCpLechCmast
sfmclistСpK sfmclistСpKSffio sfmclistСpKNumbW sfmclistCpKCmast
sfmclistСpGl sfmclistСpGlSffio sfmclistСpGlNumbW sfmclistCpGlCmast
sfmclistСpZ sfmclistСpZSffio sfmclistСpZNumbW sfmclistCpZCmast
sfmclistNumbglazbring
sfmclistQuantity sfmclistQuantityfillup

sfdefCclasdisc sfdefCclasdiscName sfdefCclasdiscComment sfdefQuantity
sfdefCsfpersons sfdefCsfpersonsNumb sfdefCsfpersonsSffio sfdefTypebr
!sfdefCclasdiscCode 
.endfields
.{
     Список дефектов
     c ^ по ^
     мастер ^ ^
                              
      nrec        │   Дата     │смена│ тип  │ ГлБр  │Вагонетка │печь  │ стр.
──────────────────┼────────────┼─────┼──────┼───────┼──────────┼──────┼──────────
.{
@@@@@@@@@@@@@@@@@ │ @@@@@@@@@@ │ @@@ │ @@@@ │ @@@@@ │ @@@@@@@@ │ @@@@ │ @@@@@@
                nrecPer      номер     ФИО       тип   Nrec мастера      №бригады
    Рабочий @@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@ ^ ^
                                                 @@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@
     Мастер @@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@ ^ ^ @@@@
   Технолог @@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@ @@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@
Обжигальщик @@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@ @@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@
  Контролер @@@@@@@@@@@@@@@@ @@@@@@ @@@@@@@@@@@@ @@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@

    ****************************************************************************
.{
    collMCNrec, collMC                           Коллекция: ^  ^
    sfmclistNrec,                           В док. Nrec МЦ: ^
    mcNrec, mcBarkod, mcName                            МЦ: ^  ^  ^
    mcGrNrec, mcGrName, mcGrKod                  Группа МЦ: ^  ^  ^
    mcPrSort, mcMassa                  % сортности и Масса: &&.&% &&.& кг
    sfmclistDatecasting                         Дата литья: ^
    sfmclistCsfperson, sfmclistCsfpersonNumb      Литейщик: ^  ^
    sfmclistCsfpersonSffio                                  ^ ^ ^
    sfmclistCsfpersonCmast, sfmclistCsfpersonCmastNumbMast, 
    sfmclistCsfpersonCmastSffio            Мастер рабочего: ^ ^ ^
    sfmclistCsfpersonNumbBr                  Номер бригады: ^
    sfmclistCsfpersonLech                    nrec лечащего: ^ ^ ^ ^
    sfmclistСpK                           nrec керосинщика: ^ ^ ^ ^
    sfmclistСpGl                       nrec глазуровавшего: ^ ^ ^ ^
    sfmclistСpZ                           nrec чистильщика: ^ ^ ^ ^
    sfmclistNumbglazbring    Номер бригады с которой списывается кол.: ^
    sfmclistQuantity                            Количество: ^
    sfmclistQuantityfillup                         Залито : ^

.{
        sfdefCclasdisc              nrec ^
        sfdefCclasdiscName           Код ^
        sfdefCclasdiscComment   Название ^
        sfdefQuantity         Количество ^
        sfdefCsfpersons         nrec ФИО ^
        sfdefCsfpersonsNumb   №работника ^
        sfdefCsfpersonsSffio         ФИО ^
        sfdefTypebr                  тип ^
!        sfdefCclasdiscCode   Код дефекта ^
.}
.}
    ****************************************************************************
.}
.}

--------------------------------------------------------------------
.endform


Re: Форма-прототип

Добавлено: 26 авг 2014, 01:13
edward_K
Форма на базе прототипа состоит из двух частей - фейса который организует поток и собственно формы в которой описан поток. Поэтому вам вносить изменения нужно в трех местах - фейс , fields формы и в тело формы один из символов для вывода поле, например ^. Вывод в форме и в фейса должен быть строго согласован. По сути в в фейса вы гоните поток данных и управляющие события тип выйти из цикла и если это будет не согласовано, то пойдет движение полей при выводе. Более того выход из цикла не произойдет если все поля строки не были переданы в поток. Другой способ сделать присоединенную форму и там вы можете добавить свои поля и убрать ненужные, но нельзя убирать циклы хоть пустые.