Тока закончил с одной таблицей как сразу стало ясно что мне для анализа нужна еще одна суть проблемы изложу на примере, и так есть у меня две таблицы значений Список_1 и Список_2 со следующими полями дата, параметр1, параметр2, значение. По сути таблица будет иметь вид:
---------------------Список_1----------------------|-----------------------Список_2---------------------
-ДатаСп_1-|-Пар1_Сп_1-|-Пар2_Сп_1-|-ЗначСп_1-|-ДатаСп_2-|-Пар1_Сп_2-|-Пар2_Сп_2-|-ЗначСп_2-|
01.01.2017-|------АА----|------БА-----|---ЗН_1.1--|02.01.2017-|------АБ----|------БА----|-ЗН_2.1---|
02.01.2017-|------АА----|------БА-----|---ЗН_1.2--|05.01.2017-|------АБ----|------ББ----|-ЗН_2.2---|
03.01.2017-|------АБ----|------ББ-----|---ЗН_1.3--|06.01.2017-|------АВ----|------БВ----|-ЗН_2.3---|
05.01.2017-|------АВ----|------БВ-----|---ЗН_1.4--|
06.01.2017-|------АВ----|------БВ-----|---ЗН_1.5--|
Мне нужно объединить эти две таблицы таким образом что бы при одинаковых параметрах сумировать их значения тоесть результат будет следующим:
------------------СпРезультат------------
-----Пар1----|-----Пар2-----|-Значение------------------| если все значения будут равны 10 то
------АА-------|------БА-------|ЗН_1.1+ЗН_1.2----------|------=20
------АБ-------|------БА-------|ЗН_2.1-------------------|------=10
------АБ-------|------БВ-------|ЗН_1.3+ ЗН_2.2----------|------=20
------АВ-------|------БВ-------|ЗН_1.4+ ЗН_1.5+ЗН_2.3-|------=30
Первым шагом думаю надо Список_1 и Список_2 свернуть по значению относительно параметров вот что вышло
Процедура РезТаб()
Перем Список_1, Список_2, СпРезультат;
Перем Запрос, ТекстЗапроса;
Список_1 = СоздатьОбъект("ТаблицаЗначений");
Список_1.НоваяКолонка("ДатаСп_1", "Дата");
Список_1.НоваяКолонка ("Пар1_Сп_1", "Строка");
Список_1.НоваяКолонка ("Пар2_Сп_1", "Строка");
Список_1.НоваяКолонка ("ЗначСп_1", "Число");
Список_2 = СоздатьОбъект("ТаблицаЗначений");
Список_2.НоваяКолонка("ДатаСп_2", "Дата");
Список_2.НоваяКолонка ("Пар1_Сп_2", "Строка");
Список_2.НоваяКолонка ("Пар2_Сп_2", "Строка");
Список_2.НоваяКолонка ("ЗначСп_2", "Число");
СвСписок_1 = СоздатьОбъект("ТаблицаЗначений");
СвСписок_1.НоваяКолонка ("Пар1", "Строка");
СвСписок_1.НоваяКолонка ("Пар2", "Строка");
СвСписок_1.НоваяКолонка ("Значение", "Число");
СвСписок_2 = СоздатьОбъект("ТаблицаЗначений");
СвСписок_2.НоваяКолонка ("Пар1", "Строка");
СвСписок_2.НоваяКолонка ("Пар2", "Строка");
СвСписок_2.НоваяКолонка ("Значение", "Число");
СпРезультат = СоздатьОбъект("ТаблицаЗначений");
СпРезультат.НоваяКолонка ("Пар1", "Строка");
СпРезультат.НоваяКолонка ("Пар2", "Строка");
СпРезультат.НоваяКолонка ("Значение", "Число");
Список_1.НоваяСтрока(1);
Список_1.ДатаСп_1 = "01.01.2017";
Список_1.Пар1_Сп_1 = "АА";
Список_1.Пар2_Сп_1 = "БА";
Список_1.ЗначСп_1 = 10;
Список_1.НоваяСтрока(2);
Список_1.ДатаСп_1 = "02.01.2017";
Список_1.Пар1_Сп_1 = "АА";
Список_1.Пар2_Сп_1 = "БА";
Список_1.ЗначСп_1 = 10;
Список_1.НоваяСтрока(3);
Список_1.ДатаСп_1 = "03.01.2017";
Список_1.Пар1_Сп_1 = "АБ";
Список_1.Пар2_Сп_1 = "ББ";
Список_1.ЗначСп_1 = 10;
Список_1.НоваяСтрока(4);
Список_1.ДатаСп_1 = "05.01.2017";
Список_1.Пар1_Сп_1 = "АВ";
Список_1.Пар2_Сп_1 = "БВ";
Список_1.ЗначСп_1 = 10;
Список_1.НоваяСтрока(5);
Список_1.ДатаСп_1 = "06.01.2017";
Список_1.Пар1_Сп_1 = "АВ";
Список_1.Пар2_Сп_1 = "БВ";
Список_1.ЗначСп_1 = 10;
НомСп_1 = 5;
Для Н = 1 По НомСп_1 Цикл
Список_1.ПолучитьСтрокуПоНомеру(Н);
//Сообщить(Шаблон("[Список_1.ДатаСп_1] Х [Список_1.Значение_1]"));
КонецЦикла;
Список_2.НоваяСтрока(1);
Список_2.ДатаСп_2 = "02.01.2017";
Список_2.Пар1_Сп_2 = "АБ";
Список_2.Пар2_Сп_2 = "БА";
Список_2.ЗначСп_2 = 10;
Список_2.НоваяСтрока(2);
Список_2.ДатаСп_2 = "05.01.2017";
Список_2.Пар1_Сп_2 = "АБ";
Список_2.Пар2_Сп_2 = "ББ";
Список_2.ЗначСп_2 = 10;
Список_2.НоваяСтрока(3);
Список_2.ДатаСп_2 = "06.01.2017";
Список_2.Пар1_Сп_2 = "АВ";
Список_2.Пар2_Сп_2 = "БВ";
Список_2.ЗначСп_2 = 10;
НомСп_2 = 3;
Для Н = 1 По НомСп_2 Цикл
Список_2.ПолучитьСтрокуПоНомеру(Н);
//Сообщить(Шаблон("[Список_2.ДатаСп_2] Х [Список_2.Значение_2]"));
КонецЦикла;
Список_1.ВыбратьСтроки();
Список_1.Свернуть("Пар1_Сп_1, Пар2_Сп_1","ЗначСп_1");
Список_1.ВыбратьСтроки();
Пока Список_1.ПолучитьСтроку() = 1 Цикл
СвСписок_1.НоваяСтрока();
СвСписок_1.Пар1 = Список_1.Пар1_Сп_1;
СвСписок_1.Пар2 = Список_1.Пар2_Сп_1;
СвСписок_1.Значение = Список_1.ЗначСп_1;
Сообщить(Шаблон("[СвСписок_1.Пар1] Х [СвСписок_1.Пар2] Х [СвСписок_1.Значение]"));
КонецЦикла;
Список_2.ВыбратьСтроки();
Список_2.Свернуть("Пар1_Сп_2, Пар2_Сп_2","ЗначСп_2");
Список_2.ВыбратьСтроки();
Пока Список_2.ПолучитьСтроку() = 1 Цикл
СвСписок_2.НоваяСтрока();
СвСписок_2.Пар1 = Список_2.Пар1_Сп_2;
СвСписок_2.Пар2 = Список_2.Пар2_Сп_2;
СвСписок_2.Значение = Список_1.ЗначСп_1;
Сообщить(Шаблон("[СвСписок_2.Пар1] Х [СвСписок_2.Пар2] Х [СвСписок_2.Значение]"));
КонецЦикла;
А вот вторым шагом при объединении низнаю как лутше поступить циклом перепроверять одни данные с другими на примере это просто а в реальности там куча значений и параметров что в одной таблице так и в другой по этому думаю лутше зделать объдинение через запрос на основании полученых (свернутых таблиц значений)
.
И вот тут то я заплутался подскажите что не так с етим запросом.
Запрос = СоздатьОбъект("ВЫБРАТЬ");
ТекстЗапроса =
"//{{ЗАПРОС(ВЫБРАТЬ)
|ВЫБРАТЬ
| СвСписок_1.Пар1,
| СвСписок_1.Пар2,
| СвСписок_1.Значение,
|ПОМЕСТИТЬ СвСписок_1
|ИЗ
| &СвСписок_1 КАК СвСписок_1
|;
|ВЫБРАТЬ
| СвСписок_2.Пар1,
| СвСписок_2.Пар2,
| СвСписок_2.Значение,
|ПОМЕСТИТЬ СвСписок_2
|ИЗ
| &СвСписок_2 КАК СвСписок_2
|;
|ВЫБРАТЬ
| СвСписок_1.Пар1,
| СвСписок_1.Пар2,
| СвСписок_1.Значение,
| СвСписок_2.Пар1,
| СвСписок_2.Пар2,
| СвСписок_2.Значение
|ИЗ
| СвСписок_1 КАК СпРезультат
| ПОЛНОЕ СОЕДИНЕНИЕ СвСписок_2 КАК СвСписок_2
| ПО СвСписок_1.Пар1 = СвСписок_2.Пар1, СвСписок_1.Пар2 = СвСписок_2.Пар2";
|"//}}ЗАПРОС
;
Запрос.УстановитьПараметр("СпРезультат",Параметры.СпРезультат);
Буду благодарен за наглядную помощ.