Имя: Пароль:
1C
1С v8
Ошибки в Веб клиенте
,
0 kolp821
 
19.09.12
09:59
При открытии Документа в веб клиенте возникает ошибка
Неопознанный оператор Перейти <<?>>~m_EXIT ;
Как правильно написать процедуру с использованием безусловной передачей управления для веб клиента?
1 Fram
 
19.09.12
10:00
больше 10 лет на 1С, и не разу не использовал "Перейти"
2 SanGvin
 
19.09.12
10:02
(0) может написать нормальный код без "Перейти" ? Благо в языке 1С хватает возможностей для этого.
3 kolp821
 
19.09.12
10:03
(2) первичный код не мой, там много меток, а хотелось использовать веб клиент
4 kolp821
 
19.09.12
10:03
Я в основном администратор и на втором месте программист...
5 Fram
 
19.09.12
10:07
хотел написать вызови того программиста.. но думаю лучше другого
6 kolp821
 
19.09.12
10:09
(5) и не получится того вызвать.) на пенсии он, и нет в городе.
7 akaBrr
 
19.09.12
10:11
ТС, кинь код, интересно чего там прог наворотил
8 kolp821
 
19.09.12
10:57
(7) Процедура конвертирования 12 бальной системы в 200 бальную.

&НаКлиенте
Функция Конвертировать_12_200(Бал12)
 Перем Бал200 ;
 
 Перем Бал12_INT ;
 Перем Бал200_INT ;
 
 Бал12_INT = Цел((Бал12 + 0.01) * 10) ;  // Преобразование в целое
 
 Бал200_INT = 0 ; // Для случая, если за пределами...
 
 // Реализуем расчет по нелинейной таблице :
 // """"""""""""""""""""""""""""""""""""""""
 Если Бал12_INT = 10 тогда
   Бал200_INT = 1060 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 11 тогда
   Бал200_INT = 1066 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 12 тогда
   Бал200_INT = 1072 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 13 тогда
   Бал200_INT = 1078 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 14 тогда
   Бал200_INT = 1084 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 15 тогда
   Бал200_INT = 1090 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 16 тогда
   Бал200_INT = 1096 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 17 тогда
   Бал200_INT = 1102 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 18 тогда
   Бал200_INT = 1108 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 19 тогда
   Бал200_INT = 1114 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 20 тогда
   Бал200_INT = 1120 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 21 тогда
   Бал200_INT = 1126 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 22 тогда
   Бал200_INT = 1132 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 23 тогда
   Бал200_INT = 1138 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 24 тогда
   Бал200_INT = 1144 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 25 тогда
   Бал200_INT = 1150 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 26 тогда
   Бал200_INT = 1156 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 27 тогда
   Бал200_INT = 1162 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 28 тогда
   Бал200_INT = 1168 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 29 тогда
   Бал200_INT = 1174 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 30 тогда
   Бал200_INT = 1180 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 31 тогда
   Бал200_INT = 1186 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 32 тогда
   Бал200_INT = 1192 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 33 тогда
   Бал200_INT = 1198 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 34 тогда
   Бал200_INT = 1204 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 35 тогда
   Бал200_INT = 1210 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 36 тогда
   Бал200_INT = 1216 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 37 тогда
   Бал200_INT = 1222 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 38 тогда
   Бал200_INT = 1228 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 39 тогда
   Бал200_INT = 1234 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 40 тогда
   Бал200_INT = 1240 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 41 тогда
   Бал200_INT = 1250 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 42 тогда
   Бал200_INT = 1259 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 43 тогда
   Бал200_INT = 1269 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 44 тогда
   Бал200_INT = 1278 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 45 тогда
   Бал200_INT = 1288 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 46 тогда
   Бал200_INT = 1297 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 47 тогда
   Бал200_INT = 1307 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 48 тогда
   Бал200_INT = 1316 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 49 тогда
   Бал200_INT = 1326 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 50 тогда
   Бал200_INT = 1335 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 51 тогда
   Бал200_INT = 1345 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 52 тогда
   Бал200_INT = 1354 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 53 тогда
   Бал200_INT = 1364 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 54 тогда
   Бал200_INT = 1373 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 55 тогда
   Бал200_INT = 1383 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 56 тогда
   Бал200_INT = 1392 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 57 тогда
   Бал200_INT = 1402 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 58 тогда
   Бал200_INT = 1411 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 59 тогда
   Бал200_INT = 1421 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 60 тогда
   Бал200_INT = 1430 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 61 тогда
   Бал200_INT = 1440 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 62 тогда
   Бал200_INT = 1449 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 63 тогда
   Бал200_INT = 1459 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 64 тогда
   Бал200_INT = 1468 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 65 тогда
   Бал200_INT = 1478 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 66 тогда
   Бал200_INT = 1487 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 67 тогда
   Бал200_INT = 1497 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 68 тогда
   Бал200_INT = 1506 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 69 тогда
   Бал200_INT = 1516 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 70 тогда
   Бал200_INT = 1525 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 71 тогда
   Бал200_INT = 1535 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 72 тогда
   Бал200_INT = 1544 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 73 тогда
   Бал200_INT = 1554 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 74 тогда
   Бал200_INT = 1563 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 75 тогда
   Бал200_INT = 1573 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 76 тогда
   Бал200_INT = 1582 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 77 тогда
   Бал200_INT = 1592 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 78 тогда
   Бал200_INT = 1601 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 79 тогда
   Бал200_INT = 1611 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 80 тогда
   Бал200_INT = 1620 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 81 тогда
   Бал200_INT = 1630 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 82 тогда
   Бал200_INT = 1639 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 83 тогда
   Бал200_INT = 1649 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 84 тогда
   Бал200_INT = 1658 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 85 тогда
   Бал200_INT = 1668 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 86 тогда
   Бал200_INT = 1677 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 87 тогда
   Бал200_INT = 1687 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 88 тогда
   Бал200_INT = 1696 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 89 тогда
   Бал200_INT = 1705 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 90 тогда
   Бал200_INT = 1715 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 91 тогда
   Бал200_INT = 1724 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 92 тогда
   Бал200_INT = 1734 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 93 тогда
   Бал200_INT = 1743 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 94 тогда
   Бал200_INT = 1753 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 95 тогда
   Бал200_INT = 1762 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 96 тогда
   Бал200_INT = 1772 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 97 тогда
   Бал200_INT = 1781 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 98 тогда
   Бал200_INT = 1791 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 99 тогда
   Бал200_INT = 1800 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 100 тогда
   Бал200_INT = 1810 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 101 тогда
   Бал200_INT = 1819 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 102 тогда
   Бал200_INT = 1829 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 103 тогда
   Бал200_INT = 1838 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 104 тогда
   Бал200_INT = 1848 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 105 тогда
   Бал200_INT = 1857 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 106 тогда
   Бал200_INT = 1867 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 107 тогда
   Бал200_INT = 1876 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 108 тогда
   Бал200_INT = 1886 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 109 тогда
   Бал200_INT = 1895 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 110 тогда
   Бал200_INT = 1905 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 111 тогда
   Бал200_INT = 1914 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 112 тогда
   Бал200_INT = 1924 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 113 тогда
   Бал200_INT = 1933 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 114 тогда
   Бал200_INT = 1943 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 115 тогда
   Бал200_INT = 1952 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 116 тогда
   Бал200_INT = 1962 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 117 тогда
   Бал200_INT = 1971 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 118 тогда
   Бал200_INT = 1981 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 119 тогда
   Бал200_INT = 1990 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 Если Бал12_INT = 120 тогда
   Бал200_INT = 2000 ;  
   Перейти ~m_EXIT ;  
 КонецЕсли;      
 //----------------------
 
 //==================================================
 ~m_EXIT :
 Бал200 = Бал200_INT / 10 ;
   
 Возврат Бал200 ;    
КонецФункции
9 kolp821
 
19.09.12
10:58
Есть еще одна процедура где используется Go to

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   
   
   Если ТекущийОбъект.РеквизитОплатаЗаНавчання.Вхідний_ОКР = Перечисления.ВидиВхідногоОКР.НаБазі9кл тогда
       КодВозврата = 9 ;
       Перейти ~m_Obx0 ;
   КонецЕсли;    
   
   Если ТекущийОбъект.РеквизитОплатаЗаНавчання.Вхідний_ОКР = Перечисления.ВидиВхідногоОКР.НаБазі11кл тогда
       КодВозврата = 11 ;
       Перейти ~m_Obx0 ;
   КонецЕсли;    
   
   // Для всех остальных :
   КодВозврата = 1 ;
   
   ~m_Obx0 :
   
   // Сумма балов :
   СуммаБалов = 0.0    ;
   Для Каждого Стр из ТекущийОбъект.ТабличнаяЧастьБалиКонкурсу Цикл
      СуммаБалов = СуммаБалов + Число(Стр.Бал) ;
   КонецЦикла;      
       
   // Вычисление рейтинга :    
   Если КодВозврата = 9 тогда
       // 9-клашки :
     ТекущийОбъект.Рейтинг_БАЛ =  ТекущийОбъект.Атестат_середній_бал + СуммаБалов ;
     Перейти ~m_Obx ;
   КонецЕсли;
   
   Если КодВозврата = 11 тогда
       // 11-клашки :
     ТекущийОбъект.Рейтинг_БАЛ = ТекущийОбъект.Атестат_середній_бал_200 + СуммаБалов ;
     Перейти ~m_Obx ;
   КонецЕсли;
   
   // Все остальные :
   ТекущийОбъект.Рейтинг_БАЛ = СуммаБалов;
   
   ~m_Obx : ;
   
КонецПроцедуры
10 Fram
 
19.09.12
11:02
чуть не подавился
11 akaBrr
 
19.09.12
11:03
(7) за такой код нужно бить кандилябром
12 ptiz
 
19.09.12
11:05
(11) Просто ему платили за строчки кода.
13 ukolabrother
 
19.09.12
11:05
е..й стыд
14 Balonbl4
 
19.09.12
11:07
(8) Феерично
15 akaBrr
 
19.09.12
11:12
(8) я бы так написал, если еще подумать можно еще наверное упростить

&НаКлиенте
Функция Конвертировать_12_200(Бал12)
 Перем Бал200 ;
 
 Перем Бал12_INT ;
 Перем Бал200_INT ;
 
 Бал12_INT = Цел((Бал12 + 0.01) * 10) ;

 
 Бал200_INT = 0 ;

 Если Бал12_INT>=10 И Бал12_INT<=120 Тогда

    Бал200_INT = (Бал12_INT-10)*5+Бал12_INT+1050;

 КонецЕсли;

 Бал200 = Бал200_INT / 10 ;

 Возврат Бал200 ;    
КонецФункции
16 Mort
 
19.09.12
11:12
За пять минут можно написать обработку которая автоматом превратит это г*но (8) в нормальный код.
17 akaBrr
 
19.09.12
11:14
прог наверное на асме всю жизнь писал :)
18 Mort
 
19.09.12
11:14
(15) Там нелинейная таблица. Её всё равно где-то надо хранить, например, мутить соответствие.
19 akaBrr
 
19.09.12
11:16
(18) там есть определенная зависимость, помнится у меня на олимпиаде по программированию подобная задачка была :)
20 Mort
 
19.09.12
11:19
(19) теоретически всегда можно выделить многочлен чтобы он удовлетворял любым парам Y, X :) Не думаю что это будет лучшим решением.
21 akaBrr
 
19.09.12
11:21
(20) точно, у меня некорректный код, лучше соответствие
22 kolp821
 
19.09.12
11:28
(20) без меток не обойтись?
23 Mort
 
19.09.12
11:31
(22) Вобщем-то можно было и без меток наг*нокодить, типа :

...
Если Бал12_INT = 10 тогда
   Бал200_INT = 1060 ;  
   Возврат Бал200_INT/10;  
КонецЕсли;    
...

и т.д.
24 kolp821
 
19.09.12
11:36
(23) спасибо... а что делать с этим кодом?


&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   
   
   Если ТекущийОбъект.РеквизитОплатаЗаНавчання.Вхідний_ОКР = Перечисления.ВидиВхідногоОКР.НаБазі9кл тогда
       КодВозврата = 9 ;
       Перейти ~m_Obx0 ;
   КонецЕсли;    
   
   Если ТекущийОбъект.РеквизитОплатаЗаНавчання.Вхідний_ОКР = Перечисления.ВидиВхідногоОКР.НаБазі11кл тогда
       КодВозврата = 11 ;
       Перейти ~m_Obx0 ;
   КонецЕсли;    
   
   // Для всех остальных :

   КодВозврата = 1 ;
   
   ~m_Obx0 :
   
   // Сумма балов :

   СуммаБалов = 0.0    ;
   Для Каждого Стр из ТекущийОбъект.ТабличнаяЧастьБалиКонкурсу Цикл
      СуммаБалов = СуммаБалов + Число(Стр.Бал) ;
   КонецЦикла;      
       
   // Вычисление рейтинга :    

   Если КодВозврата = 9 тогда
       // 9-клашки :

     ТекущийОбъект.Рейтинг_БАЛ =  ТекущийОбъект.Атестат_середній_бал + СуммаБалов ;
     Перейти ~m_Obx ;
   КонецЕсли;
   
   Если КодВозврата = 11 тогда
       // 11-клашки :

      ТекущийОбъект.Рейтинг_БАЛ = ТекущийОбъект.Атестат_середній_бал_200 + СуммаБалов ;
     Перейти ~m_Obx ;
   КонецЕсли;
   
   // Все остальные :

   ТекущийОбъект.Рейтинг_БАЛ = СуммаБалов;
   
   ~m_Obx : ;
   
КонецПроцедуры
25 Mort
 
19.09.12
11:39
(24) Эммм. Ты реально по пути 23 пошёл... Может лучше навалять кодеру?
26 kolp821
 
19.09.12
11:44
(25) с удовольствием... но не хочется его видеть, и так он сделал много нехороших дел институту.
27 Mort
 
19.09.12
11:54
Первая процедура:

&НаКлиенте
Функция Конвертировать_12_200(Бал12)
 
Бал12_INT = Цел((Бал12 + 0.01) * 10) ;  // Преобразование в целое

Соотв = Новый Соответствие;
  Соотв.Вставить(10, 1060);
  Соотв.Вставить(11, 1066); // и т.д.
  .... сюда прописываешь все пары. Можно поиском и заменой превратить ересь из (8) в такие строки.

Возврат Соотв.Получить(Бал12_INT)/10;

КонецФункции
28 Mort
 
19.09.12
11:58
Ну а во второй тупо всё всунуть в блок "Если ТекущийОбъект.РеквизитОплатаЗаНавчання.Вхідний_ОКР = Перечисления.ВидиВхідногоОКР.НаБазі9кл тогда" без всяких переходов.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.