Объединение полей В Макете программно 1с
По теме из базы знаний
Найденные решения
Не меняя логику формирования отчета, можно постобработкой пройтись по нужной колонке ТабДока и объединить ячейки:
Процедура ОбъединитьЯчейкиВКолонке(ТабДок, НомерКолонки, ПерваяСтрока = 1)
ТекущийТекст = Неопределено;
НачалоОбласти = ПерваяСтрока;
Для НомерСтроки = ПерваяСтрока По ТабДок.ВысотаТаблицы Цикл
ТекстЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
Если ТекущийТекст <> ТекстЯчейки Тогда
Если НомерСтроки - НачалоОбласти > 1 Тогда
ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
КонецЕсли;
НачалоОбласти = НомерСтроки;
ТекущийТекст = ТекстЯчейки;
КонецЕсли;
КонецЦикла;
Если НомерСтроки - НачалоОбласти > 1 Тогда
ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Не меняя логику формирования отчета, можно постобработкой пройтись по нужной колонке ТабДока и объединить ячейки:
Процедура ОбъединитьЯчейкиВКолонке(ТабДок, НомерКолонки, ПерваяСтрока = 1)
ТекущийТекст = Неопределено;
НачалоОбласти = ПерваяСтрока;
Для НомерСтроки = ПерваяСтрока По ТабДок.ВысотаТаблицы Цикл
ТекстЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
Если ТекущийТекст <> ТекстЯчейки Тогда
Если НомерСтроки - НачалоОбласти > 1 Тогда
ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
КонецЕсли;
НачалоОбласти = НомерСтроки;
ТекущийТекст = ТекстЯчейки;
КонецЕсли;
КонецЦикла;
Если НомерСтроки - НачалоОбласти > 1 Тогда
ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
КонецЕсли;
КонецПроцедуры
Показать
(8)КолонкиОбъединить – это массив номеров колонок, в которых нужно объединить текст
&НаКлиенте
Процедура Команда1(Команда)
КолонкиОбъединить = Новый Массив;
КолонкиОбъединить.Добавить(2);
КолонкиОбъединить.Добавить(3);
КолонкиОбъединить.Добавить(4);
ОбъединитьЯчейкиВКолонке(ТабДок, 1, КолонкиОбъединить)
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбъединитьЯчейкиВКолонке(ТабДок, НомерКолонки, КолонкиОбъединить, ПерваяСтрока = 1)
ТекущийТекст = Неопределено;
НачалоОбласти = ПерваяСтрока;
Для НомерСтроки = ПерваяСтрока По ТабДок.ВысотаТаблицы Цикл
ТекстЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
Если ТекущийТекст <> ТекстЯчейки Тогда
Если НомерСтроки - НачалоОбласти > 1 Тогда
ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
Для Каждого Колонка Из КолонкиОбъединить Цикл
Массив = Новый Массив;
Для Стр = НачалоОбласти По НомерСтроки - 1 Цикл
Массив.Добавить(ТабДок.Область(Стр, Колонка).Текст);
КонецЦикла;
ТабДок.Область(НачалоОбласти, Колонка, НомерСтроки - 1, Колонка).Объединить();
ТабДок.Область(НачалоОбласти, Колонка).Текст = СтрСоединить(Массив, ", ");
КонецЦикла;
КонецЕсли;
НачалоОбласти = НомерСтроки;
ТекущийТекст = ТекстЯчейки;
КонецЕсли;
КонецЦикла;
Если НомерСтроки - НачалоОбласти > 1 Тогда
ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
Для Каждого Колонка Из КолонкиОбъединить Цикл
Массив = Новый Массив;
Для Стр = НачалоОбласти По НомерСтроки - 1 Цикл
Массив.Добавить(ТабДок.Область(Стр, Колонка).Текст);
КонецЦикла;
ТабДок.Область(НачалоОбласти, Колонка, НомерСтроки - 1, Колонка).Объединить();
ТабДок.Область(НачалоОбласти, Колонка).Текст = СтрСоединить(Массив, ", ");
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот