Code: Select all
*************************
*** Pedro ***************
*set device to printer
*set printer on
*set printer to ("Res_naz.txt")
*set console off
*...Print commands
*Set device to screen
*Set printer off
*Set printer to
*Set console on
*************************
// Загрузить M_PathAppl с диска
M_PathAppl = DC_ARestore("_PathAppl.arx")
*mFileName = M_PathAppl+"Res_naz.txt"
mFileName = "Res_naz.txt"
*MsgBox(mFileName)
set device to printer
set printer on
set printer to (mFileName)
set console off
?"РЕЗУЛЬТАТЫ НАЗНАЧЕНИЙ ОБЪЕКТОВ РАСПОЗНАВАЕМОЙ ВЫБОРКИ НА КЛАССЫ"
?DTOC(DATE())+SPACE(2)+TIME()+SPACE(43)+"г.Краснодар"
Ln = 74
?REPLICATE("=",Ln)
mStr = "|ХАРАКТЕРИСТИКИ ЭФФЕКТИВНОСТИ НАЗНАЧЕНИЯ:" ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
?REPLICATE("~",Ln)
mStr = "|СУММА ПО ВСЕМ КЛАССАМ:" ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Начальный ресурс класса:............................ " +ALLTRIM(STR(Ar_field[ 3],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Остаток ресурса после назначений объектов на классы: " +ALLTRIM(STR(Ar_field[ 4],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Суммарное сходство:................................. " +ALLTRIM(STR(Ar_field[ 6],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Фактические суммарные затраты:...................... " +ALLTRIM(STR(Ar_field[ 7],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Средневзвешенное удельное сходство:................. " +ALLTRIM(STR(Ar_field[ 8],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Среднее на объект суммарное сходство:............... " +ALLTRIM(STR(Ar_field[ 9],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Средние на объект фактические суммарные затраты:.... " +ALLTRIM(STR(Ar_field[10],17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Всего назначено на классы объектов:................. " +ALLTRIM(STR(Ar_field[ 5],17)) ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
?REPLICATE("~",Ln)
mStr = "|СРЕДНЕЕ НА КЛАСС:" ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Начальный ресурс класса:............................ " +ALLTRIM(STR(Ar_field[ 3]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Остаток ресурса после назначений объектов на классы: " +ALLTRIM(STR(Ar_field[ 4]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Суммарное сходство:................................. " +ALLTRIM(STR(Ar_field[ 6]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Фактические суммарные затраты:...................... " +ALLTRIM(STR(Ar_field[ 7]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Средневзвешенное удельное сходство:................. " +ALLTRIM(STR(Ar_field[ 8]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Среднее на объект суммарное сходство:............... " +ALLTRIM(STR(Ar_field[ 9]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Средние на объект фактические суммарные затраты:.... " +ALLTRIM(STR(Ar_field[10]/N_Klass,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|В среднем на класс назначено объектов:.............. " +ALLTRIM(STR(Ar_field[ 5]/N_Klass,17)) ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
?REPLICATE("=",Ln)
?""
SELECT Rasp_naz
SET FILTER TO Klas_naz > 0
SET ORDER TO 1
DBGOTOP()
M_KodKl_Old = -9999
Num_pp = 0
DBGOTOP()
DO WHILE .NOT. EOF()
M_KodObj = Kod_obj // Здесь ВСЕ проверить, наименования полей заменены на новые
M_NameObj = Name_Obj
M_KodCls = Kod_Cls
M_NameCls = Name_Cls
M_UrSxod = Ur_Sxod
M_Zatr = Zatrati
M_UdSxod = Ud_Sxod
M_KodKln = Klas_naz
** Печать информации по новому классу из БД Klas_res.dbf
IF M_KodKl_Old <> M_KodKln
Num_pp = 0
M_KodKl_Old = Klas_naz
IF M_KodKl_Old <> -99999
SELECT Klas_res
DBGOTO(M_KodCls)
?REPLICATE("=",Ln)
mStr = "|КЛАСС НАЗНАЧЕНИЯ:" ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Код: "+ALLTRIM(STR(M_KodKln,4))+", наименование: " +ALLTRIM(M_NameCls) ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Начальный ресурс класса:........................... " +ALLTRIM(STR(Resource ,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Остаток ресурса после назначений объектов на класс: " +ALLTRIM(STR(OstatokRes,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Суммарное сходство:................................ " +ALLTRIM(STR(Sum_UrSxod,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Фактические суммарные затраты:..................... " +ALLTRIM(STR(Sum_Zatrat,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Средневзвешенное удельное сходство:................ " +ALLTRIM(STR(Svz_UdSxod,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Среднее на объект суммарное сходство:.............. " +ALLTRIM(STR(Avr_UrSxod,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Средние на объект фактические суммарные затраты:... " +ALLTRIM(STR(Avr_Zatrat,17,7));?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|Всего на данный класс назначено объектов:.......... " +ALLTRIM(STR(Kol_obj,17)) ;?mStr+SPACE(Ln-1-LEN(mStr))+"|"
ENDIF
?REPLICATE("~",Ln)
mStr = "| Номер | Код | Наименование |Ур-нь сходст| Затраты на |Удельное сход";?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|по пор.|объекта| объекта |об.с классом|назн. объекта|об. с классом";?mStr+SPACE(Ln-1-LEN(mStr))+"|"
* | 12345 | 12345 |123456789012345|1234.6789012|12345.7890123|12345.7890123
?REPLICATE("~",Ln)
ENDIF
mStr = "|"+" "+STR(++Num_pp,5)+" "+"|"+" "+STR(M_KodObj,5)+" "+"|"+SUBSTR(M_NameObj,1,15)+"|"+STR(M_UrSxod,12,7)+"|"+STR(M_Zatr,13,7)+"|"+STR(M_UdSxod,13,7);?mStr+SPACE(Ln-1-LEN(mStr))+"|"
SELECT Rasp_naz
DBSKIP(1)
ENDDO
?REPLICATE("=",Ln)
?""
mStr = "ДАННЫЕ ПО НЕНАЗНАЧЕННЫМ ОБЪЕКТАМ:" ;?mStr+SPACE(Ln-1-LEN(mStr))
?REPLICATE("=",Ln)
mStr = "| Номер | Код | Наименование |Ур-нь сходст| Затраты на |Удельное сход";?mStr+SPACE(Ln-1-LEN(mStr))+"|"
mStr = "|по пор.|объекта| объекта |об.с классом|назн. объекта|об. с классом";?mStr+SPACE(Ln-1-LEN(mStr))+"|"
* | 12345 | 12345 |123456789012345|1234.6789012|12345.7890123|12345.7890123
?REPLICATE("~",Ln)
***** Убрать из списка неназначенных объектов все назначенные (с помощью массива)
CLOSE ALL
USE Rasp_naz EXCLUSIVE NEW
SELECT Rasp_naz
SET FILTER TO Klas_naz = 0
N_ObjNen = 0 // Количество неназначенных объектов
Num_pp = 0
mSum_UrSxod = 0
mSum_Zatr = 0
mSum_UdSxod = 0
DBGOTOP()
DO WHILE .NOT. EOF()
M_KodObj = Kod_obj
IF ASCAN(aObjNaz, M_KodObj) = 0 // Объект Kod_obj не назначен
mStr = "|"+" "+STR(++Num_pp,5)+" "+"|"+" "+STR(M_KodObj,5)+" "+"|"+SUBSTR(Name_Obj,1,15)+"|"+STR(Ur_Sxod,12,7)+"|"+STR(Zatrati,13,7)+"|"+STR(Ud_Sxod,13,7);?mStr+SPACE(Ln-1-LEN(mStr))+"|"
++N_ObjNen
mSum_UrSxod = mSum_UrSxod + Ur_Sxod
mSum_Zatr = mSum_Zatr + Zatrati
mSum_UdSxod = mSum_UdSxod + Ud_Sxod
ENDIF
DBSKIP(1)
ENDDO
?REPLICATE("~",Ln)
mAvr_UrSxod = mSum_UrSxod / N_ObjNen
mAvr_Zatr = mSum_Zatr / N_ObjNen
mAvr_UdSxod = mSum_UdSxod / N_ObjNen
mStr = "|"+" "+SPACE(5)+" "+"|"+" "+SPACE(5)+" "+"|"+"В СРЕДНЕМ: "+"|"+STR(mAvr_UrSxod,12,7)+"|"+STR(mAvr_Zatr,13,7)+"|"+STR(mAvr_UdSxod,13,7);?mStr+SPACE(Ln-1-LEN(mStr))+"|"
* 123456789012345
?REPLICATE("=",Ln)
mStr = 'Универсальная когнитивная аналитическая система "Эйдос"';?mStr+SPACE(Ln-1-LEN(mStr))
CLOSE ALL
*** Pedro **********
Set device to screen
Set printer off
Set printer to
Set console on
aMess := {}
AADD(aMess, 'ПРОЦЕСС НАЗНАЧЕНИЯ ОБЪЕКТОВ НА КЛАССЫ ЗАВЕРШЕН УСПЕШНО !!!')
AADD(aMess, 'Результаты назначений в файлах: "Res_naz.txt", "Rasp_naz.dbf", "Klas_res.dbf"')
AADD(aMess, 'в папке: '+M_PathAppl)
LB_Warning(aMess, "4.1.6.3. Задача о назначениях. Назначение объектов на классы")
RUNSHELL( mFileName,"NOTEPAD.EXE",.T.,.T.) // Посмотреть напечатанный файл в блокноте