СКД - оформление горизонтальной группировки

1. kosikov_oleg 31.08.16 15:21 Сейчас в теме
В общем ума не приложу как в СКД сделать тривиальную для бухгалтеров и непосильную для программиста вещь. А именно, объединить заголовок группировки разворачивающийся по горизонтали? Подробней проблему можно увидить на картинке.
Группировки примерно такие

Завтрак
__каша
__суп
__чай
Обед
__каша
__Суп
__Чай
Но чтобы Завтрак был написан одним словом над всеми блюдами.

Спасибо!
Прикрепленные файлы:
Lacoste4life; Egor_R; +2 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. json 3308 31.08.16 15:58 Сейчас в теме
(1) kosikov_oleg, вот тут я уже приводил решение похожего вопроса. Там нужно было объединить ячейки по вертикали. Но принцип можно использовать такой же
5. kosikov_oleg 01.09.16 07:14 Сейчас в теме
(3) yurii_host,
А можно попросить немного пояснить? Все дело в выражении Менеджер + "{ОБЪЕДИНИТЬ}"?
Не пойму как этот механизм работает.

Спасибо.
6. json 3308 01.09.16 08:20 Сейчас в теме
(5) kosikov_oleg,
чисто средствами СКД - ячейки не объединить, поэтому сначала надо подготовить табличный документ, потом кодом объединить нужные ячейки.
Вопрос в том, как узнать какие ячейки объединять. Для этого используется МаркерОбъединения - некоторая ключевая конструкция, которая дописывается в каждую объединяемую ячейку. В моем случае маркером объединения выступает строка "{ОБЪЕДИНИТЬ}"
kosikov_oleg; +1 Ответить
7. json 3308 01.09.16 08:29 Сейчас в теме
(6) yurii_host,
в общем последовательность действий состоит из нескольких простых шагов:
1. При формировании СКД нужно в объединяемые ячейки добавить текст с маркером объединения. В моем примере это сделано через вычисляемые поля. см. прикрепленный рисунок
2. В обработчике ПриКомпоновкеРезультата() выставляем СтандартнаяОбработка = ЛОЖЬ и формируем табличный документ
3. Вызываем специальную функцию ОбъединтьЯчейкиВТабличномДокументе(ТабличныйДокумент, МаркерОбъединения), которая находит ячейки, содержащие указанный маркер и объединяет те их них, которые содержат маркер объединения, содержат одинаковый текст и находятся рядом друг с другом.
4. Удаляем маркер объединения с помощью функции ЗаменитьТекстВТабличномДокументе(ТабличныйДокумент, ПодстрокаПоиска, ПодстрокаЗамены), которая ищет подстроку поиска по всем ячейкам табличного документа и заменяет ее на подстроку замены. В нашем случае на пустую строку
Прикрепленные файлы:
Дмитрий74Чел; Lacoste4life; SagittariusA; myoker; user974746; svilsa; mars2005; dreamerr7; kosikov_oleg; +9 Ответить
11. akim2040 41 24.01.18 06:32 Сейчас в теме
(7) У меня почему при добавлении + "{ОБЪЕДИНИТЬ}" выдаёт ошибку Неверные параметры "+"
16. dakork 33 06.03.19 18:04 Сейчас в теме
17. Max91 21.05.19 19:30 Сейчас в теме
(11) у меня такая же ошибка: Неверные параметры "+".
Подскажи, пожалуйста, как удалось решить?
12. akim2040 41 24.01.18 09:35 Сейчас в теме
15. dakork 33 06.03.19 18:00 Сейчас в теме
(12)
(11)У меня такая же фигня. Не подскажешь?
18. AruslanM 23.09.19 13:19 Сейчас в теме
19. dakork 33 24.09.19 12:40 Сейчас в теме
(18)Спасибо! Выше (16) написал, что разобрался сам)))
21. mburkin 11 13.01.21 11:53 Сейчас в теме
(12) вот у меня такая же ошибка, читаю - такие все красавчики, разобрались :) так почему бы не написать же в чём было дело ...
Дмитрий74Чел; Lacoste4life; Release; +3 Ответить
22. mburkin 11 13.01.21 12:23 Сейчас в теме
(21) Отвечаю сам себе и следующим читателям. В моем случае было написано

Период + "{ОБЪЕДИНИТЬ}"


сделал так
Строка(Период) + "{ОБЪЕДИНИТЬ}"


ошибка ушла, но объединилось.. не заработал способ...
Дмитрий74Чел; myoker; +2 Ответить
23. mburkin 11 13.01.21 14:02 Сейчас в теме
(22)
ошибка ушла, но объединилось.. не заработал способ...


а вот теперь заработал!!! только я сделал не через вычисляемые поля, а через макет. скрины макета и результата вкладываю

и как было по умолчанию тоже прикладываю
Прикрепленные файлы:
13. akim2040 41 24.01.18 10:57 Сейчас в теме
(7) Можете ещё подсказать, при использовании Вашего примера, отключается возможность расшифровки полей. в какую сторону копать?
Прикрепленные файлы:
ВнешнийОтчет1.erf
14. json 3308 24.01.18 11:14 Сейчас в теме
(13) расшифровка отключается потому что в ячейке выводится строка, а не ссылка.
Также при СтандартнаяОбработка = Ложь, нужно передавать расшифровку в процедуру по выводу отчета:

Процедура ВывестиСКДВТабличныйДокумент(МакетСКД, ТабличныйДокумент, Настройки, ДанныеРасшифровки = Неопределено, ВнешниеНаборыДанных = Неопределено) 
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	
	МакетКомпоновки = КомпоновщикМакета.Выполнить(МакетСКД, Настройки, ДанныеРасшифровки);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки,Истина);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
	
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецПроцедуры
Показать
ketr; 1C_Lab; +2 Ответить
24. 1C_Lab 20 12.08.21 11:31 Сейчас в теме
(14) Спасибо автору за этот способ и отдельное спасибо за комментарий про расшифровку. Может кому-то поможет поэтому добавлю, что для корректной работы расшифровок и чтобы не добавлять дополнительных полей использовал "выражение представления" вместо "вычисляемых полей"
Прикрепленные файлы:
SagittariusA; myoker; ketr; Egor_R; +4 Ответить
2. Acasta 1 31.08.16 15:40 Сейчас в теме
А если не вместе сделать в группировке Прием пищи, Блюдо, а две разные группировки, Прием пищи выше, чем блюдо. И из выбранных полей убрать Блюдо.
4. kosikov_oleg 01.09.16 07:12 Сейчас в теме
(2) Acasta,
Группировка будет слева, а не сверху
8. kosikov_oleg 01.09.16 08:32 Сейчас в теме
Спасибо! Все понял. Не сразу заметил, что модуль объекта не пустой.
Еще раз спасибо!
9. kosikov_oleg 01.09.16 09:37 Сейчас в теме
Я в восторге от элегантности решения задачи!
10. json 3308 01.09.16 09:43 Сейчас в теме
20. user1123998 04.11.20 16:37 Сейчас в теме
(1) Добрый день! Вам удалосьб решить данную задачу?
25. Egor_R 23.08.21 18:31 Сейчас в теме
Добрый день, коллеги!

Задачу решить удалось.

1. Добавляем "Наборы данных" > "Выражение представления":

Строка(ЗадачаСсылка) + "{ОБЪЕДИНИТЬ}"

Важно: в вычисляемые поля и в макеты ничего добавлять не нужно.

2. При программном формировании отчета указываем "ДанныеРасшифровки"

3. Все отлично работает. Поля объединяются (проверено для нескольких строк в разных столбцах). Расшифровка работает. Переход по ссылке работает. Скрины во вложении.

kosikov_oleg, 1C_Lab, спасибо за отличную идею и код!
Прикрепленные файлы:
Lacoste4life; SagittariusA; +2 Ответить
26. Lacoste4life 22.11.22 13:30 Сейчас в теме
(25) помог ваш метод, спасибо!
Оставьте свое сообщение

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