Есть табличный документ. Требуется сначала вывести некую писанину слева во всю высоту страницы. Затем правее должна быть таблица, которую заполнять в цикле.
Долблюсь, не могу сообразить как делать. Уже приходит понимание, что невозможно это сделать, но решил спросить здесь.
Делаю так
1. Вывожу Область "Боковая|Начало"
2. Присоединяю область "Верхушка|Конец"
Дальше при попытке Присоединить Группа|Конец - он выводит все группы справа, а мне нужно вниз.
При попытке Вывести Группа|Конец - выводится в самый низ, после "Боковая|Начало", а мне надо внутри как бы.
При попытке ВставитьОбласть - ошибка, что область не соответствует размеру.
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
БН = Макет.ПолучитьОбласть("Боковая|Начало");
БК = Макет.ПолучитьОбласть("Боковая|Конец");
БВ = Макет.ПолучитьОбласть("Боковая|Верхушка");
ВК = Макет.ПолучитьОбласть("Верхушка|Конец");
ГК = Макет.ПолучитьОбласть("Группа|Конец");
СК = Макет.ПолучитьОбласть("Стр|Конец");
ТабДок.Вывести(БН); //здесь выводится слева во всю страницу "штамп",
ТабДок.Присоединить(ВК)//присоединяется шапка
Показать
Далее в цикле надо выводить строки ниже шапки, например, 10 штук
Для й=1 по 10 цикл
ТабДок.ВставитьОбласть(ГК,БК,ТипСмещенияТабличногоДокумента.ПоВертикали);// здесь всяко пробовал, не пойму как правильно
КонецЦикла;
(1) realEvgenius, хм... пишу конфу (до печати еще не добрался) тоже по автоматизации проектной документации, но до конструктора печати еще не добрался. ИМХО а не проще это загнать в колонтитул, или печатать уже на готовой бумаге с этими строками?
(3) aka Любитель XML, Проще на бланках с уже такими штампами. Но бланки для первой страницы и для следующих отличаются, опять же необходимо писаль лист№... / листов... Поэтому мои подопечные на бланках делать отказались...
(5) realEvgenius, используй свой макет как бланк. Никаких добавляемых строчек, всё сразу рассчитано и учтено, как в типовой торг-12.
Строки, которые заполняешь данными, поименуй Область1..ОбластьN и заполняй данные в цикле.
Потом выведешь весь табличный документ.
Ш = Макет.ПолучитьОбласть("R1C5:R3C37");
О1 = Макет.ПолучитьОбласть("R4C5:R5C37");
О2 = Макет.ПолучитьОбласть("R4C5:R5C37");
...
ТабДок.ВывестиОбласть? Так, чтоль?
А область, которая должна быть слева на всю страницу?
Короче, не решение это... Есть еще варианты?
Вопрос тотже остался - их как выводить? в ТабДок? Вывести или присоединить?
использую предварительно созданную тз и два цикла.
При этом может не совпадать количество строк, добавляются объединённые ячейки. Сложного тут нет. Кто то Вам мешает обратится к строке и колонке в уже созданной таблице?
И её потом уже скопировать в табл док для вывода.
(19) realEvgenius, прямо области обозвать "Обл1", "Обл2" и проч. В самом табличном документе.
И обращаться к ним в цикле :
Макет.ПолучитьОбласть("Обл"+счетчег);
(1) realEvgenius, Область слева которая не относится к таблице - можно выводить одновременно с таблицей
строка 1 _ 1 _ _
строка 1 1 1 1 1
______ 1 _ _ _ _
(7) olgerd666, Вы макет видите, который я выложил? Вертикальная секция "Начало" должна быть на странице. Далее надо добавить Верхушка|Конец, затем выводить в цикле Группа|Конец.
Весь = Макет.ПолучитьОбласть("R1C1:R74C37"); //получаем весь макет одним куском, по имени или областью
Запрос = Новый Запрос("ВЫБРАТЬ ///некий запрос с полями и 1й группировкой
| ОпределениеСоставаОбъектаСостав.Раздел.Родитель КАК Группа,
| ОпределениеСоставаОбъектаСостав.Раздел.МаркаРаздела КАК Обозначение,
| ОпределениеСоставаОбъектаСостав.Раздел.Наименование КАК Раздел,
| ОпределениеСоставаОбъектаСостав.ИнвНомер,
| ОпределениеСоставаОбъектаСостав.Комментарий,
| ОпределениеСоставаОбъектаСостав.НомерП,
| ОпределениеСоставаОбъектаСостав.НомерДоговора
|ИЗ
| Документ.ОпределениеСоставаОбъекта.Состав КАК ОпределениеСоставаОбъектаСостав
|ГДЕ
| ОпределениеСоставаОбъектаСостав.Ссылка = &Ссылка
|ИТОГИ ПО
| Группа");
Запрос.УстановитьПараметр("Ссылка",Ссылка);
В1 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Сч = 0;
Пока В1.Следующий() Цикл
Сч=Сч+1;
Весь.Параметры["НомерП"+Строка(Сч)] = СокрЛП(В1.Группа); //если это группа - то всячеки выделяем, делаем красиво
Весь.Области["Обл"+Строка(Сч)].Объединить(); //Задал в макете имена областей (выделил строку в несколько ячеек мышкой) Обл1, Обл2 и т.д.
Весь.Области["Обл"+Строка(Сч)].ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
Весь.Области["Обл"+Строка(Сч)].ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].Шрифт = Новый Шрифт(,,Истина);
В2 = В1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока В2.Следующий() Цикл
Сч=Сч+1;
Весь.Параметры["НомерП" +Строка(Сч)] = СокрЛП(В2.НомерП); ///если просто строки - то просто заполняем
Весь.Параметры["Обозначение"+Строка(Сч)] = СокрЛП(В2.НомерДоговора)+" - "+СокрЛП(В2.Обозначение);
Весь.Параметры["Раздел" +Строка(Сч)] = СокрЛП(В2.Раздел);
Весь.Параметры["ИнвНомер" +Строка(Сч)] = СокрЛП(В2.ИнвНомер);
Весь.Параметры["Комментарий"+Строка(Сч)] = СокрЛП(В2.Комментарий);
КонецЦикла;
КонецЦикла;
ТабДок.Вывести(Весь);
ТабДок.Показать();
23.
user666093_teampk
09.01.17 16:05 Сейчас в теме
Возникла аналогичная проблема, удалось решить путем создания дополнительных табличных документов для областей, которые нужно вывести после вертикальных линий.