Объединение двух таблиц значений в одну

Имеется две таблицы значений — «ПерваяТЗ» и «ВтораяТЗ». Они имеют следующий вид:

ПерваяТЗ:

Номенклатура        Цена
Торшер 1000
Утюг 750
Пылесос 5000

ВтораяТЗ:

Номенклатура        Цена
Торшер 1000
Мясорубка 3000
Микроволновая печь 5000

Их необходимо объединить так, чтобы не было дублирующихся строк.

Для объединения таблиц значений в 1С можно использовать функцию, возвращающую получающую на входе две таблицы значений и возвращающую результирующую таблицу значений:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// КолонкаПоиска - строка, имя колонки, по которой будет проходить поиск.
// Для данного примера = "Номенклатура".
Функция ОбъединитьТаблицы(ПерваяТЗ, ВтораяТЗ, КолонкаПоиска)
 
	ИтоговаяТЗ = Новый ТаблицаЗначений;
	ИтоговаяТЗ = ПерваяТЗ.Скопировать();
	Для Каждого Эл из ПерваяТЗ цикл
		//Проверяем значение в таблице ИтоговаяТЗ, 
		//если такого значения нет, то продолжаем
		Если ИтоговаяТЗ.Найти(Эл[КолонкаПоиска],КолонкаПоиска) = Неопределено Тогда
			//Проверяем значение в таблице ВтораяТЗ, 
			//если такого значения нет, то добавляем
			Если ВтораяТЗ.Найти(Эл[КолонкаПоиска],КолонкаПоиска) = Неопределено Тогда
				НоваяСтрока = ИтоговаяТЗ.Добавить(); 
				Для Каждого Кол Из ИтоговаяТЗ.Колонки Цикл
					НоваяСтрока[Кол.Имя] = Эл[Кол.Имя];    
				КонецЦикла;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;    
	Для Каждого Эл из ВтораяТЗ цикл
		//Проверяем значение в таблице ИтоговаяТЗ, 
		//если такого значения нет, то продолжаем
		Если ИтоговаяТЗ.Найти(Эл[КолонкаПоиска],КолонкаПоиска) = Неопределено Тогда
			//Проверяем значение в таблице ПерваяТЗ, 
			//если такого значения нет, то добавляем
			Если ПерваяТЗ.Найти(Эл[КолонкаПоиска],КолонкаПоиска) = Неопределено Тогда
				НоваяСтрока1 = ИтоговаяТЗ.Добавить(); 
				Для Каждого Кол Из ИтоговаяТЗ.Колонки Цикл
					НоваяСтрока1[Кол.Имя] = Эл[Кол.Имя];    
				КонецЦикла;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	Возврат ИтоговаяТЗ;
 
КонецФункции

Состав таблицы «ИтоговаяТЗ»:

Номенклатура        Цена
Торшер 1000
Мясорубка 3000
Микроволновая печь 5000
Утюг 750
Пылесос 5000

Вот таким нехитрым способом реализуется объединение таблиц значений в 1С.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

WP-SpamFree by Pole Position Marketing