К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Загрузка таблицы значений в колонку таблицы значений

0 - 14.08.2019 - 07:01
Дана таблица значения. Есть фиксированное количество и есть изменяемое число колонок, в зависимости от размера списка значений.
Например Имеется таблица Значений ТЗ.
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Клиент", "Справочник.Контрагенты");
ТЗ.НоваяКолонка("Адрес", "Строка", 60);

Есть список значений размером 5.

Как прописать такую структуру

ТЗ.Поле1=СоздатьОбъект("ТаблицаЗначений"); ТЗ.Поле1.Загрузить(СтруктураТаблицы);

ТЗ.Поле2=СоздатьОбъект("ТаблицаЗначений"); ТЗ.Поле2.Загрузить(СтруктураТаблицы);

ТЗ.Поле3=СоздатьОбъект("ТаблицаЗначений"); ТЗ.Поле3.Загрузить(СтруктураТаблицы);

ТЗ.Поле4=СоздатьОбъект("ТаблицаЗначений"); ТЗ.Поле4.Загрузить(СтруктураТаблицы);

ТЗ.Поле5=СоздатьОбъект("ТаблицаЗначений"); ТЗ.Поле5.Загрузить(СтруктураТаблицы);

хочется чтобы все делалось в цикле.
как через Шаблон это сделать.

чтобы потом можно было также и вносить строки в эти таблицы



1 - 14.08.2019 - 09:31
Для ххх=1 По СЗ.РазмерСписка() Цикл
ТЗ.НоваяКолонка("Поле"+ххх);
КонецЦикла;
2 - 14.08.2019 - 09:36
Ну а дальше добавляешь строки в ТЗ и присваиваешь значения по каждой колонке.
ТЗ.НоваяСтрока();
Для ххх=1 По СЗ.РазмерСписка() Цикл
ТЗ.УстановитьЗначение(ТЗ.КоличествоСтрок(),"Поле"+ ххх,КакаяТоТаблицаЗначений);
КонецЦикла;
3 - 14.08.2019 - 09:47
А как потом в такую таблицу внести строки с данными.
Типа ТЗ.Поле1.Новая Строка();
ТЗ.Сумма = 2000;

Как их заполнять в зависимости от размера списка
4 - 14.08.2019 - 09:53
(0)
зачем все это?
5 - 14.08.2019 - 10:07
Так нужно. Каждая колонка это есть документы с суммы по ним. Так была задача поставлена...

Теперь как можно внести строку в такую таблицу и получить количество строк по данной таблице
6 - 14.08.2019 - 10:08
(3) Формируете/заполняете таблицы значений, а потом присваиваете значение для каждого поля (колонки ТЗ) в новой строке ТЗ (в (2) написал как).
По-любому как предлагаете в (3) не получится.
Надо будет сначала получить значение из нужной строки, колонки, а потом обработать это значение и установить обратно.
Т.е.
ОбрабатываемаяТЗ = ТЗ.ПолучитьЗначение(НомерСтроки,Поле1);
ОбрабатываемаяТЗ.НоваяСтрока();
ОбрабатываемаяТЗ.Сумма=2000;
ТЗ.УстановитьЗначение(НомерСтроки,Поле1,Обрабатыва емаяТЗ);
7 - 14.08.2019 - 10:17
(5) Правильно я понял, что если с Контрагентом А было 50 документов, Вам надо создать 50 колонок в этой ТЗ?
И в каждом значении поля собрать инфу из табличной части этих документов?
8 - 14.08.2019 - 10:25
Спасибо
9 - 15.08.2019 - 06:04
Получаются три дополнительные колонки

Но почему-то

При таком раскладе
Найден = СписСкл.НайтиЗначение(Склад);

Переменная Найден меняется как и положено, но вот здесь
получается интересное...
ОбрабатываемаяТЗ = ТЗ.ПолучитьЗначение(Стр,"Поле"+СокрЛП(Строка(Найде н)));

ОбрабатываемаяТЗ.НоваяСтрока();
ОбрабатываемаяТЗ.Отпуски=Докум.ТекущийДокумент();
ОбрабатываемаяТЗ.Сумма=ТзДокумента.Сумма;
ОбрабатываемаяТЗ.ТорговыйАгент=ВыбАгент;
ТЗ.УстановитьЗначение(Стр,"Поле"+СокрЛП(Строка(Най ден)), ОбрабатываемаяТЗ);

заполняются сразу все три колонки...
10 - 15.08.2019 - 09:51
Какие значения принимает переменная "Найден"?
Наименование склада может состоять из нескольких слов, а вот имя колонки ТЗ может быть только однословным.
Во-вторых, как изначально присваивал значение полям ТЗ?
Если одну и ту же таблицу значений, то у тебя во всех полях сводной ТЗ ссылка на одно и то же. Т.е. надо создавать новую ТЗ для каждого поля. С другой стороны, зачем это делать заранее? Получай таблицу значения из документа и присваивай ее полю сводной ТЗ.
Вот как-то так:

ТЗ.НоваяКолонка("Контрагент","Справочник.Контраген ты");
Пока Запрос.Группировка(1) = 1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Контрагент = Запрос.Контрагент;
ххх=1;
Пока Запрос.Группировка(2) = 1 Цикл
Если ТЗ.КоличествоКолонок()-1<ххх Тогда
ТЗ.НоваяКолонка("Докум"+ххх);
КонецЕсли;
ТЗ_Врем = СоздатьОбъект("ТаблицаЗначений");
Запрос.РасходнаяНакладная.ВыгрузитьТабличнуюЧасть( ТЗ_Врем);
ТЗ.УстановитьЗначение(ТЗ.КоличествоСтрок(),"Докум" +ххх,ТЗ_Врем);
ххх=ххх+1;
КонецЦикла;
КонецЦикла;


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены