(0)
работа объекта Табличное поле с данными ТаблицаЗначенией, отличается только тем что после обработки табличного поле необходимо обновить колонки.
Варианты работы:
Код 1C v 8.х
// Добавляет в таблицу значений строки из другой таблицы значений и
// в них значения колонок с совпадающими наименованиями.
//
// Параметры:
// ТаблицаИсточник - таблица значений, откуда берутся значения.
// ТаблицаПриемник - таблица значений, куда добавляются строки.
//
Процедура ЗагрузитьВТаблицуЗначений(ТаблицаИсточник, ТаблицаПриемник) Экспорт
Для каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл
СтрокаТаблицыПриемника = ТаблицаПриемник.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника);
КонецЦикла;
КонецПроцедуры // ЗагрузитьВТаблицуЗначений()
// Проверяет наличие требуемых данных в источнике и Формирует таблицу значений
//
// Параметры
// Источник – ТаблицаЗначений или ТабличнаяЧасть или КоллекцияСтрокДереваЗначений с исходными данными
//
// Реквизиты – структура – Структура реквизитов.
// Ключ - Наименование колонки в источнике
// Значение - Наименование колонки в получаемой ТЗ
// Если значение опущено - приравнивается ключу.
// ПолучитьНомерСтрокиДокумента - булево
// Используется только при выгрузке из табличной части документа.
// В формируемой таблице создает новую колонку "НомерСтрокиДокумента"
// и заполняет её реальными номерами строк
//
// КоллекцияКолонокДереваЗначений - только для коллекции строк дерева значений.
// Возвращаемое значение:
// Таблица значений или Неопределено (если не хватает реквизитов)
//
Функция СформироватьТаблицуЗначений(Источник,Реквизиты=Неопределено,ПолучитьНомерСтрокиДокумента = ложь,ФормироватьОтсутствующиеКолонки=Ложь,КоллекцияКолонокДереваЗначений=Неопределено) экспорт
ЭтоТаблицаЗначений = (ТипЗнч(Источник) = Тип("ТаблицаЗначений"));
ЭтоСтрокиДереваЗначений = (ТипЗнч(Источник) = Тип("КоллекцияСтрокДереваЗначений"));
Если ЭтоСтрокиДереваЗначений и КоллекцияКолонокДереваЗначений = Неопределено тогда
Возврат Неопределено;
Конецесли;
Если НЕ ЗначениеЗаполнено(Реквизиты) тогда
Если ЭтоТаблицаЗначений тогда
НоваяТЗ = Источник.Скопировать();
Возврат НоваяТЗ;
ИначеЕсли ЭтоСтрокиДереваЗначений тогда
Реквизиты = Новый Структура();
Для каждого Колонка из КоллекцияКолонокДереваЗначений цикл
Реквизиты.Вставить(Колонка.Имя);
КонецЦикла;
Иначе
НоваяТЗ = Источник.Выгрузить();
Возврат НоваяТЗ;
КонецЕслИ;
Конецесли;
Если НЕ ЭтоТаблицаЗначений И НЕ ЭтоСтрокиДереваЗначений тогда
РеквизитыТабличнойЧасти = Метаданные.НайтиПоТипу(ТипЗнч(Источник)).Реквизиты;
Конецесли;
НоваяТЗ = Новый ТаблицаЗначений();
Если не ЭтоТаблицаЗначений и ПолучитьНомерСтрокиДокумента тогда
НоваяТЗ.Колонки.Добавить("НомерСтрокиДокумента",ПолучитьОписаниеТиповЧисла(5,0));
КонецЕсли;
Пока НоваяТЗ.Количество()<Источник.Количество() Цикл
Строка = НоваяТЗ.Добавить();
Если не ЭтоТаблицаЗначений и ПолучитьНомерСтрокиДокумента тогда
Строка.НомерСтрокиДокумента = НоваяТЗ.Количество();
КонецЕсли;
КонецЦикла;
Для каждого ТекРеквизит из Реквизиты Цикл
ИскомыйРеквизит = ТекРеквизит.Ключ;
НовыйРеквизит = ?(ТекРеквизит.Значение = Неопределено,ТекРеквизит.Ключ,ТекРеквизит.Значение);
Если ЭтоТаблицаЗначений тогда
ИсточникКолонка = Источник.Колонки.Найти(ИскомыйРеквизит);
ИначеЕсли ЭтоСтрокиДереваЗначений тогда
ИсточникКолонка = КоллекцияКолонокДереваЗначений.Найти(ИскомыйРеквизит);
Иначе
ИсточникКолонка = РеквизитыТабличнойЧасти.Найти(ИскомыйРеквизит);
Конецесли;
Если ИсточникКолонка= неопределено тогда
//недостаточно реквизитов
Если ФормироватьОтсутствующиеКолонки тогда
НоваяТЗ.Колонки.Добавить(НовыйРеквизит);
Иначе
Возврат Неопределено;
КонецЕсли;
Иначе
НоваяТЗ.Колонки.Добавить(НовыйРеквизит, ИсточникКолонка.ТипЗначения);
НоваяТЗ.ЗагрузитьКолонку(Источник.ВыгрузитьКолонку(ИскомыйРеквизит),НовыйРеквизит);
Конецесли;
КонецЦикла;
Возврат НоваяТЗ;
КонецФункции // СформироватьТаблицуЗначений()
Процедура ДополнитьКолонкиТаблицыЗначений(ТаблицаБазовая,ТаблицаДополнений) Экспорт
Для каждого Колонка из ТаблицаДополнений.Колонки Цикл
Если Не(ТаблицаБазовая.Колонки.Найти(Колонка.Имя) = Неопределено) тогда
//Колонка уже есть
Продолжить;
КонецЕсли;
ТаблицаБазовая.Колонки.Добавить(Колонка.Имя,Колонка.ТипЗначения,Колонка.Заголовок,Колонка.Ширина);
КонецЦикла;
КонецПроцедуры
//перенос из одного табличного поля посредством ТаблицыЗначений с каким либо отбором
ПосредникТаблицаЗначений = новый ТаблицаЗначений;
ПараметрыОтбора = Новый Структура("КакойЛибоКритерийОтбора",Истина);
ПосредникТаблицаЗначений = ТабличноеПоле1.Скопировать(ПараметрыОтбора);
ТабличноеПоле2= ПосредникТаблицаЗначений;
ЭтаФорма.ЭлементыФормы. ТабличноеПоле2.СоздатьКолонки();
// ПосредникТаблицаЗначений – ТаблицаЗначений с какими либо данными
ПосредникТаблицаЗначений2.Свернуть("Реквизит1, Реквизит2, Реквизит3"," Реквизит4");
//ТЗОшибкиВКЛиентах = новый ТаблицаЗначений;
ТабличноеПоле3 = ОшибкиВКЛиентах;
ЭтаФорма.ЭлементыФормы. ТабличноеПоле3.СоздатьКолонки();