|
Как объединить таблицы значений в одну | ☑ | ||
---|---|---|---|---|
0
Alexey vip
10.07.12
✎
17:11
|
Помогите, пожалуйста.
Есть несколько ТЗ (на данный момент 6, потом будет больше). Нужно соединить всё это дело в одну ТЗ. В каждой ТЗ первые две колонки одного типа (склад и номенклатурная группа), следующие три - числовые значения. Требуется сделать единую ТЗ (фактически объединить ТЗ) следующим образом: Первые две колонки пишутся (склад и номенклатурная группа), а затем дописывается справа по 3 числовые колонки с каждой ТЗ. Не хотелось бы перебирать циклами всё это дело, так как тысячи на тысячи дают слишком долгие ожидания. Пробовал делать через один запрос. В итоге бедный компьютер сообщил, что ему не хватило памяти. Возможно я как-то тупо составляю запрос: пробовал через 6 пакетов запросов, затем ещё запрос, где объединяются всевозможные склады и номенклатурные группы, затем ещё запрос, где я через 12 левых соединений соединяю всё это дело в одну табличку:) В общем поможет ли какой нибудь спец по запросам, или просто гений коддинга, который поможет как не через кучу циклов объединить много ТЗ:) бп 8.2 |
|||
1
Господин ПЖ
10.07.12
✎
17:12
|
все беды в мире - от кривых задач...
|
|||
2
andrewks
10.07.12
✎
17:12
|
в исходных ТЗ по измерениям "склад и номенклатурная группа" уникальность присутствует?
|
|||
3
Radion
10.07.12
✎
17:18
|
попробуй так (код не мой))):
// Добавляет в таблицу значений строки из другой таблицы значений и // в них значения колонок с совпадающими наименованиями. // // Параметры: // ТаблицаИсточник - таблица значений, откуда берутся значения. // ТаблицаПриемник - таблица значений, куда добавляются строки. Функция ЗагрузитьВТаблицуЗначений(ТаблицаИсточник, ТаблицаПриемник) //Сформируем массив совпадающих колонок. МассивСовпадающихКолонок = Новый Массив(); Для каждого Колонка Из ТаблицаПриемник.Колонки Цикл Если ТаблицаИсточник.Колонки.Найти(Колонка.Имя) <> Неопределено Тогда МассивСовпадающихКолонок.Добавить(Колонка.Имя); КонецЕсли; КонецЦикла; Для каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл СтрокаТаблицыПриемника = ТаблицаПриемник.Добавить(); // Заполним значения в совпадающих колонках. Для каждого ЭлементМассива Из МассивСовпадающихКолонок Цикл СтрокаТаблицыПриемника[ЭлементМассива] = СтрокаТаблицыИсточника[ЭлементМассива]; КонецЦикла; КонецЦикла; Возврат ТаблицаПриемник; КонецФункции // ЗагрузитьВТаблицуЗначений() |
|||
4
Kreont
10.07.12
✎
17:21
|
классно звучит: "12 левых соединений" :)
Попробуй обычным объединением: инд.поле1, инд.поле2, параметр1,параметр2,параметр3, + (в цикле добавить N-раз, 0,0,0) и так для каждой, во второй наборот: инд.поле1, инд.поле2, 0,0,0, параметр1,параметр2,параметр3, 0,0,0, ... и т.д. Или через обработку одной ТЧ, добавляя нужные колонки + поиск через структуру нужной строки куда добавлять, зависит от колчиества данных, надо тестить где проще и оптимально по скорости и по объему памяти. |
|||
5
Alexey vip
10.07.12
✎
17:27
|
1.
требуется создать огромный отчёт по горизонтали на 3 альбомных листа:) Сейчас данные выдираются из бухрегистра: через параметры виртуальных таблиц отсекаю по конкретным счетам, затем, нужные поля отсекаю ещё через ВЫБОР. В итоге у меня 6 запросов с разными условиями и числовыми значениями. Но у них одинаковые по типу первые две колонки (склад и номенклатурная группа), затем идут три числа. Чтобы более понятно отчет выглядит примерно так: Остатки Покупка ПеревовоВДругуюГруппу Падеж и тд ну а в строках склады и номенк. группы. Вытаскиваю я всё через бухрегистр. Через обычные регистры не вариант, так как очень много дописок и куча связей. Вот и думаю, как же лучше выдрать кучу данных из бухрегистра. 2. На разумеется. |
|||
6
Alexey vip
10.07.12
✎
17:27
|
2.
Да, разумеется. |
|||
7
inspam
10.07.12
✎
17:28
|
ОБЪЕДИНИТЬ?
|
|||
8
Alexey vip
11.07.12
✎
08:50
|
4.
Кароче, как и в 3? 7. Что ОБЪЕДИНИТЬ? Синтаксис помощник выдал только для ячеек табличного документа В Запросе объединить 6 таблиц/запросов? Расскажи мне, как установить связи для них |
|||
9
SanGvin
11.07.12
✎
08:55
|
(8) на закладке объединения\псевдонимы
|
|||
10
Balabass
11.07.12
✎
08:56
|
Создать новую тз, и в нее загрузить существующие.
Правда нужно чтобы названия столбцов были динаковые. |
|||
11
Alexey vip
11.07.12
✎
09:16
|
10.
как загрузить? Просто добавлять столбцы нельзя, в во всех таблицах разное кол-во строк |
|||
12
Balabass
11.07.12
✎
09:17
|
Дай описание таблиц
|
|||
13
Buster007
11.07.12
✎
09:19
|
(8) сгруппировать по первым двум колонкам после объединения вот тебе и связи.
Я так понимаю ты именно по ним и соединяешь. |
|||
14
Alexey vip
11.07.12
✎
11:37
|
12
у всех таблиц первые две колонки типа склады и номенклатурные группы, следующие три числа вот мне нужно сделать одну таблицу, где будут первые 2 колонки типа склады и номенклатурные группы, а следующие 18 колонок просто числа... 13 соединять каждую таблицу с каждой таблицей? |
|||
15
hhhh
11.07.12
✎
12:03
|
(14) самое главное не забудь проиндексировать таблицы, а иначе будет как в (0) "... тысячи на тысячи дают слишком долгие ожидания"
|
|||
16
GROOVY
11.07.12
✎
12:08
|
(14) ТЗ во временные таблицы в запросе загони, проиндексируй по ключевым полям и объединением выбери данные. Потом сгруппируй по ключевым полям.
|
|||
17
Alexey vip
12.07.12
✎
09:49
|
Всем спасибо, в общем воспользовался именно объединением в запросе. Правда пришлось все запросы исковеркать:) Мучался долго, но за неимением других вариантов никуда не деться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |