0
- 12.05.2012 - 10:02
|
Извеняюсь за нубовопрос, но сталкнулся с задачей и не могу найти красивого решения, хотя интуитивно думаю что оно должно быть... Может кто подскажет... Задача такая. Есть большая таблица (ТЗ1), необходимо ее отработать по частям (то есть допустим по 1000 строк.) И результат собрать в новой таблице ТЗ2. Знаю что странная идея, но можно ли в данном случаи обойтись без циклов перебора построчного? Я знаю что можно обходя циклом ТЗ1 формировать по 1000 строк вспомогательную таблицу, отработать получив результат и его обойдя циклом добавить в ТЗ2. Должны же быть методы которые позволят это более правильно сделать. Например выбрать из ТЗ строки с X по Y? | |
1
- 12.05.2012 - 10:09
|
Заполнить(<?>,,,); Синтаксис: Заполнить(<Знач>,<НачСтрока>,<КонСтрока>,<Колонки> ) Назначение: Заполнить соответствующие ячейки таблицы значений переданным значением. Параметры: <Знач> - значение одиночное или список значений или таблица значений. <НачСтрока> - необязательный параметр. Номер начальной строки, с которой надо начинать заполнение. Значение по умолчанию 1. <КонСтрока> - необязательный параметр. Номер последней строки, по которую надо заполнять. Если не указана, то до последней. <Колонки> - необязательный параметр. Номера или идентификаторы колонок, которые надо заполнять. Если параметр не задан, то заполняются все | |
2
- 12.05.2012 - 10:27
| Перепутав в (1) первый и последний параметр - 1Ску вышибает в аут сразу.. мгновенно... | |
3
- 12.05.2012 - 10:28
| Это в 8 такой метод? Если да то как им пользоваться? У ТаблицыЗначений такого метода не увидел в синтаксис помошнике... Буду признателен за пример... | |
4
- 12.05.2012 - 10:43
|
Где ты написал, что это 8? Скопировать() Только не нужна тебе ТЗ вообще | |
5
- 12.05.2012 - 11:05
|
я просто раздел выбрал v8... Но согласен отметить надо было отметить... Не могу понять как мне с помощью Скопировать в результате в Новой таблице получить строки например с 1000 по 2000? Я так понимаю отбором ограничить только можно но там же только на равенство вроде? Напишите пример плз. Буду очень признателен | |
6
- 12.05.2012 - 11:38
|
ты не ответил на главный вопрос - зачем? 99%, что ТЗ вообще не нужна | |
7
- 12.05.2012 - 11:45
| Есть мысль что из-за этого будет выигрыш во времени. (Хотя в теории этого не должно быть). Просто обработка Таблицы в 400 000 идет несколько часов, а в 40 000 5-7 минут. Хотим проверить будет ли быстрее если частями отработать большую таблицу. В обработке очень наверченый запрос суть которого не передать... Начальство не успокоится пока не проверим эту теорию, а несколько построчных циклов для формирования минитаблиц - это левое время которое хочу отсечь. | |
8
- 12.05.2012 - 11:48
| судя по тому что сильно меняется время, идёт поиск по таблице. может просто проиндексировать нужное поле? | |
9
- 12.05.2012 - 11:48
| +8 код покажи | |
10
- 12.05.2012 - 11:50
|
"Большая таблица" то как то получается. Смотреть надо в сторону ее формирования... имхается мне, что в коде грубейшая ошибка (типа цикла в цикле) | |
11
- 12.05.2012 - 11:57
|
Код показать проблемотично, но идею с Поиском в таблице проверю обязательно. Спс за совет. Но мы удалились от темы :) Я так понимаю нет возможности разбить таблицу на части по количеству строк? | |
12
- 13.05.2012 - 11:51
|
розроботчег, блин! вместо удаления гланд через Ж, лучше покажи свой код. Где-то кривизна там у тебя, причём похоже очень грубая. Возможно, у тебя в ТЗ есть клолнка с типом ссылка на справочник или на документ (например, "Док"), и в цикле по строкам ты используешь эту ссылку для разыменования: а = СтрокаТЗ.Док.КакойТоРеквизитДокумента; | |
13
- 13.05.2012 - 12:02
| Что в ТЗ в 40 000 строк можно обрабатывать 5 минут? Я уж молчу про несколько часов пусть и 400 000 строк. Видимо проблема все-таки в проблемОтичном коде. Искать надо в уонсерватории | |
14
- 13.05.2012 - 23:13
| (13) йо, браз! а что может при загрузке их иксемеля часами грузить...? как написано - так и работает... иногда проще подождать 5-7 минут три раза в меясц, чем портатить полдня и более на переписывание.. и не факт что переписанное будет лучше | |
15
- 14.05.2012 - 04:37
| (14)Не подменяй понятия. При работе с XML - именно XML и есть узкое место, а не ТЗ | |
16
- 14.05.2012 - 06:56
| формировать сразу правильную тз не предлагали исчо? | |
17
- 14.05.2012 - 07:50
|
Узкое место нашел, скорость улучшил. За подсказки всем спасибо, но ради любопытства успокоиться не могу. Неужели в 1с8 нет нормальных команд: 1)Выбрать из ТЗ часть строк не по отбору определенного значения, а тупо по количеству строк 2) Как к одной таблице дописать строки из другой таблицы такой же структуры. Неужели только пакетными запросами курочить? | |
18
- 14.05.2012 - 07:53
|
(17) за работу с ТЗ в восьмерке ... ЗЫ бить будут | |
19
- 14.05.2012 - 08:44
| форум есть форум :) Тыкнуть в то, что не оптимально все готовы (хотя и сами знаем, что не совсем оптимально), а по делу ни одного комментария. | |
20
- 14.05.2012 - 08:55
|
(19) Задача такая. Есть большая таблица (ТЗ1) (цоперайт) ЗЫ ничо нигде никак ? чо тут подсказывать та | |
21
- 14.05.2012 - 09:03
|
19-MiniMuk23 > Любишь выходы через жопу? Твое суверенное право. Мы люди гуманные... Код у него... секретный очень. :D | |
22
- 14.05.2012 - 09:17
| 21-VZ > Мне тоже иногда бывает стыдно код показывать... | |
23
- 14.05.2012 - 10:14
| а шо, запросы отменили ? | |
24
- 14.05.2012 - 10:16
| почему это "ломать", нормальный запрос - нормальный результат, без ломки | |
25
- 22.05.2012 - 18:49
| (22) а мну - нет. работает и работает. манагера устраивает. зачем тратить полдня-день-два, чтобы поднять удобство-производительность юзера на 0.2%...? конечно, если делать СОВСЕМ УЖЕ НЕЧЕГО... | |
26
- 22.05.2012 - 22:07
| интересно, что автору мешает ПЕРЕД обработкой ТЗ проверить сколько строк и сделать цикл по индексу с разбиением по интервалам???? мне минут 5... | |
| Интернет-форум Краснодарского края и Краснодара |