Табличный документ. Метод Присоединить() - как добавлять строки вертикально
Здравствуйте!
То, чего пытаюсь добиться
http://i83.fastpic.ru/big/2016/0914/f0/9e936e3d468ec02dd8116f732f504cf0.jpg
Мой макет
http://i83.fastpic.ru/big/2016/0914/a8/9a0d60d9788bd5ea236b73728cbb73a8.jpg
Есть табличный документ. Требуется сначала вывести некую писанину слева во всю высоту страницы. Затем правее должна быть таблица, которую заполнять в цикле.
Долблюсь, не могу сообразить как делать. Уже приходит понимание, что невозможно это сделать, но решил спросить здесь.
Делаю так
1. Вывожу Область "Боковая|Начало"
2. Присоединяю область "Верхушка|Конец"
Дальше при попытке Присоединить Группа|Конец - он выводит все группы справа, а мне нужно вниз.
При попытке Вывести Группа|Конец - выводится в самый низ, после "Боковая|Начало", а мне надо внутри как бы.
При попытке ВставитьОбласть - ошибка, что область не соответствует размеру.
Далее в цикле надо выводить строки ниже шапки, например, 10 штук
То, чего пытаюсь добиться
Мой макет
Есть табличный документ. Требуется сначала вывести некую писанину слева во всю высоту страницы. Затем правее должна быть таблица, которую заполнять в цикле.
Долблюсь, не могу сообразить как делать. Уже приходит понимание, что невозможно это сделать, но решил спросить здесь.
Делаю так
1. Вывожу Область "Боковая|Начало"
2. Присоединяю область "Верхушка|Конец"
Дальше при попытке Присоединить Группа|Конец - он выводит все группы справа, а мне нужно вниз.
При попытке Вывести Группа|Конец - выводится в самый низ, после "Боковая|Начало", а мне надо внутри как бы.
При попытке ВставитьОбласть - ошибка, что область не соответствует размеру.
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
БН = Макет.ПолучитьОбласть("Боковая|Начало");
БК = Макет.ПолучитьОбласть("Боковая|Конец");
БВ = Макет.ПолучитьОбласть("Боковая|Верхушка");
ВК = Макет.ПолучитьОбласть("Верхушка|Конец");
ГК = Макет.ПолучитьОбласть("Группа|Конец");
СК = Макет.ПолучитьОбласть("Стр|Конец");
ТабДок.Вывести(БН); //здесь выводится слева во всю страницу "штамп",
ТабДок.Присоединить(ВК)//присоединяется шапка
ПоказатьДалее в цикле надо выводить строки ниже шапки, например, 10 штук
Для й=1 по 10 цикл
ТабДок.ВставитьОбласть(ГК,БК,ТипСмещенияТабличногоДокумента.ПоВертикали);// здесь всяко пробовал, не пойму как правильно
КонецЦикла;
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(5) realEvgenius, используй свой макет как бланк. Никаких добавляемых строчек, всё сразу рассчитано и учтено, как в типовой торг-12.
Строки, которые заполняешь данными, поименуй Область1..ОбластьN и заполняй данные в цикле.
Потом выведешь весь табличный документ.
Строки, которые заполняешь данными, поименуй Область1..ОбластьN и заполняй данные в цикле.
Потом выведешь весь табличный документ.
(9) корум, Сделал области...
Ш = Макет.ПолучитьОбласть("R1C5:R3C37");
О1 = Макет.ПолучитьОбласть("R4C5:R5C37");
О2 = Макет.ПолучитьОбласть("R4C5:R5C37");
...
ТабДок.ВывестиОбласть? Так, чтоль?
А область, которая должна быть слева на всю страницу?
Короче, не решение это... Есть еще варианты?
Вопрос тотже остался - их как выводить? в ТабДок? Вывести или присоединить?
Ш = Макет.ПолучитьОбласть("R1C5:R3C37");
О1 = Макет.ПолучитьОбласть("R4C5:R5C37");
О2 = Макет.ПолучитьОбласть("R4C5:R5C37");
...
ТабДок.ВывестиОбласть? Так, чтоль?
А область, которая должна быть слева на всю страницу?
Короче, не решение это... Есть еще варианты?
Вопрос тотже остался - их как выводить? в ТабДок? Вывести или присоединить?
(14) realEvgenius, Есть еще варианты?
использую предварительно созданную тз и два цикла.
При этом может не совпадать количество строк, добавляются объединённые ячейки. Сложного тут нет. Кто то Вам мешает обратится к строке и колонке в уже созданной таблице?
И её потом уже скопировать в табл док для вывода.
использую предварительно созданную тз и два цикла.
При этом может не совпадать количество строк, добавляются объединённые ячейки. Сложного тут нет. Кто то Вам мешает обратится к строке и колонке в уже созданной таблице?
И её потом уже скопировать в табл док для вывода.
(14) realEvgenius,
Ш = Макет.ПолучитьОбласть("шапка");
//параметры, оформление...
О1 = Макет.ПолучитьОбласть("ПерваяСтрока");//первая строка
О2 = Макет.ПолучитьОбласть("R3C5:R5C37"); //вторая строка
О3 = Макет.ПолучитьОбласть("R4C5:R5C37");//третья строка
выводить надо область ВесьДокумент ("R1C1:R100500C100500"), внутри которого и рамки, и отдельные строки.
прописывай параметры, если что - всю область отдельной строки делай жирным текстом, если это группа...
и ВЕСЬ ДОКУМЕНТ НА ЭКРАН = одна большая область. Её и показывай, выводи на печать
Ш = Макет.ПолучитьОбласть("R1C5:R3C37");
О1 = Макет.ПолучитьОбласть("R4C5:R5C37");
О2 = Макет.ПолучитьОбласть("R4C5:R5C37");
О1 = Макет.ПолучитьОбласть("R4C5:R5C37");
О2 = Макет.ПолучитьОбласть("R4C5:R5C37");
Ш = Макет.ПолучитьОбласть("шапка");
//параметры, оформление...
О1 = Макет.ПолучитьОбласть("ПерваяСтрока");//первая строка
О2 = Макет.ПолучитьОбласть("R3C5:R5C37"); //вторая строка
О3 = Макет.ПолучитьОбласть("R4C5:R5C37");//третья строка
выводить надо область ВесьДокумент ("R1C1:R100500C100500"), внутри которого и рамки, и отдельные строки.
прописывай параметры, если что - всю область отдельной строки делай жирным текстом, если это группа...
и ВЕСЬ ДОКУМЕНТ НА ЭКРАН = одна большая область. Её и показывай, выводи на печать
Прикрепленные файлы:
(17) корум, еще вопрос:
О1 = Макет.ПолучитьОбласть("ПерваяСтрока");//первая строка
О2 = Макет.ПолучитьОбласть("R3C5:R5C37"); //вторая строка
О3 = Макет.ПолучитьОбласть("R4C5:R5C37");//третья строка
обрасти называются у нас О1, О2, О3.
Как к ним обратиться в цикле?
Для й=1 по 3 цикл
О[й].Параметры.Заполнить // так нельзя, а как можно?
//Так?
ТекОбл = Макет.ПолучитьОбласть("R"+Строка(й+2)+C5:R+Строка(й+4)+C37");
ТекОбл.Параметры.Заполнить;
КонецЦикла;
Или прямо области обозвать "Обл1", "Обл2" и проч. В самом табличном документе?
О1 = Макет.ПолучитьОбласть("ПерваяСтрока");//первая строка
О2 = Макет.ПолучитьОбласть("R3C5:R5C37"); //вторая строка
О3 = Макет.ПолучитьОбласть("R4C5:R5C37");//третья строка
обрасти называются у нас О1, О2, О3.
Как к ним обратиться в цикле?
Для й=1 по 3 цикл
О[й].Параметры.Заполнить // так нельзя, а как можно?
//Так?
ТекОбл = Макет.ПолучитьОбласть("R"+Строка(й+2)+C5:R+Строка(й+4)+C37");
ТекОбл.Параметры.Заполнить;
КонецЦикла;
Или прямо области обозвать "Обл1", "Обл2" и проч. В самом табличном документе?
(20) корум, Сделал не работает
Такой макетhttp://i84.fastpic.ru/big/2016/0914/b4/20871ea52764f3af84b0f4b918e09eb4.jpg
область с шапкой, в которой есть переменная "НАдпись" называется Ш, остальные области - Обл1...Обл31
Модуль
Получается такой результат, то есть выводится совершенно пустой макет. Даже в шапке нет параметра "Надпись".
http://i83.fastpic.ru/big/2016/0914/42/6eaad7a65ed88440b7a1eea78a101942.jpg
Что делаю не так?
пробовал так:
То есть Получил весь макет, из него уже области - результат тот же
Такой макет
область с шапкой, в которой есть переменная "НАдпись" называется Ш, остальные области - Обл1...Обл31
Модуль
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
Весь = Макет.ПолучитьОбласть("R1C1:R74C37");
Ш = Макет.ПолучитьОбласть("R1C5:R3C37");
Ш.Параметры.Надпись = "Начало";
Для й=1 по 30 цикл
Обл = Макет.ПолучитьОбласть("Обл"+Строка(й));
Обл.Параметры.НомерП = й;
КонецЦикла;
ТабДок.Вывести(Весь);
ТабДок.Показать();
ПоказатьПолучается такой результат, то есть выводится совершенно пустой макет. Даже в шапке нет параметра "Надпись".
Что делаю не так?
пробовал так:
Весь = Макет.ПолучитьОбласть("R1C1:R74C37");
Ш = Весь.ПолучитьОбласть("Ш");
То есть Получил весь макет, из него уже области - результат тот же
(6) realEvgenius,
Может я неправильно понял?
чтото типа того
Может я неправильно понял?
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
// Шапка таблицы
Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Присоеднить(Шапка);
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТекста");
// Строка таблицы
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы ");
Для Каждого ТекСтрокаТовары Из Товары Цикл
ТабДок.Вывести(ОбластьСтрока);
СтрокаТаблицы .Параметры.Заполнить(ТекСтрокаТовары);
ТабДок.Присоеднить(СтрокаТаблицы)
КонецЦикла;
Показатьчтото типа того
Логика должна быть такой:
КолонкаСтроки - расширение таблицы вправо
ОбластьСтроки - НашаСтрокаЗаполнения
Создали Табличный документ
Вывели первую "ОбластьСтроки|КолонкаСтроки", заполнинли, присоединили вторую "ОбластьСтроки|КолонкаСтроки", заполнили, "ОбластьСтроки|КолонкаСтроки", заполнилим пустыми значениями например.
Новая строка
Вывели первую "ОбластьСтроки|КолонкаСтроки", заполнинли, присоединили вторую "ОбластьСтроки|КолонкаСтроки", заполнили, "ОбластьСтроки|КолонкаСтроки", заполнили.
и так в цикле двигаемся сначала вправо, потом вниз
При разной длине строк - заполняем пустыми значениями (1 - данные, _ - пустое значение)
1 1 1 1 _ _ _
_ 1 _ 1 1 1 1
_ _ _ _ _ _ 1
КолонкаСтроки - расширение таблицы вправо
ОбластьСтроки - НашаСтрокаЗаполнения
Создали Табличный документ
Вывели первую "ОбластьСтроки|КолонкаСтроки", заполнинли, присоединили вторую "ОбластьСтроки|КолонкаСтроки", заполнили, "ОбластьСтроки|КолонкаСтроки", заполнилим пустыми значениями например.
Новая строка
Вывели первую "ОбластьСтроки|КолонкаСтроки", заполнинли, присоединили вторую "ОбластьСтроки|КолонкаСтроки", заполнили, "ОбластьСтроки|КолонкаСтроки", заполнили.
и так в цикле двигаемся сначала вправо, потом вниз
При разной длине строк - заполняем пустыми значениями (1 - данные, _ - пустое значение)
1 1 1 1 _ _ _
_ 1 _ 1 1 1 1
_ _ _ _ _ _ 1
Напишу как работает:
МАкет должен выглядеть так:
http://i85.fastpic.ru/big/2016/0916/be/c20e0ed8ec913a961bd2b2259cd7c9be.jpg
МАкет должен выглядеть так:
Весь = Макет.ПолучитьОбласть("R1C1:R74C37"); //получаем весь макет одним куском, по имени или областью
Запрос = Новый Запрос("ВЫБРАТЬ ///некий запрос с полями и 1й группировкой
| ОпределениеСоставаОбъектаСостав.Раздел.Родитель КАК Группа,
| ОпределениеСоставаОбъектаСостав.Раздел.МаркаРаздела КАК Обозначение,
| ОпределениеСоставаОбъектаСостав.Раздел.Наименование КАК Раздел,
| ОпределениеСоставаОбъектаСостав.ИнвНомер,
| ОпределениеСоставаОбъектаСостав.Комментарий,
| ОпределениеСоставаОбъектаСостав.НомерП,
| ОпределениеСоставаОбъектаСостав.НомерДоговора
|ИЗ
| Документ.ОпределениеСоставаОбъекта.Состав КАК ОпределениеСоставаОбъектаСостав
|ГДЕ
| ОпределениеСоставаОбъектаСостав.Ссылка = &Ссылка
|ИТОГИ ПО
| Группа");
Запрос.УстановитьПараметр("Ссылка",Ссылка);
В1 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Сч = 0;
Пока В1.Следующий() Цикл
Сч=Сч+1;
Весь.Параметры["НомерП"+Строка(Сч)] = СокрЛП(В1.Группа); //если это группа - то всячеки выделяем, делаем красиво
Весь.Области["Обл"+Строка(Сч)].Объединить(); //Задал в макете имена областей (выделил строку в несколько ячеек мышкой) Обл1, Обл2 и т.д.
Весь.Области["Обл"+Строка(Сч)].ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
Весь.Области["Обл"+Строка(Сч)].ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,2);
Весь.Области["Обл"+Строка(Сч)].Шрифт = Новый Шрифт(,,Истина);
В2 = В1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока В2.Следующий() Цикл
Сч=Сч+1;
Весь.Параметры["НомерП" +Строка(Сч)] = СокрЛП(В2.НомерП); ///если просто строки - то просто заполняем
Весь.Параметры["Обозначение"+Строка(Сч)] = СокрЛП(В2.НомерДоговора)+" - "+СокрЛП(В2.Обозначение);
Весь.Параметры["Раздел" +Строка(Сч)] = СокрЛП(В2.Раздел);
Весь.Параметры["ИнвНомер" +Строка(Сч)] = СокрЛП(В2.ИнвНомер);
Весь.Параметры["Комментарий"+Строка(Сч)] = СокрЛП(В2.Комментарий);
КонецЦикла;
КонецЦикла;
ТабДок.Вывести(Весь);
ТабДок.Показать();
Показать
Возникла аналогичная проблема, удалось решить путем создания дополнительных табличных документов для областей, которые нужно вывести после вертикальных линий.
Макет:
Итог:
#Область ПодготовкаМакета
//**Получаем Макет**
Результат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Результат.АвтоМасштаб = Истина;
Макет = Отчеты.ТоварноДенежныйОтчет.ПолучитьМакет("Макет_ТоварноДенежныйОтчет_Стр1");
ОбластьШапка = Макет.ПолучитьОбласть("ОбластьШапка");
ОбластьМОЛ = Макет.ПолучитьОбласть("ОбластьМОЛ");
ОбластьМОЛ_Ш = Макет.ПолучитьОбласть("ОбластьМОЛ_Ш");
ОбластьМОЛ_Эл = Макет.ПолучитьОбласть("ОбластьМОЛ_Эл");
ОбластьБух = Макет.ПолучитьОбласть("ОбластьБух");
ОбластьБух_Ш = Макет.ПолучитьОбласть("ОбластьБух_Ш");
ОбластьБух_Эл = Макет.ПолучитьОбласть("ОбластьБух_Эл");
ОбластьПрихРасх = Макет.ПолучитьОбласть("ОбластьПрихРасх");
ОбластьПодвал = Макет.ПолучитьОбласть("ОбластьПодвал");
#КонецОбласти
Результат.Вывести(ОбластьШапка);
Результат.Вывести(ОбластьМОЛ);
Результат.Присоединить(ОбластьБух);
Результат.Вывести(ОбластьПрихРасх);
Таб_1 = Новый ТабличныйДокумент;
Таб_2 = Новый ТабличныйДокумент;
Таб_1.Вывести(ОбластьМОЛ_Ш);
Таб_2.Вывести(ОбластьБух_Ш);
Для Счетчик = 1 По 24 Цикл
Таб_1.Вывести(ОбластьМОЛ_Эл);
Таб_2.Вывести(ОбластьБух_Эл);
КонецЦикла;
Результат.Присоединить(Таб_1);
Результат.Присоединить(Таб_2);
Результат.Вывести(ОбластьПодвал);
ПоказатьМакет:

Итог:

Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день