|
Колонки таблицы значений | ☑ | ||
---|---|---|---|---|
0
ВежливаяТварь
20.02.12
✎
18:10
|
Добрый день. Столкнулся с весьма специфической проблемой. Я вытягиваю из запроса информацию о продажах за определённый период. Выглядит так:
наименование | склад |сумма раз | основной |сумма раз раз | херсон |сумма два раз | Одесса |сумма три теперь мне нужно преобразовать эту таблицу в таблицу типа Наименование |основной | херсон |одесса раз |сумма раз|сумма два |сумма три Как по содержанию колонки склад в первой ТЗ определить в какую колонку нужно заносить сумму во второй ТЗ? |
|||
1
Нуф-Нуф
20.02.12
✎
18:12
|
через СКД?
|
|||
2
Mort
20.02.12
✎
18:13
|
(1) Скд горизонтальные группировки не выводит в ТЗ.
|
|||
3
Шапокляк
20.02.12
✎
18:14
|
(0)Выбираете различные склады и заносите в список.
Вычисляете количество элементов в получившемся списке. формируете таблицу значений с колонками Склад1, склад2....Складn - по числу складов. шебуршите свою первую таблицу. По складу из строки определяете ее положение в списке. Вносите в соответствующую колонку второй таблицы. |
|||
4
ВежливаяТварь
20.02.12
✎
18:15
|
(3)"Вносите в соответствующую колонку второй таблицы." вот как раз в этом и проблема
|
|||
5
Шапокляк
20.02.12
✎
18:27
|
(4) В чем проблема-то?
Алгоритм: 1. Копируем первую таблицу и сворачиваем ее по складам (если возможны в ней повторы по складам). 2. Создаем список складов.Перебираем строки таблицы из п.1. и вносим в список склады. Условно говоря, на выходе список с элементами основной, Херсон, Одесса, Урюпинск и т.д. 3. Создаем таблицу значений, Назовем ее ТЗ. Далее: ТЗ.Колонки.Добавить("Номенклатура"); Сч=СписокСкладов.Количество(); Для инд=1 ПО Сч Цикл Эл=СписокСкладов.Получить(инд-1); ИмяКолонки="Склад"+Строка(инд); ТЗ.Колонки.Добавить(ИмяКолонки); КонецЦикла; 4. Для Каждого Стр Из ПерваяТаблица Цикл СтрТЗ=ТЗ.Добавить(); СтрТЗ.Номенклатура=Стр.Номенклатура; Для инд=1 По Сч Цикл Эл=СписокСкладов.Получить(инд-1); Если Эл.Значение=Стр.Склад Тогда СтрТЗ[инд]=Стр.Сумма; Иначе СтрТЗ[инд]=0; КонецЕсли; КонецЦикла; например, так |
|||
6
Mort
20.02.12
✎
18:31
|
Имхо цывильнее привязать колонки к складам по соответствию.
|
|||
7
fisher
20.02.12
✎
18:37
|
(4)
ТЗ1.Сортировать("Наименование,Склад", Новый СравнениеЗначений); текНаименование = Неопределено; Для Каждого СтрокаТЗ1 Из ТЗ1 Цикл Если текНаименование <> СтрокаТЗ1.Наименование Тогда СтрокаТЗ2 = ТЗ2.Добавить(); СтрокаТЗ2.Наименование = СтрокаТЗ1.Наименование; текНаименование = СтрокаТЗ1.Наименование; КонецЕсли; СтрокаТЗ2[СоответствиеИндексовКолонок[СтрокаТЗ1.Склад]] = СтрокаТЗ1.Сумма; КонецЦикла; |
|||
8
kosts
20.02.12
✎
19:02
|
(0) Запрос сам все посчитает:
|
|||
9
ВежливаяТварь
20.02.12
✎
19:23
|
Приблизительно понял. Огромное спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |