Имя: Пароль:
1C
1С v8
Подскажите по оптимизации кода (Тонкий клиент)
,
0 veronika1888
 
14.05.12
18:47
Вынуждена была создать две дублирующие процедуры.
Потому, что:
- в одном случае нужно пересчитать строку выбранную пользователем на клиенте
- в другом случае пересчитать всю таблицу в цикле. В виду невозможности пробежаться циклом по таблице формы и активизировать поочередно все строки....

&НаСервере
Процедура РассчитатьСуммуНДССтрокиТабличнойЧастиНаСервере(СтрокаТабличнойЧасти)
       
   ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(СтрокаТабличнойЧасти.СтавкаНДС)/100;
   
   КоэффициентНДС = ?(Объект.ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС);
   
   Сумма = СтрокаТабличнойЧасти.ЦенаЗаКвМ*СтрокаТабличнойЧасти.ОбщаяПлощадь;    
   
   СтрокаТабличнойЧасти.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20);
   
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьСуммуНДССтрокиТабличнойЧастиНаКлиенте(СтрокаТабличнойЧасти = Неопределено)
   
   Если СтрокаТабличнойЧасти = Неопределено Тогда
       СтрокаТабличнойЧасти = Элементы["ОбъектыНедвижимости"].ТекущиеДанные;
   КонецЕсли;
   
   ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(СтрокаТабличнойЧасти.СтавкаНДС)/100;
   
   КоэффициентНДС = ?(Объект.ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС);
   
   Сумма = СтрокаТабличнойЧасти.ЦенаЗаКвМ*СтрокаТабличнойЧасти.ОбщаяПлощадь;    
   
   СтрокаТабличнойЧасти.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20);
   
КонецПроцедуры
1 vvp91
 
14.05.12
19:07
Вас спасет директива компиляции управляемой форму &НаКлиентеНаСервереБезКонтекста

Метод будет такой:
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьСуммуНДССтроки(Строка, ЦенаВключаетНДС)
   ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(Строка.СтавкаНДС)/100;
   КоэффициентНДС = ?(ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС);
   Сумма = Строка.ЦенаЗаКвМ * Строка.ОбщаяПлощадь;
   Строка.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20);
КонецПроцедуры

Вызов с клиента:
РассчитатьСуммуНДССтроки(Элементы["ОбъектыНедвижимости"].ТекущиеДанные, Объект.ЦенаВключаетНДС);

Вызов с сервера:
Для Каждого ОбъектНедвижимости Из Объект.ОбъектыНедвижимости Цикл
   РассчитатьСуммуНДССтроки(ОбъектНедвижимости, Объект.ЦенаВключаетНДС);
КонецЦикла;
2 experimentator76
 
14.05.12
20:54
песец
3 acsent
 
14.05.12
20:55
(1) на сервер нельзя строку тз передать
4 experimentator76
 
14.05.12
20:57
(3) тут другое - она хочет на тонком толстый клиент реализовать
и не понимает что это дурость
5 vmv
 
14.05.12
21:11
(1) прав - расчетные алгоритмы используемые и на сервере и на клиенте нужно выносить в модуле форм во внеконтестыные методы

В параметры этого метода передавать расчетные данные (простые значением, сложные структурой)

возврат метода аналогичен(значение или структура)

можно сооответсствие или список значений - для извращентцев.

усе
6 vmv
 
14.05.12
21:12
(3) можно легко свернуть строку в структуру и передать - это правильно

можно использовать временное хранилище - для извращенцев
7 vmv
 
14.05.12
21:16
и ТекущиеДанные ДанныхФормыКоллекции можно передат и на к и с.
только проверить на существование (неопределено) этих данных - это и есть строка в том смысле как мы раньше понимали, но сущность УФ.

я уже именую параметры в тонком согласно типу данных в отладчике или по памяти

ТкДнДфк - Текущие данные ДанныхФормыКоллекции

НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьСуммуНДССтроки(ТкДнДфк , ЦенаВключаетНДС)
8 experimentator76
 
14.05.12
21:17
(6) "можно легко свернуть строку в структуру"
например?
9 vmv
 
14.05.12
21:17
+(7) хрень, внеконекст там не прокатит - структуру надо, но как пример, что можно передать данные катит
10 experimentator76
 
14.05.12
21:19
а передавать только нужные для расчета данные в голову не пришло ?
11 vmv
 
14.05.12
21:20
(8) например открыть любую типову чисто на УФ (бсп, документооборот и т.д.) и потратить день на рассмотрение общих модулей, тогда 80% вопросов котрые тут задают по УФ и тонкому будут уже не актуальны.

в типовых много дури, но именно общие модули и бсп в том числе - кладезь знаний и идей, как надо работать с УФ.
12 vmv
 
14.05.12
21:21
(10) а читать умеем

"В параметры этого метода передавать расчетные данные (простые значением, сложные структурой)"

поначалу это дико, но разобрав типовые общие модули дергаешь оттуда в самописки и все логично или просто накатить минимум бсп - как я счас и делаю
13 experimentator76
 
14.05.12
21:22
(11) интересует быстрый конверт между типами хранения данных
допустим из массива сделать список значений раз плюнуть
понятно что можно любую функция замутить, но нужно штатно и быстро если возможно
14 experimentator76
 
14.05.12
21:25
(12) я не про то
я говорю чтобы сделать без (0) и без (1)
сделать одной универсальной серверной процедурой с передачей нужных параметров
и не нужно копаться в примерах - достаточно подумать
15 experimentator76
 
14.05.12
21:26
дело в том что из-за барахолки в голове ТС постановка задачи изначально неверна в контексте 8.2
16 vmv
 
14.05.12
21:30
(15) это не барахолка - это банальная нехватка опытка, когда коренным образом изменена архитектура и взаимодействия платформы. Так у каждого по-первах, кто быстрее просекает и просекает, кто-то медленные, тупые и жадные - никогда

Бсп - общие модули - ОбщегоНазначения(..., сервер, клиент, клиентсервер) с этого надо начинать

оттуда

// Функция СтрокаТаблицыЗначенийВСтруктуру создает
// структуру со свойствами, как колонки таблицы
// значений передаваемой строки
// и устанавливает этим свойствам значения
// из строки таблицы значений
//
// Параметры:
//  СтрокаТаблицыЗначений - СтрокаТаблицыЗначений
//
// ВозвращаемоеЗначение:
//  Структура
//
Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт
   
   Структура = Новый Структура;
   Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
       Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
   КонецЦикла;
   
   Возврат Структура;
   
КонецФункции

адцке сложные код да
17 vmv
 
14.05.12
21:31
(14) зачем тогда вся эта пляска - давай все тупо делать на серваке, чо мелочиться)

мдя
18 NcSteel
 
14.05.12
21:32
(17) В общек выполнять расчеты на сервере являются приоритетом в УФ.
19 experimentator76
 
14.05.12
21:33
(16) не оптимально - лучше сразу передать данные нужные для расчета
или дополнить структурой с ключами нужных колонок
допустим 1000 строк будут конвертиться в этой функции полностью... не оптимально
20 experimentator76
 
14.05.12
21:35
(17) зачем что с клиента я начинал а закончил все на сервере )
вымученно - потому что был вот такой же как ТС упертый баран ))
21 experimentator76
 
14.05.12
21:35
только есть подозрение что ТС не научится
22 experimentator76
 
14.05.12
21:39
(16) а ты сам бы не додумался бы до этого кода?
23 vmv
 
14.05.12
21:39
(19) это просто пример и все - ну давайте на овцах пример замутим, ясен пень не оптимально.
Но имеет право на жизнь - ты че не допер

РассчитатьСуммуНДССтроки(Строка, ЦенаВключаетНДС)

Строка - тут мужет быть любимы типом отражающим "строку коллеции"

СтрокаТз     - это на сервере без конвертаций гоняй в циклах до усеру
Структура    - это во внеконткстных иногда нужно в модулях формы
ТекщиеДанныеДанныеФормыКоллекции - это и на клиенте и на сервере

а алгоритм один и то же - вот в чем фишка)

(21) ты типа великий гуру - сам хрен вьехал еще в УФ)
24 vmv
 
14.05.12
21:41
(22) когда вышла платформа с УФ - я сам и додумался, посему не был удивлен составам методов в общаках.

тема себя исчерпала, иди учись пока я добрый
25 experimentator76
 
14.05.12
21:42
(23) лана Валера ))
я еще учусь и буду учиться всю жизнь )
в этом и вся фишка
26 experimentator76
 
14.05.12
21:44
(24) пасиба гура!
и тебе не хворать!
27 experimentator76
 
14.05.12
21:45
ждем следующую тему от ТС
как же это цсуко тормозит че делать ))
28 vmv
 
14.05.12
21:51
большего тормоза чем 8.1 - 1С еще не создала

типовые на 8.2. на сегодняшний день в расчет не берем - видно, что там поставщики и архитекторы грамотные, а вот кодеры не опытны, все ж новая технология - откуда опыт, посему и кучи косяков и неоптимальности с той же видимостью, параметрами запросов и т.д. - ждем 8.8 и конец 2012)
29 vvp91
 
14.05.12
21:52
(23) Примерно так и есть. Параметр <Строка> может быть любым составным типом, содержащим реквизиты, доступные к разыменованию (доступ через точку).

При вызове на клиенте в примере - во внеконтекстный метод приедет честный ДанныеФормыЭлементКоллекции, связанный с текущей строкой таблицы формы. С полями элемента можно делать все, что угодно, и это сразу отразится на элементах формы. Никаких клиент-серверных передач при вызове не будет.

При вызове на сервере в примере - во внеконтекстный метод приедет честный ДанныеФормыЭлементКоллекции, но взятый от объекта. Никаких клиент-серверных передач при вызове не будет. На клиента, при возврате контекста, вернется измененная коллекция.

Вообще, здесь простая передача параметра между методами без клиент-серверной передачи данных.
30 vmv
 
14.05.12
21:55
(29) уверен что внекокотектстый метод модуля формы "приедет честный ДанныеФормыЭлементКоллекции, связанный с текущей строкой таблицы формы"?

если я себя откушу кое-что, что не приедет это во внекотекст, я стану девочкой?)
31 vmv
 
14.05.12
21:58
во внеконтекст данные формы в любом составе пихать нельза, посему я и првел три варианта, в том числе и структуру.

капец, там "Новости" а потом "Реальные пацаны", раз реальная девчонка молчит - адью, палата лордов)
32 vvp91
 
14.05.12
21:59
(30) уверен.
попробуй - увидишь.
33 vmv
 
14.05.12
22:01
(32) я уже пробовал год назад и четко помню цитату

&НаКлиентеНаСервереБезКонтекста (&AtClientAtServerNoContext) — определяет процедуру (функцию), исполняемую в модуле формы на клиенте и на сервере, не имеющую доступа к контексту формы, данным формы, переменным, но имеющую доступ к процедурам и функциям общих модулей – серверных, не глобальных и серверных и клиентских одновременно. Сама процедура (функция) доступна для клиентский, серверных контекстных и неконтекстных процедур и функций модуля формы. Из серверных внеконтекстных методов формы допускается вызов серверных методов общих модулей;
34 experimentator76
 
14.05.12
22:02
(31) айда реальных пацанов зырить )))
35 vvp91
 
14.05.12
22:04
(33) и чего?
Где в потрохах метода РассчитатьСуммуНДССтроки происходит доступ к данным и контексту формы?

Вся работа идет со структурой <Строка>, переданной извне. У структуры есть тип. В приведенных примерах тип будет ДанныеФормыЭлементКоллекции.
36 vmv
 
14.05.12
22:08
(35) упростим и уточним

В таком вызове

&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьСуммуНДССтроки(Строка, ЦенаВключаетНДС)
   ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(Строка.СтавкаНДС)/100;
   КоэффициентНДС = ?(ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС);
   Сумма = Строка.ЦенаЗаКвМ * Строка.ОбщаяПлощадь;
   Строка.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20);
КонецПроцедуры

нив параметрах ни в теле метода не должно быть сущностей интерпретируемых как данные формы (реквизиты формы, данныеформыэлементы коллекции и тд. и тд.)
читать мануалы умеем и думать или вы уже себе откусили то самое и разговор не мужской?

не утомляй меня, включи мозг
37 vvp91
 
14.05.12
22:11
(36) мдя, пичалька.

вот и подумай, раз уж заявляешь о таком своем умении.
включи отладчик. подивись на результат.
а потом правильно прочти руководство.
не поймешь - подивись на результат в отладчике опять и продолжи читать руководство до просветления.
38 vmv
 
14.05.12
22:12
+(35) У структуры НЕТ ТИПА - эта коллеция ключей и значений. И если значение там задано и  уже действительно у него есть тип, но если тип связянный с формой - то получите сообщение об ощибке
39 vvp91
 
14.05.12
22:14
(36)(38) ни гони пургу в массы.

давно бы уж проверил и не спорил.
40 vmv
 
14.05.12
22:19
(39) выложи рабочий код внекотекстого метода где ваши слова

"во внеконтекстный метод приедет честный ДанныеФормыЭлементКоллекции, связанный с текущей строкой таблицы формы. С полями элемента можно делать все, что угодно, и это сразу отразится на элементах формы",

мож даже отвязанный от этой задачи - я пойму) Зачем мне проверять то, что работать нек будет 100%)

внекотекстный метод модуля формы(чистый без вызова общих модулей) модифицирует вид(данные) формы - ооо, если это так, то у меня пробел относительно этого метода
41 vmv
 
14.05.12
22:25
наврно ответ на (40) с примером рабочего кода будет дан с выходом 9.0, пичалька
42 vvp91
 
14.05.12
22:34
Собственно, рабочий код написан в (1)

В типовых, из свеженького.

Форма таможенной декларации в УТ 11.0.8.8
Метод ПересчитатьПоля, там же и примеры применения, - тут четко передаются ДанныеФормыЭлементКоллекции, как с клиента, так и сервера.

Форма комплектации номенклатуры в БП 3.0
Метод УправлениеФормой, там же и примеры применения, - тут грубовато сделано, всю форму в параметр пихают.
43 vmv
 
14.05.12
22:41
(1) в 1 явно не указано, что там в параметрах, а что в теле - если это Стркутра ЗНАЧЕНИЙ, то без базара.

я торговые конфы дома не ставлю
код кинь этой декларации типа так

Документ.{КакаяТоТамНакладная}.Форма.{КакаяТоТамФорма}.МодульФормы

&НаКлиентеНаСервереБезКонтекста
{КакойТоТамМетод}(КакиеТоТамПараметры)

// Параметр 1 - это ДфЭл
// ....

....

пока что пустые слова, думаю вы ошибаетесь насчет данных формы во внеконтексте формы и их модификации в нем же
44 vmv
 
14.05.12
22:45
(43) как обертка может быть

т.е в серверном и клиетском методах вызывают внекотест, но передают в него не данные формы, а значения этих данных - в любом виде(значение, структура, список)

так об обертке я еще в (3) писал, надо было расжевать?
45 vvp91
 
14.05.12
22:57
(44) Никаких оберток - просто ТекущиеДанные, которые имеют тип ДанныеФормыЭлементКоллекции, да хоть сами ДанныеФормыКоллекция или ДанныеФормы или УправляемаяФорма - пофигу.
Все будет работать без всяких "оберток".

Еще раз, для тугоплавких:
Параметрами метода с директивой компиляции &НаКлиентеНаСервереВнеКонтекста внутрь метода можно передавать как данные формы или ее реквизит, так и саму форму или ее элементы.
При этом необходимо учитывать, чтобы внутри метода, если он вызван с клиента, не произошел неявный вызов сервера, иначе все изменения поедут на сервер, что убьет всю выгоду от использования внеконтекстного метода.

Лекция закончена. Сделайте домашнюю работу.
46 vmv
 
14.05.12
23:13
(45) ладно если вы стесняетесь выложить код, я сам завтра гляну на работе эти поделки - наверняка там совершенно другой смысл и никакие данные формы внеконтекстый метод модуля формы не юзает и уж тем более не меняет данные формы - это невазможно.

Я никому не скажу, что вы тут упирались и рассказивали сказки битый час, обещаю)
47 vmv
 
14.05.12
23:23
&НаКлиенте
Процедура МетодНаКлиенте1()

ВнекотекстныйМетодНаКлиенте1(ЭтаФорма);
ВнекотекстныйМетодНаКлиенте2();

КонецПроцедуры


&НаКлиентеНаСервереБезКонтекста
Процедура ВнекотекстныйМетодНаКлиенте1(ПараметрЭтаФорма)

ПараметрЭтаФорма.Заголовок = "В натуре0";

КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ВнекотекстныйМетодНаКлиенте2()

//Заголовок = "В натуре1";
ЭтаФорма.Заголовок = "В натуре2";

КонецПроцедуры

что из етого будет работать согласно логике 45?)

по-моему ни хрена
48 МуМу
 
15.05.12
00:02
я в шоке:)
49 МуМу
 
15.05.12
00:04
Я не понял вопроса в (0). Это для оптимизации кода или для оптимизации производительности?
50 МуМу
 
15.05.12
00:07
Как говорил мой знакомый гуру - не нужно экономить машинное время нужно экономить свое личное;) (хотя возможно эту фразу он где то украл)
51 veronika1888
 
15.05.12
10:12
это все, конечно, прикольно, но директива &НаКлиентеНаСервереБезКонтекста не канает в модуле формы.

(Проверка: Сервер)

(Проверка: Тонкий клиент)
52 veronika1888
 
15.05.12
10:15
(50) ты прав. Все больше в этом убеждаюсь.
Когда мне во франче говорили то же самое, я возмущалась по типу "а как же качество кода внутри"... Но время показывает, что франч был прав.
53 experimentator76
 
15.05.12
10:25
(50) плохо кончил твой гуру? )
54 experimentator76
 
15.05.12
10:25
+(50) щас мышки протирает ?
55 experimentator76
 
15.05.12
10:28
(52) это многое объясняет
кстати франч не заточен на качество кода а заточен на скорость превращения кода\времени в бабло
да собственно посмотри на себя - продаешь свои поделки за копейки... научили тебя - пойди поблагодари еще
56 experimentator76
 
15.05.12
10:28
+(52) время показывает что тупость не победима )
57 vvp91
 
15.05.12
10:51
(51) давай разбираться - что у тебя не "канает"?
Что конкретно написала платформа, какая версия платформы?

Мрак - и УТ 11.0 и БП 3.0 на этом написаны. Но один перец рассказывает сказки про свое прочтение документации, другая же ботает по фене непойми о чем.
58 veronika1888
 
15.05.12
11:01
(57) заработало
59 vvp91
 
15.05.12
11:03
(58) ну и славненько.
60 МуМу
 
15.05.12
13:24
(54) Да нет , долларовый миллионер.:) Ну а если серьезно - целью любого бизнеса есть получение максимальной прибыли. ИТ системы это средства развития бизнеса. Исходя из этого код не должен писаться красиво - он должен писаться эффективно. В некоторых случаях быстро, в некоторых аккуратно, в некоторых случаях задумываться о вопросах производительности а в некоторых забить на них.В некоторых случаях важен вопрос дальнейшего развития и поддержки системы а в некоторых важен быстрый первый результат ... Вообщем вариантов много.
61 vmv
 
15.05.12
14:55
(57) я пока не ставил платформы выше 8.2.14(жду 8.3 уже - на хрен юзать миноры), если там логика внеконтекстных вызовов изменена, то хорошо, но я пока сомневаюсь, что вы отдаете отчет своим утверждениям.

что касается тезиса "не нужно экономить машинное время нужно экономить свое личное", то я с ним согласен и постановка задачи в (0) укладивается в этот тезиз, т.к. "борьба" тут не за качество кода как такового, а за возможность разместить РАСЧЕТНЫЙ АЛГОРИТМ В ОДНОМ БЛОКЕ КОДА (методе), который можно вызывать как с клиета так и сервера.

Согласитесь, что обслуживая один метод - экономишь свое время, тогда как обслуживая более одного(пусть и индентичных по телу метода) - ведет к затратам своего времени и большей вероятности накосячить.

Как решишь задачу я указал выше, к сожалению господин vvp91 все еще стесняется выложить код внеконтествного метода, работающего с данными формы из УТ-11 под 8.2.15+, видимо он страшиться кары за разлашение идеи - это великая тайна новаторов 1С, сегодня тоже пичалька)
62 jsmith
 
15.05.12
15:01
вообще всё правильно сделала, я тоже дублирую, когда надо
наклиентенасерверебезконтекста имхо не совсем кошерно, лишняя сущность без надобности

////////////////////////////////////////////////////////////////////////////////
//        ТОВАРЫ.ПОЛЯ СОБЫТИЯ-ИСТОЧНИК

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
   
   НомерСтроки = Элементы.Товары.ТекущаяСтрока;
   ТоварыКоличествоПриИзмененииКлиент(НомерСтроки);    
   
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
//        ТОВАРЫ.ПОЛЯ СОБЫТИЯ-КЛИЕНТ

&НаКлиенте
Процедура ТоварыКоличествоПриИзмененииКлиент(НомерСтроки)
   
   ЗаписатьРек_ТоварыСуммаКлиент(НомерСтроки);    
   
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
//        ТОВАРЫ ЗАПИСАТЬРЕК

&НаКлиенте
Процедура ЗаписатьРек_ТоварыСуммаКлиент(НомерСтроки)
   
   СтрокаТабЧасти = Объект.Товары.НайтиПоИдентификатору(НомерСтроки);
   
   СтрокаТабЧасти.Сумма = СтрокаТабЧасти.Цена * СтрокаТабЧасти.Количество;
   
КонецПроцедуры

&НаСервере
Процедура ЗаписатьРек_ТоварыСуммаСервер(НомерСтроки)
   
   СтрокаТабЧасти = Объект.Товары.НайтиПоИдентификатору(НомерСтроки);
   
   СтрокаТабЧасти.Сумма = СтрокаТабЧасти.Цена * СтрокаТабЧасти.Количество;
   
КонецПроцедуры
63 veronika1888
 
15.05.12
15:03
(62) спасибо, утешил, а то тут все меня засмеяли
64 vmv
 
15.05.12
15:18
(62) да копирование(клонирование вернее) метода - это способ, но очень легко забыть сделать исправления и там и там, да и отладка и все такое.

(63) так что у вас заработало, такой вариант клонирования или все же есть способ скормить данные формы во внеконтекст без посредников(структуры, списки)

где же етот господин хороший со своим рабочим кодом - он что "жадный" из этих по теореме БЖ?)
65 vmv
 
15.05.12
15:24
никто тут никого не высмеивал обычный поиск решения двух троллей, эээ, двух специалистов)
66 pumbaEO
 
15.05.12
15:36
(62) ОФФ: вопрос это парсер так сделал что между комментариями у тебя пустая строка или же по правде так пишешь?

////////////////////////////////////////////////////////////////////////////////

//  ТОВАРЫ ЗАПИСАТЬРЕК
67 Mort
 
15.05.12
15:40
Какая жесть 4 процедуры на один оператор.
68 jsmith
 
15.05.12
15:41
(66) это так скопировалось
по идее конечно любой вызов это тормоза, и любая лишняя строка это тормоза