|
помощь оптимизация кода | ☑ | ||
---|---|---|---|---|
0
BujiMuji
04.11.12
✎
08:20
|
Привет всем подскажите как можно оптимизировать этот код
&НаКлиенте Процедура Сформировать(Команда) ТабДок = Новый ТабличныйДокумент; ТабДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; Отчет(ТабДок, Дата); //Состояние("1 - месяц"); Оформления(ТабДок, Дата); ТабДок.ОтображатьСетку=Ложь; ТабДок.Показать(); КонецПроцедуры &НаСервереБезКонтекста Процедура Отчет(ТабДок, Дата) Макет = ПолучитьОбщийМакет("РАТС"); Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Йил = Год(Дата); //Шапка.Параметры ТабДок.Вывести(Шапка); КонецПроцедуры &НаСервереБезКонтекста Процедура Оформления(ТабДок, Дата) Макет = ПолучитьОбщийМакет("РАТС"); Элемент = Макет.ПолучитьОбласть("Элемент"); Тел = 0; Мин = 0; Тел = Телефон(Дата,"05"); Мин = МинутОбщ(Дата, "05"); Элемент.Параметры.Ой = Формат(Дата,"ДФ=""ММММ"""); Элемент.Параметры.АпАх = Тел; Элемент.Параметры.АхМин = Мин; Попытка Элемент.Параметры.УрМинАх = Формат(Мин/Тел, "ЧДЦ=2"); Исключение КонецПопытки; Тел = 0; Мин = 0; Тел = Телефон(Дата,"04"); Мин = МинутОбщ(Дата, "04"); Элемент.Параметры.АпХоз = Тел; Элемент.Параметры.ХозМин = Мин; Попытка Элемент.Параметры.УрМинХоз = Формат(Мин/Тел, "ЧДЦ=2"); Исключение КонецПопытки; Тел = 0; Мин = 0; Тел = Телефон(Дата,"07"); Мин = МинутОбщ(Дата, "07"); Элемент.Параметры.АпТак = Тел; Элемент.Параметры.ТакМин = Мин; Попытка Элемент.Параметры.УрМинТак = Формат(Мин/Тел, "ЧДЦ=2"); Исключение КонецПопытки; Тел = 0; Мин = 0; Тел = ТелефонБюд(Дата); Мин = МинутОбщБюд(Дата); Элемент.Параметры.АпБюд = Тел; Элемент.Параметры.БюдМин = Мин; Попытка Элемент.Параметры.УрМинБюд = Формат(Мин/Тел, "ЧДЦ=2"); Исключение КонецПопытки; Элемент.Параметры.А60 = ЭлементТип(Дата, 1, 60, "05"); Элемент.Параметры.Х60 = ЭлементТип(Дата, 1, 60, "04"); Элемент.Параметры.Б60 = ЭлементБюд(Дата, 1, 60); Элемент.Параметры.Т60 = ЭлементТип(Дата, 1, 60, "07"); Элемент.Параметры.А120 = ЭлементТип(Дата, 60, 120, "05"); Элемент.Параметры.Х120 = ЭлементТип(Дата, 60, 120, "04"); Элемент.Параметры.Б120 = ЭлементБюд(Дата, 60, 120); Элемент.Параметры.Т120 = ЭлементТип(Дата, 60, 120, "07"); Элемент.Параметры.А180 = ЭлементТип(Дата, 120, 180, "05"); Элемент.Параметры.Х180 = ЭлементТип(Дата, 120, 180, "04"); Элемент.Параметры.Б180 = ЭлементБюд(Дата, 120, 180); Элемент.Параметры.Т180 = ЭлементТип(Дата, 120, 180, "07"); Элемент.Параметры.А240 = ЭлементТип(Дата, 180, 240, "05"); Элемент.Параметры.Х240 = ЭлементТип(Дата, 180, 240, "04"); Элемент.Параметры.Б240 = ЭлементБюд(Дата, 180, 240); Элемент.Параметры.Т240 = ЭлементТип(Дата, 180, 240, "07"); Элемент.Параметры.А300 = ЭлементТип(Дата, 240, 300, "05"); Элемент.Параметры.Х300 = ЭлементТип(Дата, 240, 300, "04"); Элемент.Параметры.Б300 = ЭлементБюд(Дата, 240, 300); Элемент.Параметры.Т300 = ЭлементТип(Дата, 240, 300, "07"); Элемент.Параметры.А360 = ЭлементТип(Дата, 300, 360, "05"); Элемент.Параметры.Х360 = ЭлементТип(Дата, 300, 360, "04"); Элемент.Параметры.Б360 = ЭлементБюд(Дата, 300, 360); Элемент.Параметры.Т360 = ЭлементТип(Дата, 300, 360, "07"); Элемент.Параметры.А420 = ЭлементТип(Дата, 360, 420, "05"); Элемент.Параметры.Х420 = ЭлементТип(Дата, 360, 420, "04"); Элемент.Параметры.Б420 = ЭлементБюд(Дата, 360, 420); Элемент.Параметры.Т420 = ЭлементТип(Дата, 360, 420, "07"); Элемент.Параметры.А480 = ЭлементТип(Дата, 420, 480, "05"); Элемент.Параметры.Х480 = ЭлементТип(Дата, 420, 480, "04"); Элемент.Параметры.Б480 = ЭлементБюд(Дата, 420, 480); Элемент.Параметры.Т480 = ЭлементТип(Дата, 420, 480, "07"); Элемент.Параметры.А540 = ЭлементТип(Дата, 480, 540, "05"); Элемент.Параметры.Х540 = ЭлементТип(Дата, 480, 540, "04"); Элемент.Параметры.Б540 = ЭлементБюд(Дата, 480, 540); Элемент.Параметры.Т540 = ЭлементТип(Дата, 480, 540, "07"); Элемент.Параметры.А600 = ЭлементТип(Дата, 540, 600, "05"); Элемент.Параметры.Х600 = ЭлементТип(Дата, 540, 600, "04"); Элемент.Параметры.Б600 = ЭлементБюд(Дата, 540, 600); Элемент.Параметры.Т600 = ЭлементТип(Дата, 540, 600, "07"); Элемент.Параметры.А660 = ЭлементТип(Дата, 600, 660, "05"); Элемент.Параметры.Х660 = ЭлементТип(Дата, 600, 660, "04"); Элемент.Параметры.Б660 = ЭлементБюд(Дата, 600, 660); Элемент.Параметры.Т660 = ЭлементТип(Дата, 600, 660, "07"); Элемент.Параметры.А720 = ЭлементТип(Дата, 660, 720, "05"); Элемент.Параметры.Х720 = ЭлементТип(Дата, 660, 720, "04"); Элемент.Параметры.Б720 = ЭлементБюд(Дата, 660, 720); Элемент.Параметры.Т720 = ЭлементТип(Дата, 660, 720, "07"); Элемент.Параметры.А780 = ЭлементТип(Дата, 720, 780, "05"); Элемент.Параметры.Х780 = ЭлементТип(Дата, 720, 780, "04"); Элемент.Параметры.Б780 = ЭлементБюд(Дата, 720, 780); Элемент.Параметры.Т780 = ЭлементТип(Дата, 720, 780, "07"); Элемент.Параметры.А840 = ЭлементТип(Дата, 780, 840, "05"); Элемент.Параметры.Х840 = ЭлементТип(Дата, 780, 840, "04"); Элемент.Параметры.Б840 = ЭлементБюд(Дата, 780, 840); Элемент.Параметры.Т840 = ЭлементТип(Дата, 780, 840, "07"); Элемент.Параметры.А900 = ЭлементТип(Дата, 840, 900, "05"); Элемент.Параметры.Х900 = ЭлементТип(Дата, 840, 900, "04"); Элемент.Параметры.Б900 = ЭлементБюд(Дата, 840, 900); Элемент.Параметры.Т900 = ЭлементТип(Дата, 840, 900, "07"); Элемент.Параметры.А960 = ЭлементТип(Дата, 900, 960, "05"); Элемент.Параметры.Х960 = ЭлементТип(Дата, 900, 960, "04"); Элемент.Параметры.Б960 = ЭлементБюд(Дата, 900, 960); Элемент.Параметры.Т960 = ЭлементТип(Дата, 900, 960, "07"); Элемент.Параметры.А1020 = ЭлементТип(Дата, 960, 1020, "05"); Элемент.Параметры.Х1020 = ЭлементТип(Дата, 960, 1020, "04"); Элемент.Параметры.Б1020 = ЭлементБюд(Дата, 960, 1020); Элемент.Параметры.Т1020 = ЭлементТип(Дата, 960, 1020, "07"); Элемент.Параметры.А1080 = ЭлементТип(Дата, 1020, 1080, "05"); Элемент.Параметры.Х1080 = ЭлементТип(Дата, 1020, 1080, "04"); Элемент.Параметры.Б1080 = ЭлементБюд(Дата, 1020, 1080); Элемент.Параметры.Т1080 = ЭлементТип(Дата, 1020, 1080, "07"); Элемент.Параметры.А1140 = ЭлементТип(Дата, 1080, 1140, "05"); Элемент.Параметры.Х1140 = ЭлементТип(Дата, 1080, 1140, "04"); Элемент.Параметры.Б1140 = ЭлементБюд(Дата, 1080, 1140); Элемент.Параметры.Т1140 = ЭлементТип(Дата, 1080, 1140, "07"); Элемент.Параметры.А1200 = ЭлементТип(Дата, 1140, 1200, "05"); Элемент.Параметры.Х1200 = ЭлементТип(Дата, 1140, 1200, "04"); Элемент.Параметры.Б1200 = ЭлементБюд(Дата, 1140, 1200); Элемент.Параметры.Т1200 = ЭлементТип(Дата, 1140, 1200, "07"); Элемент.Параметры.А1260 = ЭлементТип(Дата, 1120, 1260, "05"); Элемент.Параметры.Х1260 = ЭлементТип(Дата, 1120, 1260, "04"); Элемент.Параметры.Б1260 = ЭлементБюд(Дата, 1120, 1260); Элемент.Параметры.Т1260 = ЭлементТип(Дата, 1120, 1260, "07"); Элемент.Параметры.А1320 = ЭлементТип(Дата, 1260, 1320, "05"); Элемент.Параметры.Х1320 = ЭлементТип(Дата, 1260, 1320, "04"); Элемент.Параметры.Б1320 = ЭлементБюд(Дата, 1260, 1320); Элемент.Параметры.Т1320 = ЭлементТип(Дата, 1260, 1320, "07"); Элемент.Параметры.А1380 = ЭлементТип(Дата, 1320, 1380, "05"); Элемент.Параметры.Х1380 = ЭлементТип(Дата, 1320, 1380, "04"); Элемент.Параметры.Б1380 = ЭлементБюд(Дата, 1320, 1380); Элемент.Параметры.Т1380 = ЭлементТип(Дата, 1320, 1380, "07"); Элемент.Параметры.А1440 = ЭлементТип(Дата, 1380, 1440, "05"); Элемент.Параметры.Х1440 = ЭлементТип(Дата, 1380, 1440, "04"); Элемент.Параметры.Б1440 = ЭлементБюд(Дата, 1380, 1440); Элемент.Параметры.Т1440 = ЭлементТип(Дата, 1380, 1440, "07"); Элемент.Параметры.А1500 = ЭлементТип(Дата, 1400, 1500, "05"); Элемент.Параметры.Х1500 = ЭлементТип(Дата, 1400, 1500, "04"); Элемент.Параметры.Б1500 = ЭлементБюд(Дата, 1400, 1500); Элемент.Параметры.Т1500 = ЭлементТип(Дата, 1400, 1500, "07"); Элемент.Параметры.А1560 = ЭлементТип(Дата, 1500, 1560, "05"); Элемент.Параметры.Х1560 = ЭлементТип(Дата, 1500, 1560, "04"); Элемент.Параметры.Б1560 = ЭлементБюд(Дата, 1500, 1560); Элемент.Параметры.Т1560 = ЭлементТип(Дата, 1500, 1560, "07"); Элемент.Параметры.А1561 = ЭлементТип(Дата, 1560, 9000, "05"); Элемент.Параметры.Х1561 = ЭлементТип(Дата, 1560, 9000, "04"); Элемент.Параметры.Б1561 = ЭлементБюд(Дата, 1560, 9000); Элемент.Параметры.Т1561 = ЭлементТип(Дата, 1560, 9000, "07"); ТабДок.Вывести(Элемент); КонецПроцедуры ///////////////////////////////////////////////////////////////////////////////////////// &НаСервереБезКонтекста Функция ЭлементТип(Дата, От, До, Тип) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Тип", Тип); Запрос.УстановитьПараметр("Дата1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Дата2", КонецМесяца(Дата)); Запрос.УстановитьПараметр("От", От); Запрос.УстановитьПараметр("До", До); ТекстЗапроса = " |ВЫБРАТЬ | КОЛИЧЕСТВО(Итог.НомерАбонента) КАК Сумма, | СУММА(Итог.Минут) КАК Минут |ИЗ |( |ВЫБРАТЬ | АбонентА КАК НомерАбонента, | СУММА(Минут) КАК Минут |ИЗ | РегистрНакопления.УстановкаСчетчик |ГДЕ | АбонентА.Тип.Код=&Тип | И Период МЕЖДУ &Дата1 И &Дата2 |СГРУППИРОВАТЬ ПО | АбонентА) КАК Итог |ГДЕ | Итог.Минут >= &От И Итог.Минут < &До"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий()>0 Цикл Возврат Выборка.Сумма; КонецЦикла; КонецФункции &НаСервереБезКонтекста Функция ЭлементБюд(Дата, От, До) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Дата2", КонецМесяца(Дата)); Запрос.УстановитьПараметр("От", От); Запрос.УстановитьПараметр("До", До); ТекстЗапроса = " |ВЫБРАТЬ | КОЛИЧЕСТВО(Итог.НомерАбонента) КАК Сумма, | СУММА(Итог.Минут) КАК Минут |ИЗ |( |ВЫБРАТЬ | АбонентА КАК НомерАбонента, | СУММА(Минут) КАК Минут |ИЗ | РегистрНакопления.УстановкаСчетчик |ГДЕ | АбонентА.Тип.Код=""02"" ИЛИ АбонентА.Тип.Код=""03"" ИЛИ АбонентА.Тип.Код=""01"" | И Период МЕЖДУ &Дата1 И &Дата2 |СГРУППИРОВАТЬ ПО | АбонентА) КАК Итог |ГДЕ | Итог.Минут >= &От И Итог.Минут < &До"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий()>0 Цикл Возврат Выборка.Сумма; КонецЦикла; КонецФункции &НаСервереБезКонтекста Функция МинутОбщ(Дата, Тип) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Тип", Тип); Запрос.УстановитьПараметр("Дата1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Дата2", КонецМесяца(Дата)); ТекстЗапроса = " |ВЫБРАТЬ | КОЛИЧЕСТВО(Итог.НомерАбонента) КАК Сумма, | СУММА(Итог.Минут) КАК Минут |ИЗ |( |ВЫБРАТЬ | АбонентА КАК НомерАбонента, | СУММА(Минут) КАК Минут |ИЗ | РегистрНакопления.УстановкаСчетчик |ГДЕ | АбонентА.Тип.Код=&Тип | И Период МЕЖДУ &Дата1 И &Дата2 |СГРУППИРОВАТЬ ПО | АбонентА) КАК Итог"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий()>0 Цикл Возврат Выборка.Минут; КонецЦикла; КонецФункции &НаСервереБезКонтекста Функция МинутОбщБюд(Дата) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Дата2", КонецМесяца(Дата)); ТекстЗапроса = " |ВЫБРАТЬ | КОЛИЧЕСТВО(Итог.НомерАбонента) КАК Сумма, | СУММА(Итог.Минут) КАК Минут |ИЗ |( |ВЫБРАТЬ | АбонентА КАК НомерАбонента, | СУММА(Минут) КАК Минут |ИЗ | РегистрНакопления.УстановкаСчетчик |ГДЕ | АбонентА.Тип.Код=""01"" ИЛИ АбонентА.Тип.Код=""02"" ИЛИ АбонентА.Тип.Код=""03"" | И Период МЕЖДУ &Дата1 И &Дата2 |СГРУППИРОВАТЬ ПО | АбонентА) КАК Итог"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий()>0 Цикл Возврат Выборка.Минут; КонецЦикла; КонецФункции &НаСервереБезКонтекста Функция ТелефонБюд(Дата) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Дата2", КонецМесяца(Дата)); ТекстЗапроса = " |ВЫБРАТЬ | КОЛИЧЕСТВО(Итог.НомерАбонента) КАК Сумма, | СУММА(Итог.Минут) КАК Минут |ИЗ |( |ВЫБРАТЬ | АбонентА КАК НомерАбонента, | СУММА(Минут) КАК Минут |ИЗ | РегистрНакопления.УстановкаСчетчик |ГДЕ | АбонентА.Тип.Код=""01"" ИЛИ АбонентА.Тип.Код=""02"" ИЛИ АбонентА.Тип.Код=""03"" | И Период МЕЖДУ &Дата1 И &Дата2 |СГРУППИРОВАТЬ ПО | АбонентА) КАК Итог"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий()>0 Цикл Возврат Выборка.Сумма; КонецЦикла; КонецФункции &НаСервереБезКонтекста Функция Телефон(Дата, Тип) Запрос = Новый Запрос; Запрос.УстановитьПараметр("Тип", Тип); Запрос.УстановитьПараметр("Дата1", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Дата2", КонецМесяца(Дата)); ТекстЗапроса = " |ВЫБРАТЬ | КОЛИЧЕСТВО(Итог.НомерАбонента) КАК Сумма, | СУММА(Итог.Минут) КАК Минут |ИЗ |( |ВЫБРАТЬ | АбонентА КАК НомерАбонента, | СУММА(Минут) КАК Минут |ИЗ | РегистрНакопления.УстановкаСчетчик |ГДЕ | АбонентА.Тип.Код=&Тип | И Период МЕЖДУ &Дата1 И &Дата2 |СГРУППИРОВАТЬ ПО | АбонентА) КАК Итог"; Запрос.Текст = ТекстЗапроса; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий()>0 Цикл Возврат Выборка.Сумма; КонецЦикла; КонецФункции |
|||
1
Wobland
04.11.12
✎
08:26
|
Пока Выборка.Следующий()>0 Цикл
Возврат Выборка.Сумма; КонецЦикла; чур меня |
|||
2
osa1C
04.11.12
✎
08:27
|
(0) Сколько?
|
|||
3
Wobland
04.11.12
✎
08:28
|
не, я это не осилю, уж извини. тут не код, тут голову нужно на место ставить
|
|||
4
МихаилМ
04.11.12
✎
10:07
|
обругать можно любой код.
поэтому я на форум и не привожу код. но давненько я не видел живого "индусского" кода. как Вам не лень было писать " Элемент.Параметры.А60 = ... Элемент.Параметры.Т1561 = " . Или это Ваше первое "творение" в области программирования? про отимизацию говорить рано. в коде куча несуразиц, грозящих ошибками. Репетитора наймите. |
|||
5
Wobland
04.11.12
✎
10:16
|
(4) это ещё что..
http://code-wtf.livejournal.com/160720.html |
|||
6
H A D G E H O G s
04.11.12
✎
11:15
|
(4) Скажу больше - на форуме ты не привел пока ни одного дельного совета. Сама скромность.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |