Объединение полей В Макете программно 1с

1. user1582372 13.04.21 09:54 Сейчас в теме
Можно ли сделать так как на скриншоте, при условии если в строке выбора будут одинаковые контрагенты то строки в макете будут объединиться?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
5. SlavaKron 13.04.21 10:39 Сейчас в теме
Не меняя логику формирования отчета, можно постобработкой пройтись по нужной колонке ТабДока и объединить ячейки:
Процедура ОбъединитьЯчейкиВКолонке(ТабДок, НомерКолонки, ПерваяСтрока = 1)
	
	ТекущийТекст = Неопределено;
	НачалоОбласти = ПерваяСтрока;
	Для НомерСтроки = ПерваяСтрока По ТабДок.ВысотаТаблицы Цикл
		
		ТекстЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
			
		Если ТекущийТекст <> ТекстЯчейки Тогда
			Если НомерСтроки - НачалоОбласти > 1 Тогда
				ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
			КонецЕсли;
			НачалоОбласти = НомерСтроки;
			ТекущийТекст = ТекстЯчейки;
		КонецЕсли;
	КонецЦикла;
	
	Если НомерСтроки - НачалоОбласти > 1 Тогда
		ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
	КонецЕсли;
	
КонецПроцедуры
Показать
smartcoder; user1582372; +2 Ответить
10. user1582372 23.04.21 13:35 Сейчас в теме
(9) Я в общем переделал все но упирался на твой алгоритм, конечно выбор строк и колонок мощный получился) Зато работает объединяет строки по контрагенту, идет перечисление в объединённой строке и суммирует по контрагенту.
Прикрепленные файлы:
smartcoder; +1 Ответить
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. DJDUH 17 13.04.21 10:15 Сейчас в теме
(1) Можно в запросе "Итоги по Контрагенту" или в вашем коде смотреть по строкам и выводить только один раз, а дальше детальные записи по контрагенту.
3. UtSpar 134 13.04.21 10:20 Сейчас в теме
В запросе где получаете Реестр платежей - сделайте группировку по всему кроме суммы, а сумму в сумму.

ну или можно сгруппировать и свернуть группу просто.... хотя не очень красиво и надо подключать итоги.
4. DenisVol 3 13.04.21 10:35 Сейчас в теме
группировка по контрагенту и по документу платежей
5. SlavaKron 13.04.21 10:39 Сейчас в теме
Не меняя логику формирования отчета, можно постобработкой пройтись по нужной колонке ТабДока и объединить ячейки:
Процедура ОбъединитьЯчейкиВКолонке(ТабДок, НомерКолонки, ПерваяСтрока = 1)
	
	ТекущийТекст = Неопределено;
	НачалоОбласти = ПерваяСтрока;
	Для НомерСтроки = ПерваяСтрока По ТабДок.ВысотаТаблицы Цикл
		
		ТекстЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
			
		Если ТекущийТекст <> ТекстЯчейки Тогда
			Если НомерСтроки - НачалоОбласти > 1 Тогда
				ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
			КонецЕсли;
			НачалоОбласти = НомерСтроки;
			ТекущийТекст = ТекстЯчейки;
		КонецЕсли;
	КонецЦикла;
	
	Если НомерСтроки - НачалоОбласти > 1 Тогда
		ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
	КонецЕсли;
	
КонецПроцедуры
Показать
smartcoder; user1582372; +2 Ответить
6. UtSpar 134 13.04.21 13:14 Сейчас в теме
(5) Объединить по условию же нужно.
Хороший прием, но наверное геморный.
8. user1582372 23.04.21 07:14 Сейчас в теме
(5) Как можно дополнить твой код, чтобы текст выводился после запятой, после объединения ячейки? У меня объединяет ячейки как мне надо но текст через запятую не выводит а выводит тока первую строку 604 а надо 604,605.
9. SlavaKron 23.04.21 09:50 Сейчас в теме
(8)КолонкиОбъединить – это массив номеров колонок, в которых нужно объединить текст
&НаКлиенте
Процедура Команда1(Команда)
	КолонкиОбъединить = Новый Массив;
	КолонкиОбъединить.Добавить(2);
	КолонкиОбъединить.Добавить(3);
	КолонкиОбъединить.Добавить(4);
	ОбъединитьЯчейкиВКолонке(ТабДок, 1, КолонкиОбъединить)
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ОбъединитьЯчейкиВКолонке(ТабДок, НомерКолонки, КолонкиОбъединить, ПерваяСтрока = 1)
    
    ТекущийТекст = Неопределено;
    НачалоОбласти = ПерваяСтрока;
    Для НомерСтроки = ПерваяСтрока По ТабДок.ВысотаТаблицы Цикл
        
        ТекстЯчейки = ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
            
        Если ТекущийТекст <> ТекстЯчейки Тогда
            Если НомерСтроки - НачалоОбласти > 1 Тогда
                ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
				Для Каждого Колонка Из КолонкиОбъединить Цикл
					Массив = Новый Массив;
					Для Стр = НачалоОбласти По НомерСтроки - 1 Цикл
						Массив.Добавить(ТабДок.Область(Стр, Колонка).Текст);
					КонецЦикла;
					ТабДок.Область(НачалоОбласти, Колонка, НомерСтроки - 1, Колонка).Объединить();
					ТабДок.Область(НачалоОбласти, Колонка).Текст = СтрСоединить(Массив, ", ");
				КонецЦикла;
            КонецЕсли;
            НачалоОбласти = НомерСтроки;
            ТекущийТекст = ТекстЯчейки;
        КонецЕсли;
    КонецЦикла;
    
    Если НомерСтроки - НачалоОбласти > 1 Тогда
        ТабДок.Область(НачалоОбласти, НомерКолонки, НомерСтроки - 1, НомерКолонки).Объединить();
		Для Каждого Колонка Из КолонкиОбъединить Цикл
			Массив = Новый Массив;
			Для Стр = НачалоОбласти По НомерСтроки - 1 Цикл
				Массив.Добавить(ТабДок.Область(Стр, Колонка).Текст);
			КонецЦикла;
			ТабДок.Область(НачалоОбласти, Колонка, НомерСтроки - 1, Колонка).Объединить();
			ТабДок.Область(НачалоОбласти, Колонка).Текст = СтрСоединить(Массив, ", ");
		КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры
Показать
user1582372; +1 Ответить
10. user1582372 23.04.21 13:35 Сейчас в теме
(9) Я в общем переделал все но упирался на твой алгоритм, конечно выбор строк и колонок мощный получился) Зато работает объединяет строки по контрагенту, идет перечисление в объединённой строке и суммирует по контрагенту.
Прикрепленные файлы:
smartcoder; +1 Ответить
7. user1582372 16.04.21 08:42 Сейчас в теме
В моём случае этот вариант правильный, Вопрос тока остался как после объединения ячеек вывести данные через запятую ?
11. user1582372 23.04.21 13:38 Сейчас в теме
Оставьте свое сообщение

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