на форме отчете объединить ячейки в табличном документе

1. MegaKZ 5 15.05.19 13:23 Сейчас в теме
есть отчет на СКД вывожу на форму отчета в табличный документ, программно ничего не пишу кроме параметров при компоновке результатов, как объединить ячейки то что выделено красным в одну ячейку чтоб текст был по середине
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
13. toypaul 63 16.05.19 07:38 Сейчас в теме +0.1 $m
Есть вот такой вариант решения https://infostart.ru/public/834225/
Думаю вам подойдет
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. KandKonst 32 15.05.19 13:31 Сейчас в теме
Группировать по Контрагент, Номер
в Выбрать Сумм(ОстатокОД)
возможно поможет
3. MegaKZ 5 15.05.19 13:38 Сейчас в теме
(2) нет мне имена визуально надо их объединить, с группировкой не устроить
5. dhurricane 15.05.19 14:49 Сейчас в теме
(3) Средствами СКД Вам такое вряд ли удастся провернуть. Остается только анализировать текст ячеек уже сформированного табличного документа и объединять ячейки при необходимости.
6. MegaKZ 5 15.05.19 15:07 Сейчас в теме
(5) вот это как сделать? нашел в интернете как обходить ячейки и объединять, но не могу понять куда вставить этот код в модуль объекта или в модуль формы
8. dhurricane 15.05.19 15:11 Сейчас в теме
(6) Тут многое зависит от конфигурации, т.к. способов может быть уйма. Вот я вижу, у Вас своя форма отчета. Кнопка "Сформировать" на ней стандартная? Какая конфигурация?
9. MegaKZ 5 15.05.19 15:16 Сейчас в теме
(8) стандартная кнопка, конфигурация бухгалтерия для Казахстана 3.0 платформа 8.3.12.1714
10. dhurricane 15.05.19 15:17 Сейчас в теме
(9) В модуле объекта у отчета ничего нет?
11. MegaKZ 5 15.05.19 15:30 Сейчас в теме
(10) есть вот это
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	ПлановыеПлатежиОД = Новый СписокЗначений;
	ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.ОсновнойДолг);
	ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.ОсновнойДолгмедиация);
	ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.ОсновнойДолгРеабилитация);
	ПлановыеПлатежиОД.Добавить(Справочники.крВидыОбязательств.НайтиПоНаименованию("Основной долг по решению суда"));	
	
	ПлановыеПлатежиВЗН = Новый СписокЗначений;
	ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.Вознаграждение);
	ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеРеабилитация);
	ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеМедиация);
	ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеРассроченное);
	ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.ВознаграждениеСубсидируемое); 	
	ПлановыеПлатежиВЗН.Добавить(Справочники.крВидыОбязательств.НайтиПоНаименованию("Вознаграждение  по решению суда"));
	
	БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "ПлановыеПлатежиОД", ПлановыеПлатежиОД, Истина);
	БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "ПлановыеПлатежиВЗН", ПлановыеПлатежиВЗН, Истина);
	 	
	
	
КонецПроцедуры
Показать
12. dhurricane 15.05.19 15:36 Сейчас в теме
(11) Предложенное ниже решение не претендует на правильное, т.к. собрано "на коленке". Но возможно оно поможет Вам выработать свое. Идея заключается в том, чтобы "вручную" сформировать отчет и доработать полученный документ. В эту же процедуру (ПриКомпоновкеРезультата) добавьте следующий код:
СтандартнаяОбработка = Ложь;

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

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

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

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

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

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

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

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

Пока ТекущаяСтрока < ДокументРезультат.ВысотаТаблицы Цикл
	
	ТекущаяСтрока = ТекущаяСтрока + 1;
	
	ИтоговоеКоличествоСтрок = Неопределено;
	
	Для каждого НомерКолонки Из ОбъединяемыеКолонки Цикл
		
		ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока,НомерКолонки).Текст;
		
		// Считаем, сколько раз подряд повторяется текущий текст.
		КоличествоСтрок = 0;
		Пока ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока + КоличествоСтрок + 1,НомерКолонки).Текст Цикл
			КоличествоСтрок = КоличествоСтрок + 0;
		КонецЦикла; 
		
		// Среди всех анализируемых колонок возьмем наименьшее значение количества повторяющихся строк
		Если ИтоговоеКоличествоСтрок = Неопределено Или КоличествоСтрок < ИтоговоеКоличествоСтрок Тогда
			ИтоговоеКоличествоСтрок = КоличествоСтрок;
		КонецЕсли; 
		
	КонецЦикла;
	
	// Во всех колонках массива "ОбъединяемыеКолонки" есть повторяющиеся подряд значения.
	Если ИтоговоеКоличествоСтрок > 1 Тогда
		
		НачалоОбъединения = ТекущаяСтрока;
		КонецОбъединения = НачалоОбъединения + ИтоговоеКоличествоСтрок - 1;
		
		Для каждого НомерКолонки Из ОбъединяемыеКолонки Цикл
			
			ОбъединяемаяОбласть = ДокументРезультат.Область(НачалоОбъединения, НомерКолонки, КонецОбъединения, НомерКолонки);
			ОбъединяемаяОбласть.Объединить();
			
		КонецЦикла; 
		
		ТекущаяСтрока = КонецОбъединения;
		
	КонецЕсли; 
	
КонецЦикла;
Показать
14. neptunka 40 14.01.20 21:29 Сейчас в теме
(12) Переделала немного, для разноуровнего объединения в каждой колонке:

ОбъединяемыеКолонки = Новый Массив;
			ОбъединяемыеКолонки.Добавить(2); // номер колонки "Дапартамент"
			ОбъединяемыеКолонки.Добавить(3); // номер колонки "ОП"
							
			Для каждого НомерКолонки Из ОбъединяемыеКолонки Цикл
				ТекущаяСтрока = 18;
				Пока ТекущаяСтрока < ДокументРезультат.ВысотаТаблицы Цикл
					ТекущаяСтрока = ТекущаяСтрока + 1;
					ИтоговоеКоличествоСтрок = 0;
					
					ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока,НомерКолонки).Текст;
					Если ТекущийТекст = "" Тогда
						Продолжить;
					КонецЕсли; 
					// Считаем, сколько раз подряд повторяется текущий текст.
					КоличествоСтрок = 0;
					Пока ТекущийТекст = ДокументРезультат.Область(ТекущаяСтрока + КоличествоСтрок,НомерКолонки).Текст Цикл
						КоличествоСтрок = КоличествоСтрок + 1;
					КонецЦикла; 
					
					// Среди всех анализируемых колонок возьмем наименьшее значение количества повторяющихся строк
					Если ИтоговоеКоличествоСтрок = 0 Или КоличествоСтрок < ИтоговоеКоличествоСтрок Тогда
						ИтоговоеКоличествоСтрок = КоличествоСтрок;
					КонецЕсли; 
					
					// Во всех колонках массива "ОбъединяемыеКолонки" есть повторяющиеся подряд значения.
					Если ИтоговоеКоличествоСтрок > 1 Тогда
						
						НачалоОбъединения = ТекущаяСтрока;
						КонецОбъединения = НачалоОбъединения + ИтоговоеКоличествоСтрок - 1;
						
						ОбъединяемаяОбласть = ДокументРезультат.Область(НачалоОбъединения, НомерКолонки, КонецОбъединения, НомерКолонки);
						ОбъединяемаяОбласть.Объединить();
						ТекущаяСтрока = КонецОбъединения;
						
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
Показать
4. login1020 133 15.05.19 14:47 Сейчас в теме
Может хоть в экселе покажите строчку, как должно выглядеть?
7. MegaKZ 5 15.05.19 15:09 Сейчас в теме
(4)
Прикрепленные файлы:
13. toypaul 63 16.05.19 07:38 Сейчас в теме +0.1 $m
Есть вот такой вариант решения https://infostart.ru/public/834225/
Думаю вам подойдет
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот