Пример создания простой печатной формы — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м |
||
(не показано 16 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Существует задание - создать форму по передаче остатков | Существует задание - создать форму по передаче остатков | ||
− | Для создания печатной формы открываем именно то место в программе, где пользователь будет нажимать F5 | + | Для создания печатной формы открываем именно то место в программе, где пользователь будет нажимать '''F5''' |
− | |||
− | Нажимаем SHIFT+F9 "ДизОтч". Открывается справочник R221 | + | В нашем случае в соответствии с заданием это ПК1 Вафельный ( 6 ) - Движение сырья, продукции, брака - Изделия - Одна смена |
+ | |||
+ | Нажимаем '''SHIFT+F9''' "ДизОтч". Открывается справочник [[R221]] | ||
Добавляем бланк, для этого нажимаем на клавишу F6 | Добавляем бланк, для этого нажимаем на клавишу F6 | ||
Строка 14: | Строка 15: | ||
− | Нажимаем F3. Затем нажимаем ENTER | + | Нажимаем '''F3'''. Затем нажимаем '''ENTER''' |
= Дизайнер отчетов = | = Дизайнер отчетов = | ||
Строка 24: | Строка 25: | ||
[[Файл:16-03-2016 13-13-36.png]] | [[Файл:16-03-2016 13-13-36.png]] | ||
+ | |||
+ | = Программа = | ||
+ | |||
+ | <REPORT/OPENPIPELINE> | ||
+ | |||
+ | local sql, _, fld, msg, i | ||
+ | |||
+ | try | ||
+ | msg := [[WaitMsg]]( 'Подготовка данных' ) | ||
+ | fld := ' _0,N,5; _1,N,5; _2,C,80; _3,N,14,2; ' | ||
+ | _ := [[CreateTmpFile]]( fld, '_', ~IsFreeDel := true, ~Own := [[PrintForm]]() ) | ||
+ | sql := [ Select ANAL2, EAMNT From [[REPS]]] + [[Ret_f_ext]]() + [ Where SHIFT = '] + SHIFT + [' and ANAL1 = ] + ANAL + [ and REFL1 = 'R10 ' and ; | ||
+ | REFL2 = 'R11 ' and ANAL2 > 0 and EAMNT > 0 ] | ||
+ | [[SimpleSql]]( [ Insert into ] + [[TmpFilePath]]( _ ) + [( _1, _3 ) ] + sql, OpdataPath ) | ||
+ | |||
+ | // r11 | ||
+ | sql := [ Update _ Set _2 = Left( PNAME, 80 ) From ] + TmpFilePath( _ ) + [ _ left outer join R11 ON _1 = KOD ] | ||
+ | [[SimpleSql]]( sql, ReflisPath ) | ||
+ | |||
+ | ( _ )->( [[DbGoTop]]() ) | ||
+ | i := 0 | ||
+ | Select( _ ) | ||
+ | while !eof() | ||
+ | i := i + 1 | ||
+ | ( _ )->_0 := i | ||
+ | [[DbSkip]]() | ||
+ | end | ||
+ | |||
+ | ( _ )->( [[DbGoTop]]() ) | ||
+ | |||
+ | [[SetDataPipeLine]]( _, 2 ) | ||
+ | finally | ||
+ | [[HideMsg]]( msg ) | ||
+ | end | ||
+ | |||
+ | // _0 - номер по порядку | ||
+ | // _1 - код | ||
+ | // _2 - имя | ||
+ | // _3 - количество | ||
+ | = Смотрите также = | ||
+ | [[Информация для разработчиков системы фабиус]] |
Текущая версия на 12:25, 2 августа 2017
Существует задание - создать форму по передаче остатков
Для создания печатной формы открываем именно то место в программе, где пользователь будет нажимать F5
В нашем случае в соответствии с заданием это ПК1 Вафельный ( 6 ) - Движение сырья, продукции, брака - Изделия - Одна смена
Нажимаем SHIFT+F9 "ДизОтч". Открывается справочник R221
Добавляем бланк, для этого нажимаем на клавишу F6
Все, что надо заполнить показано на картинке
Нажимаем F3. Затем нажимаем ENTER
Дизайнер отчетов
После изменения получаем такой отчет ( в конечном итоге, в результате )
Программа
<REPORT/OPENPIPELINE>
local sql, _, fld, msg, i try msg := WaitMsg( 'Подготовка данных' ) fld := ' _0,N,5; _1,N,5; _2,C,80; _3,N,14,2; ' _ := CreateTmpFile( fld, '_', ~IsFreeDel := true, ~Own := PrintForm() ) sql := [ Select ANAL2, EAMNT From REPS] + Ret_f_ext() + [ Where SHIFT = '] + SHIFT + [' and ANAL1 = ] + ANAL + [ and REFL1 = 'R10 ' and ; REFL2 = 'R11 ' and ANAL2 > 0 and EAMNT > 0 ] SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _3 ) ] + sql, OpdataPath ) // r11 sql := [ Update _ Set _2 = Left( PNAME, 80 ) From ] + TmpFilePath( _ ) + [ _ left outer join R11 ON _1 = KOD ] SimpleSql( sql, ReflisPath ) ( _ )->( DbGoTop() ) i := 0 Select( _ ) while !eof() i := i + 1 ( _ )->_0 := i DbSkip() end ( _ )->( DbGoTop() ) SetDataPipeLine( _, 2 ) finally HideMsg( msg ) end // _0 - номер по порядку // _1 - код // _2 - имя // _3 - количество