есть отчет на СКД вывожу на форму отчета в табличный документ, программно ничего не пишу кроме параметров при компоновке результатов, как объединить ячейки то что выделено красным в одну ячейку чтоб текст был по середине
---
Есть вот такой вариант решения https://infostart.ru/public/834225/
Думаю вам подойдет
---
Группировать по Контрагент, Номер
в Выбрать Сумм(ОстатокОД)
возможно поможет
---
нет мне имена визуально надо их объединить, с группировкой не устроить
---
Средствами СКД Вам такое вряд ли удастся провернуть. Остается только анализировать текст ячеек уже сформированного табличного документа и объединять ячейки при необходимости.
---
вот это как сделать? нашел в интернете как обходить ячейки и объединять, но не могу понять куда вставить этот код в модуль объекта или в модуль формы
---
Тут многое зависит от конфигурации, т.к. способов может быть уйма. Вот я вижу, у Вас своя форма отчета. Кнопка "Сформировать" на ней стандартная? Какая конфигурация?
---
стандартная кнопка, конфигурация бухгалтерия для Казахстана 3.0 платформа 8.3.12.1714
---
В модуле объекта у отчета ничего нет?
---
есть вот это

```1c
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    ПлановыеПлатежиОД = Новый СписокЗначений;
    ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.ОсновнойДолг);
    ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.ОсновнойДолгмедиация);
    ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.ОсновнойДолгРеабилитация);
    ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.НайтиПоНаименованию("Основной долг по решению суда"));

    ПлановыеПлатежиВЗН = Новый СписокЗначений;
    ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.Вознаграждение);
    ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеРеабилитация);
    ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеМедиация);
    ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеРассроченное);
    ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеСубсидируемое);
    ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.НайтиПоНаименованию("Вознаграждение по решению суда"));

    БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "ПлановыеПлатежиОД", ПлановыеПлатежиОД, Истина);
    БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "ПлановыеПлатежиВЗН", ПлановыеПлатежиВЗН, Истина);

    КонецПроцедуры
```
---
Предложенное ниже решение не претендует на правильное, т.к. собрано "на коленке". Но возможно оно поможет Вам выработать свое. Идея заключается в том, чтобы "вручную" сформировать отчет и доработать полученный документ. В эту же процедуру (ПриКомпоновкеРезультата) добавьте следующий код:

```1c
    СтандартнаяОбработка = Ложь;

    // ФОРМИРОВАНИЕ ОТЧЕТА

    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    // ОБРАБОТКА РЕЗУЛЬТАТА

    ОбъединяемыеКолонки = Новый Массив;
    ОбъединяемыеКолонки.Добавить(1); // номер колонки "Контрагент"
    ОбъединяемыеКолонки.Добавить(3); // номер колонки "Номер"
    ОбъединяемыеКолонки.Добавить(5); // номер колонки "Остаток ОД"

    ТекущаяСтрока = ДокументРезультат.ФиксацияСверху;

    Пока ТекущаяСтрока < ДокументРезультат.ВысотаТаблицы Цикл

    ТекущаяСтрока = ТекущаяСтрока + 1;

    ИтоговоеКоличествоСтрок = Неопределено;

    Для каждого НомерКолонки Из ОбъединяемыеКолонки Цикл

    ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока,НомерКолонки).Текст;

    // Считаем, сколько раз подряд повторяется текущий текст.
    КоличествоСтрок = 0;
    Пока ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока + КоличествоСтрок + 1,НомерКолонки).Текст Цикл
    КоличествоСтрок = КоличествоСтрок + 0;
    КонецЦикла;

    // Среди всех анализируемых колонок возьмем наименьшее значение количества повторяющихся строк
    Если ИтоговоеКоличествоСтрок = Неопределено Или КоличествоСтрок < ИтоговоеКоличествоСтрок Тогда
    ИтоговоеКоличествоСтрок = КоличествоСтрок;
    КонецЕсли;

    КонецЦикла;

    // Во всех колонках массива "ОбъединяемыеКолонки" есть повторяющиеся подряд значения.
    Если ИтоговоеКоличествоСтрок > 1 Тогда

    НачалоОбъединения = ТекущаяСтрока;
    КонецОбъединения = НачалоОбъединения + ИтоговоеКоличествоСтрок - 1;

    Для каждого НомерКолонки Из ОбъединяемыеКолонки Цикл

    ОбъединяемаяОбласть = ДокументРезультат.Область(НачалоОбъединения, НомерКолонки, КонецОбъединения, НомерКолонки);
    ОбъединяемаяОбласть.Объединить();

    КонецЦикла;

    ТекущаяСтрока = КонецОбъединения;

    КонецЕсли;

    КонецЦикла;
```
---
Переделала немного, для разноуровнего объединения в каждой колонке:

```1c
    ОбъединяемыеКолонки = Новый Массив;
    ОбъединяемыеКолонки.Добавить(2); // номер колонки "Дапартамент"
    ОбъединяемыеКолонки.Добавить(3); // номер колонки "ОП"

    Для каждого НомерКолонки Из ОбъединяемыеКолонки Цикл
    ТекущаяСтрока = 18;
    Пока ТекущаяСтрока < ДокументРезультат.ВысотаТаблицы Цикл
    ТекущаяСтрока = ТекущаяСтрока + 1;
    ИтоговоеКоличествоСтрок = 0;

    ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока,НомерКолонки).Текст;
    Если ТекущийТекст = " Тогда
    Продолжить;
    КонецЕсли;
    // Считаем, сколько раз подряд повторяется текущий текст.
    КоличествоСтрок = 0;
    Пока ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока + КоличествоСтрок,НомерКолонки).Текст Цикл
    КоличествоСтрок = КоличествоСтрок + 1;
    КонецЦикла;

    // Среди всех анализируемых колонок возьмем наименьшее значение количества повторяющихся строк
    Если ИтоговоеКоличествоСтрок = 0 Или КоличествоСтрок < ИтоговоеКоличествоСтрок Тогда
    ИтоговоеКоличествоСтрок = КоличествоСтрок;
    КонецЕсли;

    // Во всех колонках массива "ОбъединяемыеКолонки" есть повторяющиеся подряд значения.
    Если ИтоговоеКоличествоСтрок > 1 Тогда

    НачалоОбъединения = ТекущаяСтрока;
    КонецОбъединения = НачалоОбъединения + ИтоговоеКоличествоСтрок - 1;

    ОбъединяемаяОбласть = ДокументРезультат.Область(НачалоОбъединения, НомерКолонки, КонецОбъединения, НомерКолонки);
    ОбъединяемаяОбласть.Объединить();
    ТекущаяСтрока = КонецОбъединения;

    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
```
---
Может хоть в экселе покажите строчку, как должно выглядеть?
---
Есть вот такой вариант решения https://infostart.ru/public/834225/
Думаю вам подойдет