|
v7: Как ускорить ""ТЗ.Свернуть("Раз,Два,Три","Четыре,Пять");"" | ☑ | ||
---|---|---|---|---|
0
Corvax46
10.12.12
✎
17:04
|
Здравствуйте.
Есть метод "свернуть таблицу значений". Сама по себе ТЗ около 100к строк. И свертка идет чуть больше часа. Есть ли алгоритмы оптимизации сего процесса? По возможности без удаления "лишних" колонок из таблицы значений. Ну и подвопрос. Если кто проводил замеры, насколько ускоряется процесс после удаление части колонок (в процентах)? |
|||
1
Ёпрст
10.12.12
✎
17:05
|
явно типизировать все колонки, сворачивать кусками по тысяче строк, к примеру
|
|||
2
Азат
10.12.12
✎
17:06
|
прямые дела не помогут?
|
|||
3
Нуф-Нуф
10.12.12
✎
17:06
|
попробуй запросом
|
|||
4
Ёпрст
10.12.12
✎
17:06
|
ну или свернуть в другом месте.. запросом, к примеру.
|
|||
5
ДенисЧ
10.12.12
✎
17:06
|
(3) Запросом? В 77?
|
|||
6
exwill
10.12.12
✎
17:06
|
(0) Больше часа? Вот для таких случаев и придумали язык запросов.
|
|||
7
Ёпрст
10.12.12
✎
17:07
|
(5) яя.. натюрлих!
|
|||
8
Mikeware
10.12.12
✎
17:12
|
Может, "что-то в консерватории поправить"©?
|
|||
9
Pasha
10.12.12
✎
17:15
|
(0) В транзакции попробуй
|
|||
10
Ёпрст
10.12.12
✎
17:17
|
(9) :))))))))))
какое отношение она имеет к свёртке ТЗ ? |
|||
11
Mikeware
10.12.12
✎
17:19
|
(9) спасибо, повеселил! :-))))
|
|||
12
Corvax46
10.12.12
✎
17:19
|
Запросом интересная мысль. Немного сбивает с толку что в эту ТЗ собираются сводные данные. Образно:
Собрали поступления: 1 колонка: поставщик 2 колонка: товар 3 колонка: количество (значение положительное) В ту же ТЗ собираем возвраты поставщикам: 1 колонка: поставщик 2 колонка: товар 3 колонка: количество (здесь значение отрицательное) И теперь сворачиваем ТЗ("поставщик,товар","количество"). |
|||
13
Corvax46
10.12.12
✎
17:20
|
(+12) Получаем чистые поставки за минусом возврата поставщику.
|
|||
14
exwill
10.12.12
✎
17:23
|
(13) И в чем проблема?
|
|||
15
Corvax46
10.12.12
✎
17:24
|
(14) Очень стесняюсь.... Как в запросе сгруппировать?
|
|||
16
Mikeware
10.12.12
✎
17:25
|
(15) получай данные запросом. сразу. и в запросе вычитай
|
|||
17
viktor_vv
10.12.12
✎
17:31
|
(15) Как-то так. Откуда брешь данные ? Из докумнтов ?
|Поставщик = Документ.ПРиходнаяНакладная.Контрагент, Документ.ВозвратПоставщику.Контрагент ; |КолПриход = Документ.ПРиходнаяНакладная.Количество; |КолВозврат = Документ.ВозвратПоставщику.Количество; |Функция ЧистыПриход = Сумма(КолПриход - КолВозврат) ; |Группировка Поставщик ; |
|||
18
Corvax46
10.12.12
✎
17:32
|
(16) Я так понимаю образно так:
|КвоПриход = Документ.ПоступлениеТоваров.Количество; |КвоВозврат = Документ.ВозвратТоваровПоставщику.Количество; |Группировка КвоПриход; |Группировка КвоВозврат; |Функция КвоИтого = Сумма(КвоПриход - КвоВозврат); Нечто подобное? |
|||
19
exwill
10.12.12
✎
17:33
|
(18) Группировка наверно по товару? не?
|
|||
20
Mikeware
10.12.12
✎
17:33
|
(19) и по поставщику..
|
|||
21
Serginio1
10.12.12
✎
17:34
|
(10) Есть. А сортирует она у тебя за сколько?
|
|||
22
Mikeware
10.12.12
✎
17:34
|
+(20) ну и товар нужно в запросе выдергивать тоже
|
|||
23
mikecool
10.12.12
✎
17:34
|
как запихнуть ТЗ в запрос? мой гений дарит вам (с) Геня
pRS = CreateObject("ODBCRecordset"); pRS.ВыполнитьИнструкцию("IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id = object_id('tempdb..#VINRUDTable')) DROP TABLE tempdb..#VINRUDTable |CREATE TABLE tempdb..#VINRUDTable (RUD char(15), VIN char(17), DeliveryDate char(8))"); pRS.ДобПараметр(1, 14, 15, 0); pRS.ДобПараметр(1, 14, 17, 0); pRS.ДобПараметр(1, 14, 10, 0); pRS.Prepare("INSERT INTO tempdb..#VINRUDTable (RUD, VIN, DeliveryDate) VALUES(?, ?, ?)"); pRS.ВыполнитьSQL_ИзТЗ(ТемпТЗ, 0); бла-бла pRS.ВыполнитьИнструкцию("DROP TABLE tempdb.dbo.#VINRUDTable"); это так, вдруг кому пригодится ))) |
|||
24
Corvax46
10.12.12
✎
17:36
|
(21) Оч быстро. меньше минуты
|
|||
25
Mikeware
10.12.12
✎
17:36
|
(23) излишество.
зачем вытаскивать все в ТЗ, затем сливать все в базу - если можно извлечь готовые сгруппированные данные одним запросом? |
|||
26
Serginio1
10.12.12
✎
17:36
|
А спамятьюу тебя что? Не может 100к записей группироваться за 1 час
|
|||
27
mikecool
10.12.12
✎
17:36
|
(25) не спорю, просто так приплел - вдруг кому пригодится
|
|||
28
Corvax46
10.12.12
✎
17:37
|
4 гига, w2k3 ентерпрайз.
1с-ка забирает около 700 мб |
|||
29
mikecool
10.12.12
✎
17:38
|
+27 я этим пользовался при загрузке из екселя, считал данные в ТЗ, а потом выдернул по ним данные из базы
зы: 1с++ |
|||
30
Mikeware
10.12.12
✎
17:41
|
Я как-то давно делал экспорт их икзеля сразу в базу. недоделал, увидел готовое (вроде, ёпрст'шное)
|
|||
31
Нуф-Нуф
10.12.12
✎
17:42
|
1. создать базу на 8.2
2. в базе создать общий модуль, который читает цсв и грузит в ТЗ, выполняет к ней запрос, выгружает в ТЗ, сохраняет в цсв 3. в 7ке сохранять ТЗ в цсв 4. в семерке цепляться к 8.2 вызывать процедур |
|||
32
Нуф-Нуф
10.12.12
✎
17:42
|
йоу
|
|||
33
Serginio1
10.12.12
✎
17:43
|
(28) А сортировка этой таблицы за сколько происходит?
Понятно, что лучше данные получить сгруппированные прямым запросом, а то 1С еще и группирует на клиенте. Попробовать разбиь тз на 10 тз свернуть, затем их объединить и свернуть окончательно. |
|||
34
ДенисЧ
10.12.12
✎
17:43
|
Суровые челябинцы всегда решают задачи через...
Может, проще булком в скуль таблицу залить? |
|||
35
mikecool
10.12.12
✎
17:45
|
(34) эх, были времена, когда база была на 2000 скуле, отдельно стоял 2005 через который я рисовал иерархическую структуру справочника )))
|
|||
36
Serginio1
10.12.12
✎
17:46
|
Вот есть такая обработка, но она делает типа Итоги в 1С
Можно не храненити ТзПоГруппе и получишь ту же группировку. Единственоо сравнивать нужно с конца списка. Функция СравнитьСписки(Сп1,сп2) Для сч=1 по Сп1.РазмерСписка() Цикл Если Сп1.ПолучитьЗначение(сч)<>Сп2.ПолучитьЗначение(сч) Тогда Возврат 0 КонецЕсли; КонецЦикла; возврат 1 КонецФункции Функция глСгруппироватьПоПолямСТЗБыстр(Тз,Поля,Ресурсы) Экспорт перем Тип,Длина,Точность; Тз.Сортировать(Поля); ТзФ=СоздатьОбъект("ТаблицаЗначений"); Сз=СоздатьОбъект("СписокЗначений"); СписокИзмерений= ИзСтрокиСРазделителями(Сз,Поля,","); Для сч=1 по СписокИзмерений.РазмерСписка() Цикл Поле=СписокИзмерений.ПолучитьЗначение(сч); Тз.ПолучитьПараметрыКолонки(поле,тип,Длина,Точность); ТзФ.НоваяКолонка(поле,тип,длина,Точность); КонецЦикла; Сз=СоздатьОбъект("СписокЗначений"); СписокРесурсов=ИзСтрокиСРазделителями(Сз,Ресурсы,","); Для сч=1 по СписокРесурсов.РазмерСписка() Цикл Поле=СписокРесурсов.ПолучитьЗначение(сч); Тз.ПолучитьПараметрыКолонки(поле,тип,Длина,Точность); ТзФ.НоваяКолонка(поле,тип,длина,Точность); КонецЦикла; ТзФ.НоваяКолонка("ТзПоГруппе","ТаблицаЗначений"); ТекСтр=0; Измерения=СоздатьОбъект("СписокЗначений"); ТекИзмерения=СоздатьОбъект("СписокЗначений"); Для сч=1 по СписокИзмерений.РазмерСписка() Цикл Измерения.ДобавитьЗначение(""); ТекИзмерения.ДобавитьЗначение(""); КонецЦикла; НачСтр=0; Если Тз.КоличествоСтрок()>0 Тогда Для сч=1 По Тз.КоличествоСтрок() Цикл Для счИзм=1 по СписокИзмерений.РазмерСписка() Цикл Поле=СписокИзмерений.ПолучитьЗначение(счизм); ТекИзмерения.УстановитьЗначение(счИзм,Тз.ПолучитьЗначение(сч,Поле)); КонецЦикла; Если (Сч=1) или ( СравнитьСписки(Измерения,ТекИзмерения)=0) Тогда Если НачСтр>0 Тогда ТекТз=СоздатьОбъект("ТаблицаЗначений"); Тз.Выгрузить(ТекТз,НачСтр,сч-1); Тзф.ТзПоГруппе=ТекТз; Для СчРес=1 по СписокРесурсов.РазмерСписка() Цикл Поле=СписокРесурсов.ПолучитьЗначение(СчРес); Значение=ТекТз.Итог(Поле); Тзф.УстановитьЗначение(ТекСтр,Поле,Значение); КонецЦикла; КонецЕсли; ТзФ.НоваяСтрока(); ТекСтр=Тзф.КоличествоСтрок(); Измерения.УдалитьВсе(); ТекИзмерения.Выгрузить(Измерения); Для счизм=1 по СписокИзмерений.РазмерСписка() Цикл Поле=СписокИзмерений.ПолучитьЗначение(счизм); Значение=Тз.ПолучитьЗначение(сч,Поле); Тзф.УстановитьЗначение(ТекСтр,Поле,Значение); КонецЦикла; ТекТз=глКлонироватьСтруктуруТЗ(Тз); Тзф.ТзПоГруппе=ТекТз; НачСтр=Сч; КонецЕсли; КонецЦикла; Если НачСтр>0 Тогда ТекТз=СоздатьОбъект("ТаблицаЗначений"); Тз.Выгрузить(ТекТз,НачСтр); Тзф.ТзПоГруппе=ТекТз; Для СчРес=1 по СписокРесурсов.РазмерСписка() Цикл Поле=СписокРесурсов.ПолучитьЗначение(СчРес); Значение=ТекТз.Итог(Поле); Тзф.УстановитьЗначение(ТекСтр,Поле,Значение); КонецЦикла; КонецЕсли; КонецЕсли; // ТзФ.ВыбратьСтроку(); Возврат ТзФ; КонецФункции |
|||
37
viktor_vv
10.12.12
✎
17:46
|
Я как-то делал через linked serverы из экселя
select into |
|||
38
ДенисЧ
10.12.12
✎
17:47
|
(35) А что 2005? А не оракл? :-)
|
|||
39
viktor_vv
10.12.12
✎
17:49
|
(37) к (29).
|
|||
40
mikecool
10.12.12
✎
17:49
|
(38) с оракулем я еще при установке не подружился )
как то помнится дома 8й на ХП поднял, а что за логин-пароль одмина - нигде ни слова, хорошо был знакомый, который подсказал, и то он потом не работал, службы падали постоянно )) а вот 2005, да на сервере ставится в пол-тычка без особых знаний )) |
|||
41
Pasha
10.12.12
✎
17:50
|
(10) В транзакции многие вещи происходят быстрее, чем без нее, вот и все отношение...
|
|||
42
Ёпрст
10.12.12
✎
17:50
|
(41) какая наивность
|
|||
43
mikecool
10.12.12
✎
17:51
|
(41) лишь бы эякуляция не была преждевременной ))))
|
|||
44
Pasha
10.12.12
✎
17:51
|
(43) страдаешь?
|
|||
45
ДенисЧ
10.12.12
✎
17:52
|
(40) Зато в оракле были и есть конструкции для дерева... :-)
|
|||
46
mikecool
10.12.12
✎
17:52
|
(43) без транзакции - нет, а вот в транзакции....
|
|||
47
mikecool
10.12.12
✎
17:52
|
(45) ну что тут сказать? ))) и так было плохо после оракла пересесть на мс скуль )))
|
|||
48
igork1966
10.12.12
✎
17:55
|
(44) просто твой пост показывает полное непонимание процесса... вот тебя и подкалывают
|
|||
49
Cthulhu
10.12.12
✎
17:56
|
1склайтом - уложить и запросить. прям в мозгах.
|
|||
50
Cthulhu
10.12.12
✎
17:56
|
(49)+: и в пару-тройку строк.
|
|||
51
Corvax46
10.12.12
✎
18:01
|
(49) Если не сложно, можно пример?
|
|||
52
Serginio1
10.12.12
✎
18:08
|
Процедура УложитьТаблицу(рс,ИБ,пТЗ, ИмяТаб, Колонки="") Экспорт
Перем ТЗ; Если ПустаяСтрока(Колонки)=1 Тогда ТЗ=пТЗ; Иначе пТЗ.Выгрузить(ТЗ,,,Колонки); КонецЕсли; СтрCreate="create table %Имя% (/*column_definition*/)"; СтрInsert="insert into %Имя% values(/*?*/)"; Тип=""; Длина=""; Точность=""; ФорматнаяСтрока=""; КолонкиЕсть=0; Для Тек=1 По ТЗ.КоличествоКолонок() Цикл Идентификатор=ТЗ.ПолучитьПараметрыКолонки(Тек,Тип,Длина,Точность,,,ФорматнаяСтрока); Если (ПустаяСтрока(Колонки)=0)И(Найти(Колонки,Идентификатор)=0) Тогда Продолжить; КонецЕсли; КолонкиЕсть=1; Если ПустаяСтрока(ФорматнаяСтрока)=0 Тогда SQL_тип=ФорматнаяСтрока; рс.ДобПараметр(1,); ИначеЕсли ПустаяСтрока(Тип)=1 Тогда SQL_тип="char(9)"; рс.ДобПараметр(1,14,9,0); ИначеЕсли Тип="Число" Тогда Если Длина=0 Тогда Длина=38; Точность=10; КонецЕсли; SQL_тип="numeric(%p%,%s%)"; SQL_тип=СтрЗаменить(SQL_тип,"%p%",Длина); SQL_тип=СтрЗаменить(SQL_тип,"%s%",Точность); рс.ДобПараметр(1,11,Длина,Точность); ИначеЕсли Тип="Строка" Тогда Если Длина=0 Тогда SQL_тип="varchar(%n%)"; SQL_тип=СтрЗаменить(SQL_тип,"%n%",255); рс.ДобПараметр(1,15,255,0); Иначе SQL_тип="char(%n%)"; SQL_тип=СтрЗаменить(SQL_тип,"%n%",Длина); рс.ДобПараметр(1,14,Длина,0); КонецЕсли; ИначеЕсли Тип="Дата" Тогда SQL_тип="datetime"; рс.ДобПараметр(1,8,0,0); ИначеЕсли Найти(Тип,".")>0 Тогда SQL_тип="char(9)"; рс.ДобПараметр(1,14,9,0); Иначе SQL_тип="char(13)"; рс.ДобПараметр(1,14,13,0); // ТЗ.УстановитьПараметрыКолонки(Идентификатор,,,,"?2"); КонецЕсли; СтрCreate=СтрЗаменить(СтрCreate,"/*,*/",", "); СтрCreate=СтрЗаменить(СтрCreate,"/*column_definition*/",Идентификатор+" "+SQL_тип+"/*,*//*column_definition*/"); СтрInsert=СтрЗаменить(СтрInsert,"/*,*/",", "); СтрInsert=СтрЗаменить(СтрInsert,"/*?*/","?/*,*//*?*/"); КонецЦикла; Если КолонкиЕсть=1 Тогда ТекстЗапроса=" |set nocount on |if exists (select * from tempdb..sysobjects where id=object_id('tempdb..%Имя%') and sysstat & 0xf = 3 ) | drop table %Имя%; |"+СтрCreate+" |set nocount off |"; рс_=СоздатьОбъект("ODBCRecordset"); рс_.УстБД(ИБ); рс_.ВыполнитьИнструкцию(СтрЗаменить(ТекстЗапроса,"%Имя%",ИмяТаб)); рс.Подготовить(СтрЗаменить(СтрInsert,"%Имя%",ИмяТаб)); рс.ВыполнитьSQL_ИзТЗ(ТЗ,100); КонецЕсли; КонецПроцедуры |
|||
53
Voronve
10.12.12
✎
18:26
|
(0) 100к строк ? .Свернуть > часа ? оО Не верю (с)
Параметры железа в студию |
|||
54
Pasha
10.12.12
✎
18:31
|
(48) Метод НачатьТранзакцию() иногда помогает ускорить обработку больших массивов данных, так как работа полностью идет в оперативной памяти...
Может тут и не тот случай, потому и написал "попробуй"... Но хамства это не оправдывает... |
|||
55
viktor_vv
10.12.12
✎
18:34
|
(54) Пожалуй сейчас очередная порция будет :).
|
|||
56
Pasha
10.12.12
✎
18:39
|
(55) Лично со своими помошниками занимался сверткой УТ огроменной... Сократили время с 10 часов до 3... Дробили ТЗ, еще кучу всего..в том числе и транзакции
|
|||
57
Рэйв
10.12.12
✎
18:41
|
(56)ТЗ если что и так в памяти крутится. Обращения к базе нет. Не неси бред и смущение в массы:-)
|
|||
58
viktor_vv
10.12.12
✎
18:43
|
(56) Так при свертке запись в базу дробишь на мелкие транзакции, это понятно с ускорением.
Каким боком транзакция к свертке таблицы значений ? |
|||
59
viktor_vv
10.12.12
✎
18:44
|
(58)* При свертке базы.
|
|||
60
IOL
10.12.12
✎
18:45
|
А не кто не предложил сразу делать дерево итогов в другой ТЗ. т.е. добавлять строки в одну таблицу(детали), в другую тз (итоги), т.е. тупо найти строку с ключом и добавить в нее итог?
|
|||
61
Рэйв
10.12.12
✎
18:46
|
(60)Тебе рассказать про соединения в запросах?:-)
|
|||
62
Рэйв
10.12.12
✎
18:47
|
хот тут v7 вродет..С этим сложнее.
|
|||
63
IOL
10.12.12
✎
18:47
|
(61) Причем тут они, он наборку ТЗ делает, почему бы сразу параллельно и итоги не считать?
|
|||
64
Pasha
10.12.12
✎
18:48
|
(57) Ты вообще ничего не предложил... Так что не интересен
|
|||
65
Рэйв
10.12.12
✎
18:48
|
(63) Итоги в тз - напржна вещь. Если общие, то нет проблем.Но если по срезам - то гемор еще тот.
|
|||
66
IOL
10.12.12
✎
18:49
|
(65) Блин, да просто делается.
Ключ1+ключ2+ключ3 Итого1, Итог2 |
|||
67
Рэйв
10.12.12
✎
18:50
|
(64)А чего тут предлагать? Есть внутренний механизм. Худо - бедно работает.
Хочешь улучшить? - Валяй,флаг в руки, пиши ВК на асме. :-) Но только не надо тут про транзакции , убыстряющие работу с ТЗ:-)) |
|||
68
Рэйв
10.12.12
✎
18:51
|
(66)Несколько сверток. Потом несколько поисков...Не не оптимально.
|
|||
69
Mikeware
10.12.12
✎
18:52
|
(65) ты их просто готовить не умеешь..
|
|||
70
Рэйв
10.12.12
✎
18:52
|
(69)Да умею...но все равно писанины...
|
|||
71
Mikeware
10.12.12
✎
18:53
|
(67) "все давно украдено до вас."©
объект ИндексированнаяТаблица вполне себе рулит. я уж не говорю, что в данной задаче и она нафиг не нужна = все прекрасно достается и группируется запросом. |
|||
72
Garykom
гуру
10.12.12
✎
18:54
|
У него наверно вместо элементов справочников в ячейки строки засунуты.
Т.е. вместо поставщика, товара и т.д. строка с именем поставщика или товара |
|||
73
Mikeware
10.12.12
✎
18:54
|
(54) и где ты видишь хамство?
|
|||
74
IOL
10.12.12
✎
18:55
|
(68) Таблица итогов, в разы меньше чем, таблица деталей, значит и поиск по ней будет быстрее.
|
|||
75
Mikeware
10.12.12
✎
18:55
|
(72) лехко.
хотя при запихиании строк в ТЗ при таких объемах все бы упало еще на этапе заполнения ТЗ |
|||
76
Рэйв
10.12.12
✎
18:56
|
(71)Ну я с самого начала говорил про запрос
|
|||
77
viktor_vv
10.12.12
✎
18:56
|
(70) До индексированной таблицы пользовался вот этим. Вполне. И быстро.
http://infostart.ru/public/14140/ |
|||
78
IOL
10.12.12
✎
18:57
|
(74) А если вообще прямым запросом все выгребается, то через временные таблицы, и вообще париться не надо.
|
|||
79
Mikeware
10.12.12
✎
18:57
|
(77) да вариантов - куча...
|
|||
80
Рэйв
10.12.12
✎
18:59
|
(77)Спасибо, посмотрю.
|
|||
81
ADirks
10.12.12
✎
19:32
|
(54) мне иногда помогает:
- выпить вотки - выпить пива (побольше) - поспать - сходить в отпуск - погонять на велосипеде - почитать умные книжки - потрындеть с коллегами (не на форуме) - послать всех подальше Считаю, что ТС обязательно должен всё это попробовать! |
|||
82
Рэйв
10.12.12
✎
19:39
|
(81)Да он на вотке сломается и побежит кодить....
|
|||
83
Cthulhu
10.12.12
✎
20:37
|
(51): дапжалст.
------- Результаты: <10.12.2012/18:36:43/МилиСек=70934055>: Выгрузка ТЗ в таблицу 1sqlite: милиСекунд = 0,736 <10.12.2012/18:36:46/МилиСек=70936695>: Свертка 1sqlite-запросом: милиСекунд = 1,902 Исходная ТЗ: строк = 200000 / Ит.К-во = 200000 Свернутая ТЗ: строк = 252 / Ит.К-во = 200000 |
|||
84
Cthulhu
10.12.12
✎
20:37
|
в (83) в сообщениях - конечно же секунды...
|
|||
85
Cthulhu
10.12.12
✎
20:49
|
(83)+(84): криво и наскоро. вот пашущий код и тест на 500 000 строк:
<10.12.2012/18:49:28/МилиСек=71699029>: Выгрузка ТЗ в таблицу 1sqlite: Секунд = 2,584 <10.12.2012/18:49:34/МилиСек=71704375>: Свертка 1sqlite-запросом: Секунд = 5,344 Исходная ТЗ: строк = 500000 / Ит.К-во = 500000 Свернутая ТЗ: строк = 252 / Ит.К-во = 500000 |
|||
86
Cthulhu
10.12.12
✎
21:55
|
хотя.. тесты показывают, что очень сомнительно.
<10.12.2012/19:54:34/МилиСек=75604378>: Выгрузка ТЗ в таблицу 1sqlite: милиСекунд = 3,923 <10.12.2012/19:54:45/МилиСек=75615543>: Свертка 1sqlite-запросом: милиСекунд = 11,164 - Исходная ТЗ: строк = 999999 / Ит.К-во = 999999 - Свернутая ТЗ: строк = 252 / Ит.К-во = 999999 <10.12.2012/19:54:55/МилиСек=75625414>: Стандарт-свертка ТЗ: Секунд = 9,685 - Стандарт-свертка ТЗ: строк = 252 / Ит.К-во = 999999 |
|||
87
Corvax46
13.12.12
✎
12:29
|
(53)
-Кор 3 550 -4 гиг -W2k3 энтерпрайз x86 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |