![]() |
|
Макет, получить значение области | ☑ | ||
---|---|---|---|---|
0
lg2marvel
15.10.18
✎
13:48
|
Добрый день.
Есть макет: https://dropmefiles.com/ddQEr В коде вывожу данные: Таб = ЭтаФорма.ЭлементыФормы.ТабличныйДокумент;//Новый ТабличныйДокумент; Таб.Очистить(); Макет = ПолучитьМакет("Макет"); Шапка = Макет.ПолучитьОбласть("Шапка"); Таб.Вывести(Шапка); ШапкаТЧ = Макет.ПолучитьОбласть("ШапкаТЧ|Основное"); Таб.Вывести(ШапкаТЧ); ШапкаУслуги = Макет.ПолучитьОбласть("ШапкаТЧ|КолонкаУслуги"); //вывожу динамическую часть макета, а именно шапки Для Каждого стртзУслугиСтатьи Из тзУслугиСтатьи Цикл ШапкаУслуги.Параметры.Заголовок = стртзУслугиСтатьи.СтатьяЗатрат; Таб.Присоединить(ШапкаУслуги); КонецЦикла; Строка = Макет.ПолучитьОбласть("Строка|Основное"); СтрокаУслуги = Макет.ПолучитьОбласть("Строка|КолонкаУслуги"); // Для Каждого стр из тзЗапросСклады Цикл //Выводим в ТЧ результат запроса Склады Строка.Параметры.Склад = стр.Склад; //вывожу данные в Строка.Параметры.бла-бла-бла Таб.Вывести(Строка); //наступает время выводить динамическую часть строки. По идее я запускаю два цикла с перебором доступных вариантов (как при выводе шапки) и с условием присваиваю параметр и присоединяю секцию СтрокаУслуги Вопрос вот в чем, не могу получить значение области шапки, да и вообще любой области. Пробовал так: Область = Макет.Область(2,3); и так: Область = Макет.Область("R2C3"); и выделением области: Область = Макет.Область("R2C3:R3C3"); И где-то повстречал такой вариант: Область = Макет.ПолучитьОбласть("R2C3"); Саму область взял для примера, там точно есть запись. Затем проверяю Если Область.ЗначениеЗаполнено Тогда Сообщить(Область.Значение); КонецЕсли; Но отладчик все время твердит что значение не доступно. Или же я все-таки неправильно построил вывод данных и нужно выводить динамические столбцы во вложеном цикле? (пробовал, шапка динамического столбца съезжает вниз) |
|||
1
lg2marvel
15.10.18
✎
13:55
|
Пробовал так:
Для Каждого стртзУслугиСтатьи Из тзУслугиСтатьи Цикл ШапкаУслуги.Параметры.Заголовок = стртзУслугиСтатьи.СтатьяЗатрат; Таб.Присоединить(ШапкаУслуги); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ТорговыйОбъект", стр.Склад.ТорговыйОбъект); ПараметрыОтбора.Вставить("СтатьяЗатрат", стртзУслугиСтатьи.СтатьяЗатрат); тзУслугиСтатьиТО = тзУслуги.Скопировать(ПараметрыОтбора); //ОткрытьЗначение(тзУслугиСтатьиТО); НакоплениеУслуг = 0; Для Каждого стр1 Из тзУслугиСтатьиТО Цикл НакоплениеУслуг = НакоплениеУслуг + стр1.СуммаБезНДС; КонецЦикла; СтрокаУслуги.Параметры.Услуга = НакоплениеУслуг;Сообщить(Строка(стртзУслугиСтатьи.СтатьяЗатрат)+Строка(НакоплениеУслуг)); КонецЦикла; Таб.Вывести(Строка); Таб.Присоединить(СтрокаУслуги); Но все пишет в первую ячейку (ну да, так как присоединение вне цикла) |
|||
2
lg2marvel
15.10.18
✎
13:57
|
Вот такой вариант выводит данные, но выглядит мягко говоря неочень:
Таб.Вывести(Строка); Для Каждого стртзУслугиСтатьи Из тзУслугиСтатьи Цикл ШапкаУслуги.Параметры.Заголовок = стртзУслугиСтатьи.СтатьяЗатрат; Таб.Присоединить(ШапкаУслуги); //КонецЦикла; //Для Каждого стртзУслугиСтатьи Из тзУслугиСтатьи Цикл // Область = Макет.Область(2,3); ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ТорговыйОбъект", стр.Склад.ТорговыйОбъект); ПараметрыОтбора.Вставить("СтатьяЗатрат", стртзУслугиСтатьи.СтатьяЗатрат); тзУслугиСтатьиТО = тзУслуги.Скопировать(ПараметрыОтбора); //ОткрытьЗначение(тзУслугиСтатьиТО); НакоплениеУслуг = 0; Для Каждого стр1 Из тзУслугиСтатьиТО Цикл НакоплениеУслуг = НакоплениеУслуг + стр1.СуммаБезНДС; КонецЦикла; СтрокаУслуги.Параметры.Услуга = НакоплениеУслуг;Сообщить(Строка(стртзУслугиСтатьи.СтатьяЗатрат)+Строка(НакоплениеУслуг)); Таб.Присоединить(СтрокаУслуги); КонецЦикла; Шапка опускается на уровень строки и выводит попеременно шапку и результат |
|||
3
lg2marvel
15.10.18
✎
14:09
|
Пардон, получилось
|
|||
4
lg2marvel
15.10.18
✎
14:10
|
Шапку присоединил до внешнего цикла, и после вывода Строки внутри цикла:
Для Каждого стртзУслугиСтатьи Из тзУслугиСтатьи Цикл ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("ТорговыйОбъект", стр.Склад.ТорговыйОбъект); ПараметрыОтбора.Вставить("СтатьяЗатрат", стртзУслугиСтатьи.СтатьяЗатрат); тзУслугиСтатьиТО = тзУслуги.Скопировать(ПараметрыОтбора); //ОткрытьЗначение(тзУслугиСтатьиТО); НакоплениеУслуг = 0; Для Каждого стр1 Из тзУслугиСтатьиТО Цикл НакоплениеУслуг = НакоплениеУслуг + стр1.СуммаБезНДС; КонецЦикла; СтрокаУслуги.Параметры.Услуга = НакоплениеУслуг;Сообщить(Строка(стртзУслугиСтатьи.СтатьяЗатрат)+Строка(НакоплениеУслуг)); Таб.Присоединить(СтрокаУслуги); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |