Привет, есть вот такие 2 таблицы, мне нужно их объединить, но чтобы если значения во второй идут несколько раз одинаковыми, на этой строке значение должно дублироваться.
Пример:
Таблица 1:
| Серия | Характеристика | Цена|
|-------|-----------------|
| 1 | Характеристика1 | 100
| 2 | Характеристика2 | 200
| 3 | Характеристика3 | 300
Таблица 2
| Серия | Характеристика |Количество|
|-------|-----------------|
| 1 | Характеристика1 | 1
| 1 | Характеристика1 | 1
| 2 | Характеристика2 | 2
Итоговая таблица:
| Серия | Характеристика |Цена| Количество|
|-------|-----------------|
| 1 | Характеристика1 |100 | 1
| 1 | Характеристика1 |100 | 1
| 2 | Характеристика2 |200|2
Как это можно реализовать?
Пример:
Таблица 1:
| Серия | Характеристика | Цена|
|-------|-----------------|
| 1 | Характеристика1 | 100
| 2 | Характеристика2 | 200
| 3 | Характеристика3 | 300
Таблица 2
| Серия | Характеристика |Количество|
|-------|-----------------|
| 1 | Характеристика1 | 1
| 1 | Характеристика1 | 1
| 2 | Характеристика2 | 2
Итоговая таблица:
| Серия | Характеристика |Цена| Количество|
|-------|-----------------|
| 1 | Характеристика1 |100 | 1
| 1 | Характеристика1 |100 | 1
| 2 | Характеристика2 |200|2
Как это можно реализовать?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7)
Что-то типо того написал
Функция ОбъединитьТаблицы(Таблица1, Таблица2)
Таблица2.Колонки.Добавить("Получатель");
Для Каждого Элемент2 Из Таблица2 Цикл
Для Каждого Элемент1 Из Таблица1 Цикл
Если Элемент1["Серия"] = Элемент2["Серия"] И Элемент1["Характеристика"] = Элемент2["Характеристика"] Тогда
Элемент2["Получатель"] = Элемент1["Получатель"];
Прервать; // Прерываем цикл поиска, так как найден нужный элемент
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат Таблица2;
КонецФункции
ПоказатьЧто-то типо того написал
(1) Характеристика 3 куда делась?
Если такие данные на входе, то на выходе что?
Таблица 1:
| Серия | Характеристика | Цена|
|-------|-----------------|
| 1 | Характеристика1 | 110
| 2 | Характеристика1 | 120
| 3 | Характеристика2 | 200
| 4 | Характеристика3 | 300
Таблица 2
| Серия | Характеристика |Количество|
|-------|-----------------|
| 1 | Характеристика1 | 11
| 2 | Характеристика1 | 12
| 3 | Характеристика2 | 21
(12) Лучше запрос и не думать об алгоритме. :-)
(13) Цена у Характеристика3 есть - количества нет.
Если такие данные на входе, то на выходе что?
Таблица 1:
| Серия | Характеристика | Цена|
|-------|-----------------|
| 1 | Характеристика1 | 110
| 2 | Характеристика1 | 120
| 3 | Характеристика2 | 200
| 4 | Характеристика3 | 300
Таблица 2
| Серия | Характеристика |Количество|
|-------|-----------------|
| 1 | Характеристика1 | 11
| 2 | Характеристика1 | 12
| 3 | Характеристика2 | 21
(12) Лучше запрос и не думать об алгоритме. :-)
(13) Цена у Характеристика3 есть - количества нет.
Если предположить, что в первой таблице собраны цены для характеристик, то возможен и такой вариант (сильно упрощенный):
Таб1.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число"));
Для каждого Строка Из Таб2 Цикл
ЗаполнитьЗначенияСвойств(Таб1.Добавить(), Строка);
КонецЦикла;
Таб1.Сортировать("Серия,Характеристика,Цена");
Цена=0;
Хар="";
Для сч=1-Таб1.Количество()По 0 Цикл
Стр=Таб1[-сч];
Если ЗначениеЗаполнено(Стр.Цена) Тогда
Цена=Стр.Цена;
Хар=Стр.Характеристика;
Таб1.Удалить(Стр);
Иначе
Если Стр.Характеристика=Хар Тогда
Стр.Цена=Цена;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Показать// Параметры:
// ТЗ1п - ТаблицаЗначений - в эту таблицу, в начало (а не в конец) будут добавлены строки из ТЗ2в
// ТЗ2в - ТаблицаЗначений - таблица, строками которой требуется дополнить значение из параметра ТЗ1п
//
Процедура ДополнитьТЗ1ИзТЗ2(ТЗ1п, ТЗ2в) Экспорт
Для Индекс = 1 По ТЗ2в.Количество() Цикл
ТЗ1п.Вставить(0);
КонецЦикла;
Для Индекс = 0 По ТЗ2в.Колонки.Количество() - 1 Цикл
ТЗ1п.ЗагрузитьКолонку(ТЗ2в.ВыгрузитьКолонку(Индекс), Индекс);
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот