|
Программное объединение ячеек при выводе | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
31.08.20
✎
07:50
|
Разрабатываю вывод печатной формы. Но в ней нужно делать объединение ячеек. Подскажите пожалуйста по теории, как это вообще делается.
Вот привожу пример, что по 5 выводимым строкам, первая колонка должна быть объединена, для одного наименования http://joxi.ru/bmoyBOni9DllWA . |
|||
1
acht
31.08.20
✎
07:56
|
> по теории, как это вообще делается.
Андрей, ты уже обнаглел. Тебе уже рекомендовали курсы и книжки. |
|||
2
PuhUfa
31.08.20
✎
08:02
|
(0) > по теории, как это вообще делается.
Ты не поверишь, по теории берется и объединяется, программно. Ну или в макете делается изначально как надо -) |
|||
3
NIGHTHUNTER
31.08.20
✎
08:36
|
(2) Получается нужно программно. Я вот сейчас занимаюсь разбором этого решения.
|
|||
4
NIGHTHUNTER
31.08.20
✎
08:40
|
пока не пойму тот момент, что мне нужно выводить же все секции, а как я обьединяю, если часть секций уже выведено?
|
|||
5
NIGHTHUNTER
31.08.20
✎
08:43
|
То есть вот в этом примере, мне нужно вывести 5 секций, при том в первой колонке, эти секции объединены, как мне хотя бы это статично сделать сейчас?
Самый простой пример, что бы увидеть и уже потом сделать программно ? http://joxi.ru/bmoyBOni9DllWA |
|||
6
Галахад
гуру
31.08.20
✎
08:44
|
(4) Все верно. Объединить можно только то что уже выведено.
|
|||
7
Lexey_
31.08.20
✎
08:54
|
Толстый беременный Ливингстар снова вышел на ночную охоту, ложно светя фонариком
|
|||
8
NIGHTHUNTER
31.08.20
✎
09:02
|
Подскажите пожалуйста, что исправить в моих попытках, что бы увидеть объединение и пытаться развивать его далее. Под пример (0)
ТабДок.Вывести(ОбластьТХШТч); // ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); НомПП = 1; ТекНаименованиеОсновное = ""; ТекВысота = 0; ОдноОсновное = 0; Для каждого СтрТз Из ДокументОбъект.Составляющие Цикл ОбластьСтрока.Параметры.НомПП = НомПП; ОбластьСтрока.Параметры.НаименованиеОсновное = СтрТз.Наименование; ОбластьСтрока.Параметры.Наименование = СтрТз.Наименование; ОбластьСтрока.Параметры.Производитель = СтрТз.Производитель; ОбластьСтрока.Параметры.Производительность = СтрТз.Производительность; ОбластьСтрока.Параметры.ЦенаУЕСНДС = СтрТз.ЦенаУЕСНДС; ОбластьСтрока.Параметры.ЦенаРубСНДС = СтрТз.ЦенаРубСНДС; ОбластьСтрока.Параметры.Количество = СтрТз.Количество; ОбластьСтрока.Параметры.СуммаРубСНДС = СтрТз.СуммаРубСНДС; ОбластьСтрока.Параметры.Итого = СтрТз.Итого; // //Если Марка<>ТекМарка Тогда // Если ТекВысота>0 И ТабДокумент.ВысотаТаблицы>ТекВысота Тогда // ОбластьМарки=ТабДокумент.Область(ТекВысота,1,ТабДокумент.ВысотаТаблицы,1); // ОбластьМарки.Объединить(); // КонецЕсли; // ТекМарка=Марка; // ТекВысота=ТабДокумент.ВысотаТаблицы+1; //КонецЕсли; Если СтрТз.Наименование.Основное Тогда ОдноОсновное = ОдноОсновное + 1; КонецЕсли; // НомПП = НомПП + 1; Если СтрТз.Наименование.Основное и ТекНаименованиеОсновное = "" Тогда ТекНаименованиеОсновное = СтрТз.Наименование; ТекВысота = ТабДок.ВысотаТаблицы; // ТабДок.Вывести(ОбластьСтрока); // ИначеЕсли СтрТз.Наименование.Основное и СтрТз.Наименование <> ТекНаименованиеОсновное Тогда ОбластьОсновнойДетали = ТабДок.Область(ТекВысота, 2, ТабДок.ВысотаТаблицы, 2); ОбластьОсновнойДетали.Объединить(); // ТекНаименованиеОсновное = СтрТз.Наименование; ТекВысота = ТабДок.ВысотаТаблицы; // ТабДок.Вывести(ОбластьСтрока); // Иначе ТекВысота = ТабДок.ВысотаТаблицы; // ТабДок.Вывести(ОбластьСтрока); // КонецЕсли; КонецЦикла; //Если ОдноОсновное > 1 Тогда Если ТабДок.ВысотаТаблицы > ТекВысота Тогда ОбластьОсновнойДетали = ТабДок.Область(ТекВысота, 2, ТабДок.ВысотаТаблицы, 2); ОбластьОсновнойДетали.Объединить(); ТабДок.Вывести(ОбластьСтрока); КонецЕсли; // ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.КомментарийКП = ДокументОбъект.Комментарий; ТабДок.Вывести(ОбластьПодвал); //ТабДок.ТолькоПросмотр = Истина; Возврат ТабДок; КонецФункции |
|||
9
NIGHTHUNTER
31.08.20
✎
09:27
|
Эталон (0) вывел,
ТабДок.Вывести(ОбластьТХШТч); // ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); НомПП = 1; ТекНаименованиеОсновное = ""; ТекВысота = 41; ОдноОсновное = 0; Для каждого СтрТз Из ДокументОбъект.Составляющие Цикл ОбластьСтрока.Параметры.НомПП = НомПП; ОбластьСтрока.Параметры.НаименованиеОсновное = СтрТз.Наименование; ОбластьСтрока.Параметры.Наименование = СтрТз.Наименование; ОбластьСтрока.Параметры.Производитель = СтрТз.Производитель; ОбластьСтрока.Параметры.Производительность = СтрТз.Производительность; ОбластьСтрока.Параметры.ЦенаУЕСНДС = СтрТз.ЦенаУЕСНДС; ОбластьСтрока.Параметры.ЦенаРубСНДС = СтрТз.ЦенаРубСНДС; ОбластьСтрока.Параметры.Количество = СтрТз.Количество; ОбластьСтрока.Параметры.СуммаРубСНДС = СтрТз.СуммаРубСНДС; ОбластьСтрока.Параметры.Итого = СтрТз.Итого; // Если СтрТз.Наименование.Основное Тогда ОдноОсновное = ОдноОсновное + 1; КонецЕсли; // НомПП = НомПП + 1; Если СтрТз.Наименование.Основное и ТекНаименованиеОсновное = "" Тогда ТекНаименованиеОсновное = СтрТз.Наименование; // ТабДок.Вывести(ОбластьСтрока); // ИначеЕсли СтрТз.Наименование.Основное и СтрТз.Наименование <> ТекНаименованиеОсновное Тогда ОбластьОсновнойДетали = ТабДок.Область(ТекВысота, 2, ТабДок.ВысотаТаблицы, 2); ОбластьОсновнойДетали.Объединить(); // ТекНаименованиеОсновное = СтрТз.Наименование; ТекВысота = ТабДок.ВысотаТаблицы + 1; // Иначе // ТабДок.Вывести(ОбластьСтрока); // КонецЕсли; КонецЦикла; Если ТабДок.ВысотаТаблицы > ТекВысота Тогда ОбластьОсновнойДетали = ТабДок.Область(ТекВысота, 2, ТабДок.ВысотаТаблицы, 2); ОбластьОсновнойДетали.Объединить(); КонецЕсли; // ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.КомментарийКП = ДокументОбъект.Комментарий; ТабДок.Вывести(ОбластьПодвал); Возврат ТабДок; КонецФункции будут ли какие рекомендации ? |
|||
10
fisher
31.08.20
✎
09:45
|
(5) Статически по вертикали не объединишь. Это только программно.
Программно делаешь так: когда выводишь состав "триблока" - запоминаешь выведенные секции "триблока" как области результирующего табдока (метод "вывести" возвращает выведенную секцию как область результирующего табдока). По координатам первой и последней выведенных областей вычисляешь координаты области, для которой необходимо выполнить объединение. Объединяешь. И так для каждой позиции в процессе их вывода. Вывел - вычислил координаты области для объединения, объединил, выводишь дальше. Тут хитрый момент только один - не все знают, что методы "Вывести" и "Присоединить" возвращают выведенную секцию как область результирующего табдока. Что это вообще-то функции, а не процедуры :) Так как это редко используется. |
|||
11
fisher
31.08.20
✎
09:46
|
(10) + "Статически по вертикали не объединишь"
Тьфу. Не так. Суть в том, что тебе изначально нужно динамически объединять (состав ячеек для объединения - динамический). А это только программно. |
|||
12
fisher
31.08.20
✎
09:48
|
По горизонтали можно выкрутиться через "ПоВыделеннымКолонкам", а по вертикали - только объединять.
|
|||
13
acht
31.08.20
✎
09:48
|
(10) Ты, давай, не философствуй. Ты, давай, код сразу ему пиши. Готовый и чтобы без ошибок. А то ишь, расслабились =)
|
|||
14
fisher
31.08.20
✎
09:50
|
Мне за себя уже лень код писать. А за других и подавно :)
|
|||
15
Kesim
31.08.20
✎
12:59
|
(0) если научиться - не мешаю, а если сделать по быстрому и не известно сколько строк надо будет объединять - можно типовой отчет сформировать и вывести
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |