helpf.pro
Регистрация

Таблица значений в табличное поле

Bell
02.05.2011 16:41Прочитано: 21767
Здравствуйте
Есть данные в таблице занчений ТЗ
Требуется пренести из в табличное поле тблСотрудники

1. таблица значений добавил значения туда

НВС=ТЗ.Добавить();// НВС=НоваяСтрока
НВС.Установить(0,Спр.Ссылка); // Колонка ФИО
НВС.Установить(1,Спр.Ссылка.ДатаПриема); // Колонка ДатаПриема

2 процедура переноса обхожу таблицу значений и пытаюсь загруждать данные в соответствующие колонки

Для Каждого СтрокаТЗ из ТЗ Цикл

НВС=тблСотрудники.Добавить();// НВС=НоваяСтрока
НВС.Флаг=Истина;
// Не заполняются
НВС.Сотрудники=ЭлементыФормы.ТЗ.Колонки.ФИО;
НВС.ДатаПриема=ЭлементыФормы.ТЗ.Колонки.ДатаПриема;

КонецЦикла;
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
02.05.2011 21:10Ответ № 1
Тут несовсем понятно, чнго добивается автор. Идентичен ли состав колонок ТЗ и тблСотрудники? Если да, то зачем два раза делать одно и то же. И что есть в итоге ТабличноеПоле?
Bell
03.05.2011 11:41Ответ № 2
В данном случае состав колонок идентичен я запросом из заполнил все работает(учусь)
А если требуется сначала заполнить таблицу значений (тип) провести какие-то манипулчции с полученными данными, аз затем загрузить в табличную часть документа (поле)по условию какому либо Я пытаюсь понять как действовать и осмыливаю алгоритмы, потому что по отдельности все получается, а обмениваться данными между различными объектами пока не нет.
snfr1c
04.05.2011 11:16Ответ № 3
(0)
работа объекта Табличное поле с данными ТаблицаЗначенией, отличается только тем что после обработки табличного поле необходимо обновить колонки.
Варианты работы:
Код 1C v 8.х
 
// Добавляет в таблицу значений строки из другой таблицы значений и
// в них значения колонок с совпадающими наименованиями.
//
// Параметры:
// ТаблицаИсточник - таблица значений, откуда берутся значения.
// ТаблицаПриемник - таблица значений, куда добавляются строки.
//
Процедура ЗагрузитьВТаблицуЗначений(ТаблицаИсточник, ТаблицаПриемник) Экспорт

Для каждого СтрокаТаблицыИсточника Из ТаблицаИсточник Цикл

СтрокаТаблицыПриемника = ТаблицаПриемник.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемника, СтрокаТаблицыИсточника);

КонецЦикла;

КонецПроцедуры // ЗагрузитьВТаблицуЗначений()

// Проверяет наличие требуемых данных в источнике и Формирует таблицу значений
//
// Параметры
// Источник – ТаблицаЗначений или ТабличнаяЧасть или КоллекцияСтрокДереваЗначений с исходными данными
//
// Реквизиты – структура – Структура реквизитов.
// Ключ - Наименование колонки в источнике
// Значение - Наименование колонки в получаемой ТЗ
// Если значение опущено - приравнивается ключу.
// ПолучитьНомерСтрокиДокумента - булево
// Используется только при выгрузке из табличной части документа.
// В формируемой таблице создает новую колонку "НомерСтрокиДокумента"
// и заполняет её реальными номерами строк
//
// КоллекцияКолонокДереваЗначений - только для коллекции строк дерева значений.
// Возвращаемое значение:
// Таблица значений или Неопределено (если не хватает реквизитов)
//
Функция СформироватьТаблицуЗначений(Источник,Реквизиты=Неопределено,ПолучитьНомерСтрокиДокумента = ложь,ФормироватьОтсутствующиеКолонки=Ложь,КоллекцияКолонокДереваЗначений=Неопределено) экспорт

ЭтоТаблицаЗначений = (ТипЗнч(Источник) = Тип("ТаблицаЗначений"));
ЭтоСтрокиДереваЗначений = (ТипЗнч(Источник) = Тип("КоллекцияСтрокДереваЗначений"));

Если ЭтоСтрокиДереваЗначений и КоллекцияКолонокДереваЗначений = Неопределено тогда
Возврат Неопределено;
Конецесли;

Если НЕ ЗначениеЗаполнено(Реквизиты) тогда

Если ЭтоТаблицаЗначений тогда

НоваяТЗ = Источник.Скопировать();

Возврат НоваяТЗ;

ИначеЕсли ЭтоСтрокиДереваЗначений тогда

Реквизиты = Новый Структура();

Для каждого Колонка из КоллекцияКолонокДереваЗначений цикл
Реквизиты.Вставить(Колонка.Имя);
КонецЦикла;

Иначе

НоваяТЗ = Источник.Выгрузить();
Возврат НоваяТЗ;

КонецЕслИ;

Конецесли;

Если НЕ ЭтоТаблицаЗначений И НЕ ЭтоСтрокиДереваЗначений тогда
РеквизитыТабличнойЧасти = Метаданные.НайтиПоТипу(ТипЗнч(Источник)).Реквизиты;
Конецесли;

НоваяТЗ = Новый ТаблицаЗначений();

Если не ЭтоТаблицаЗначений и ПолучитьНомерСтрокиДокумента тогда
НоваяТЗ.Колонки.Добавить("НомерСтрокиДокумента",ПолучитьОписаниеТиповЧисла(5,0));
КонецЕсли;

Пока НоваяТЗ.Количество()<Источник.Количество() Цикл

Строка = НоваяТЗ.Добавить();

Если не ЭтоТаблицаЗначений и ПолучитьНомерСтрокиДокумента тогда
Строка.НомерСтрокиДокумента = НоваяТЗ.Количество();
КонецЕсли;

КонецЦикла;

Для каждого ТекРеквизит из Реквизиты Цикл

ИскомыйРеквизит = ТекРеквизит.Ключ;
НовыйРеквизит = ?(ТекРеквизит.Значение = Неопределено,ТекРеквизит.Ключ,ТекРеквизит.Значение);

Если ЭтоТаблицаЗначений тогда
ИсточникКолонка = Источник.Колонки.Найти(ИскомыйРеквизит);

ИначеЕсли ЭтоСтрокиДереваЗначений тогда
ИсточникКолонка = КоллекцияКолонокДереваЗначений.Найти(ИскомыйРеквизит);

Иначе
ИсточникКолонка = РеквизитыТабличнойЧасти.Найти(ИскомыйРеквизит);

Конецесли;

Если ИсточникКолонка= неопределено тогда

//недостаточно реквизитов
Если ФормироватьОтсутствующиеКолонки тогда
НоваяТЗ.Колонки.Добавить(НовыйРеквизит);
Иначе
Возврат Неопределено;
КонецЕсли;

Иначе
НоваяТЗ.Колонки.Добавить(НовыйРеквизит, ИсточникКолонка.ТипЗначения);
НоваяТЗ.ЗагрузитьКолонку(Источник.ВыгрузитьКолонку(ИскомыйРеквизит),НовыйРеквизит);

Конецесли;

КонецЦикла;

Возврат НоваяТЗ;

КонецФункции // СформироватьТаблицуЗначений()

Процедура ДополнитьКолонкиТаблицыЗначений(ТаблицаБазовая,ТаблицаДополнений) Экспорт

Для каждого Колонка из ТаблицаДополнений.Колонки Цикл

Если Не(ТаблицаБазовая.Колонки.Найти(Колонка.Имя) = Неопределено) тогда
//Колонка уже есть
Продолжить;
КонецЕсли;

ТаблицаБазовая.Колонки.Добавить(Колонка.Имя,Колонка.ТипЗначения,Колонка.Заголовок,Колонка.Ширина);

КонецЦикла;

КонецПроцедуры
//перенос из одного табличного поля посредством ТаблицыЗначений с каким либо отбором
ПосредникТаблицаЗначений = новый ТаблицаЗначений;
ПараметрыОтбора = Новый Структура("КакойЛибоКритерийОтбора",Истина);
ПосредникТаблицаЗначений = ТабличноеПоле1.Скопировать(ПараметрыОтбора);
ТабличноеПоле2= ПосредникТаблицаЗначений;
ЭтаФорма.ЭлементыФормы. ТабличноеПоле2.СоздатьКолонки();

// ПосредникТаблицаЗначений – ТаблицаЗначений с какими либо данными
ПосредникТаблицаЗначений2.Свернуть("Реквизит1, Реквизит2, Реквизит3"," Реквизит4");
//ТЗОшибкиВКЛиентах = новый ТаблицаЗначений;
ТабличноеПоле3 = ОшибкиВКЛиентах;
ЭтаФорма.ЭлементыФормы. ТабличноеПоле3.СоздатьКолонки();
snfr1c
04.05.2011 11:18Ответ № 4
ОшибкиВКЛиентах =ПосредникТаблицаЗначений2
//извини опечатался
Mokey
04.05.2011 21:09Ответ № 5
Ну да, надо значению табличного поля присвоить ТЗ, а затем применить функцию СоздатьКолонки(). Или, работать непосредственно со значением табличного поля, если колонки уже определены.
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.