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; КонецЦикла; КонецЦикла; | |
| Интернет-форум Краснодарского края и Краснодара |