Как создать такой Макет (отчет), табличная часть?
Как создать такой Макет (отчет), табличная часть?
Тест 4 - одна строка
А тест 1, тест 2, тест 3 и т.д. - это данные из табличной части документа. (может быть две строки, а может 10 )
Тест 4 - одна строка
А тест 1, тест 2, тест 3 и т.д. - это данные из табличной части документа. (может быть две строки, а может 10 )
Прикрепленные файлы:
По теме из базы знаний
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- 1с8.2-8.3.Вывод на экран данных запроса с переданными Параметрами из Документа! 8 различных вариантов:от Сообщений, Таблицы и Отчетов до СКД без объекта-отчета
- СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Печатные формы, отчеты, HTML,JS в новом релизе SimpleUI. Август 2022.
Найденные решения
(3)
Ели у вас группировка по Тест1 и Тест3, в таком случае, у вас первая выборка должна быть с обходом по группировкам:
НачальнаяСтрока = 1;
ВыведенныхСтрок = 0;
Пока Выборка.Следующий() Цикл
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть);
ВыведенныхСтрок = ВыведенныхСтрок + 1;
КонецЦикла;
ТабДок.Область(НачальнаяСтрока, 2).Текст = "тест4";
ТабДок.Область(НачальнаяСтрока, 2, НачальнаяСтрока + ВыведенныхСтрок - 1, 2).Объединить();
ПоказатьЕли у вас группировка по Тест1 и Тест3, в таком случае, у вас первая выборка должна быть с обходом по группировкам:
ВыборкаПоГруппировкам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
НачальнаяСтрока = 1;
ВыведенныхСтрок = 0;
Пока ВыборкаПоГруппировкам.Следующий() Цикл
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть);
ВыборкаДетальныеЗаписи = ВыборкаПоГруппировкам.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть, 1);
ВыведенныхСтрок = ВыведенныхСтрок + 1;
КонецЦикла;
ВыведенныхСтрок = ВыведенныхСтрок + 1;
ТабДок.Область(НачальнаяСтрока, 2).Текст = "тест4";
ТабДок.Область(НачальнаяСтрока, 2, НачальнаяСтрока + ВыведенныхСтрок - 1, 2).Объединить();
НачальнаяСтрока = НачальнаяСтрока + ВыведенныхСтрок;
КонецЦикла;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)заведите счетчики для начальных строк вывода, выведенных строк в правой колонке, в левой колонке просто выполняйте объединение с начальной строки по количеству выведенных.
Другими словами:
НачальнаяСтрока = 1;
ВыведенныхСтрок = 3;
ТабДок.Область(НачальнаяСтрока, 2, НачальнаяСтрока + ВыведенныхСтрок - 1, 2).Объединить();
Следующая начальная строка будет: НачальнаяСтрока + ВыведенныхСтрок;
Другими словами:
НачальнаяСтрока = 1;
ВыведенныхСтрок = 3;
ТабДок.Область(НачальнаяСтрока, 2, НачальнаяСтрока + ВыведенныхСтрок - 1, 2).Объединить();
Следующая начальная строка будет: НачальнаяСтрока + ВыведенныхСтрок;
(2)
Не понимаю как сделать. (прикрепил файл в теме)
Не понимаю как сделать. (прикрепил файл в теме)
&НаСервере
Функция ВывестиОтчетНаСервере(ТабДок)
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТабЧасть = Макет.ПолучитьОбласть("ТабЧасть");
// Вывести справа в поле: "Правая колонка"
Строка2 = "Правая колонка";
ТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(ОбластьШапка);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ""тест1"" КАК Строка1
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""тест3""
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""тест2""";
Выборка = Запрос.Выполнить().Выбрать();
НачальнаяСтрока = 0;
ВыведенныхСтрок = 0;
Пока Выборка.Следующий() Цикл
Если НачальнаяСтрока =0 Тогда
НачальнаяСтрока = НачальнаяСтрока + 1;
КонецЕсли;
ВыведенныхСтрок = ВыведенныхСтрок + 1;
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть);
КонецЦикла;
Возврат ТабДок;
КонецФункции
Показать
(3)
Ели у вас группировка по Тест1 и Тест3, в таком случае, у вас первая выборка должна быть с обходом по группировкам:
НачальнаяСтрока = 1;
ВыведенныхСтрок = 0;
Пока Выборка.Следующий() Цикл
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть);
ВыведенныхСтрок = ВыведенныхСтрок + 1;
КонецЦикла;
ТабДок.Область(НачальнаяСтрока, 2).Текст = "тест4";
ТабДок.Область(НачальнаяСтрока, 2, НачальнаяСтрока + ВыведенныхСтрок - 1, 2).Объединить();
ПоказатьЕли у вас группировка по Тест1 и Тест3, в таком случае, у вас первая выборка должна быть с обходом по группировкам:
ВыборкаПоГруппировкам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
НачальнаяСтрока = 1;
ВыведенныхСтрок = 0;
Пока ВыборкаПоГруппировкам.Следующий() Цикл
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть);
ВыборкаДетальныеЗаписи = ВыборкаПоГруппировкам.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьТабЧасть.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьТабЧасть, 1);
ВыведенныхСтрок = ВыведенныхСтрок + 1;
КонецЦикла;
ВыведенныхСтрок = ВыведенныхСтрок + 1;
ТабДок.Область(НачальнаяСтрока, 2).Текст = "тест4";
ТабДок.Область(НачальнаяСтрока, 2, НачальнаяСтрока + ВыведенныхСтрок - 1, 2).Объединить();
НачальнаяСтрока = НачальнаяСтрока + ВыведенныхСтрок;
КонецЦикла;
Показать
(4) Спасибо!
Пока хелп не прочитал, не получалось. (сейчас сделаю рабочий отчет и напишу)
А если у меня сверху ещё одна табличная часть (где всё просто). Мне нужно высчитывать номер строки от туда. Правильно?
Пока хелп не прочитал, не получалось. (сейчас сделаю рабочий отчет и напишу)
Область(<НомерПервойСтроки>, <НомерПервойКолонки>, <НомерПоследнейСтроки>, <НомерПоследнейКолонки>)
А если у меня сверху ещё одна табличная часть (где всё просто). Мне нужно высчитывать номер строки от туда. Правильно?
(6)
У меня поле широкое, куда я добавляю.
Но заполняется только первый столбец, который растягивается по строкам.
Как сделать, чтобы текст по всей ширине заполнялся. (ошибка в строке - Объединить.)
У меня поле широкое, куда я добавляю.
ТабДок.Область("R27C16:R27C24").Текст = "Очень длинный текст, перенос строки в макете установил.";
ТабДок.Область(27, 16, 29, 16).Объединить();
Но заполняется только первый столбец, который растягивается по строкам.
Как сделать, чтобы текст по всей ширине заполнялся. (ошибка в строке - Объединить.)
(7)Должно работать так:
Если у вас несколько колонок, указывайте номер последней колонки равный НомерНачальнойКолонки + КоличествоКолонокДляОбъединения
ТабДок.Область(27, 16).Текст = "Очень длинный текст. Перенос можно не ставить, т.к. после объединения вроде как перенос сбрасывается в дефолтное состояния";
ТекОбласть = ТабДок.Область(27, 16, 29, 16);
ТекОбласть.Объединить();
ТекОбласть.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить;
Если у вас несколько колонок, указывайте номер последней колонки равный НомерНачальнойКолонки + КоличествоКолонокДляОбъединения
ТекОбласть = ТабДок.Область(27, 16, 29, 20); //будет область из 3-х строк и 5-и колонок.
ТекОбласть.Объединить();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот