|
Самый оптимальный способ сформировать из ТЗ другие ТЗ по контрольному столбцу | ☑ | ||
---|---|---|---|---|
0
bas28000
01.08.13
✎
10:53
|
Есть ТЗ, в ней есть некий столбец, в котором некий код. Нужно разбить всю ТЗ на несколько других ТЗ, которые будут содержать строки только с одним и тем же неким кодом. Код произвольный, то есть это не перечисление неких символов и/или цифр/чисел, это просто практически случайное число, но по основной ТЗ оно постоянно будет повторяться для каких-либо строк.
Как наиболее оптимально получить множество ТЗ с одинаковыми контрольными кодами? |
|||
1
Ёпрст
01.08.13
✎
10:53
|
запросом
|
|||
2
Maxus43
01.08.13
✎
10:55
|
+ пакетным запросом.
в каждом пакете отбор из основной по опред условию, ВыполнитьПакет().Выгрузить() |
|||
3
Defender aka LINN
01.08.13
✎
10:56
|
(1) Запросом "множество ТЗ" ты не получишь, один хрен обходить надо будет.
(0) Вы знаете, иногда таки приходится программировать... |
|||
4
Ёпрст
01.08.13
✎
10:58
|
(3) почему ? пакетный..
|
|||
5
Ёпрст
01.08.13
✎
10:59
|
вполне подоёдет
|
|||
6
Maxus43
01.08.13
✎
10:59
|
(4) ну пакеты обходить надо всё равно. но там 3 строки кода с коментариями
|
|||
7
Defender aka LINN
01.08.13
✎
11:00
|
(4) Один фиг
|
|||
8
salvator
01.08.13
✎
11:02
|
(0)
Получаешь список уникальных кодов. Для каждого из них создаешь копию основной таблицы и удаляешь из нее строки, где код не равен этому уникальному коду. |
|||
9
МихаилМ
01.08.13
✎
11:08
|
сверните тз в дз
|
|||
10
Полотенчик
01.08.13
✎
11:08
|
(8) +1. Только при копировании сразу указывай отбор по коду и не надо будет удалять лишние
|
|||
11
bas28000
01.08.13
✎
11:44
|
(9) В смысле?
(8) Вот да, как его получить оптимальным образом? |
|||
12
Полотенчик
01.08.13
✎
11:45
|
(11) скопируй в новую таблицу значений только столбец с кодом и сверни таблицу по этому столбцу
|
|||
13
salvator
01.08.13
✎
11:47
|
(10) +100 забыл совсем про этот вариант
|
|||
14
1Сергей
01.08.13
✎
11:49
|
дурацкая задача. Какой прок от неопределенного множества таблиц значений? Думаю, задачу можно решить другими способами
|
|||
15
Euguln
01.08.13
✎
11:52
|
(2) +1
|
|||
16
bas28000
01.08.13
✎
11:56
|
(14) Тут дело в том, что задача действительно дурацкая. Стоит она потому, что есть некие файлы обмена, которые либо в csv, либо в dbf, и вот бывает, что эти файлы содержат в одной таблице несколько документов сразу. Рассортировать эти документы можно только по номеру документа, который указывается в одном столбце, то есть в один файл просто фигачатся все нужные документы.
Идиоту, который это придумал, я бы давно в голову гвоздь забил, но он далеко. Приходится вот разбирать эти файлы как-то иначе. Может быть подскажете другой вариант? |
|||
17
Лефмихалыч
модератор
01.08.13
✎
11:59
|
только это запрос в цикле и лучше так не делать |
|||
18
Лефмихалыч
модератор
01.08.13
✎
12:01
|
(16) тогда проще принять, как данность, что в каждом файле большеодного документа, и при помощи итогов по номеру выгрузить в дерево, а дверево уже обходить с вложенной выборкой. Запросов в цикле не будет
|
|||
19
bas28000
01.08.13
✎
12:02
|
(18) Как данность это уже и принято, да. А вот что ты после написал, я не понял :)
|
|||
20
Euguln
01.08.13
✎
12:02
|
(17) А в чем проблема в цикле устанавливать один и тот же текст запроса и менять параметр Запрос.УстановитьПараметр("Значение" + Сч, Выборка.ТаСамаяКолонка);
и выполнить пакетом. |
|||
21
bas28000
01.08.13
✎
12:21
|
(20) довольно криво, нет?
|
|||
22
Лефмихалыч
модератор
01.08.13
✎
12:24
|
(19) смотри
(20) да ни в чем в общем-то, просто запрос может получится непредсказуемо огромный. Это риск. |
|||
23
bas28000
01.08.13
✎
12:27
|
(22) Ага, понятно. Спасибо!
|
|||
24
1Сергей
01.08.13
✎
12:29
|
(16) по прежнему не вижу необходимости разбивать ТЗ на несколько
|
|||
25
Лефмихалыч
модератор
01.08.13
✎
12:36
|
(24) ее и не было, автор просто цель со средствами перепутал
|
|||
26
bas28000
01.08.13
✎
12:46
|
(24) А, Сергей, если дело в этом, то верно, можно и иначе эти данные хранить и обрабатывать, по факту нужен все равно какой-то алгоритм, позволяющий получать эти данные порциями, которые будут замешаны на контрольном коде. У вас есть предложение именно по этой части алгоритма? :)
|
|||
27
Полотенчик
01.08.13
✎
12:55
|
(17) фу, ужас какой. зачем таблицу перегонять в БД, записывать на хард временные таблицы ради банального перебора?
|
|||
28
sunson
01.08.13
✎
12:59
|
//Копируем найденные файлы в указанную папку
СписокКаталогов = ТЗ.Скопировать(); СписокКаталогов.Свернуть("Каталог"); Для каждого КаталогФайла Из СписокКаталогов Цикл ОтборКаталога = Новый Структура("Каталог", КаталогФайла.Каталог); ФайлыКаталога = ТЗ.НайтиСтроки(ОтборКаталога); Если ФайлыКаталога.Количество() > 0 Тогда Путь = ПутьСохранения + "\" + КаталогФайла.Каталог; Файл = Новый Файл(Путь); Если Не Файл.Существует() Тогда СоздатьКаталог(Путь); КонецЕсли; Для каждого ФайлЧертежа Из ФайлыКаталога Цикл КопироватьФайл(ФайлЧертежа.ИмяФайлаИсточника, ФайлЧертежа.ИмяФайлаПриемника); КонецЦикла; КонецЕсли; КонецЦикла; |
|||
29
sunson
01.08.13
✎
13:01
|
(26) еще можно делать НоваяТЗ = СтараяТЗ.Скопировать(Отбор)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |