Как оформить заголовок колонки итогов в отчёте с СКД

1. vendim 24 30.06.15 10:58 Сейчас в теме
Как отформатировать заголовок колонки итогов так, чтобы убрать слово "Сумма", а слово "Итого" разместилось по центру объединённой ячейки? Как видно из рисунка, в колонках группировок это удалось сделать. А как это сделать в итоговой колонке?
Прикрепленные файлы:
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. dj_serega 390 30.06.15 11:04 Сейчас в теме
(1) vendim, Можно попробовать через макет. Но как сделать не скажу :) Ибо это только идея.
18. TariK 29.03.23 19:19 Сейчас в теме
(1) Кто знает, как убрать "Итого" ????? Отчет типовой, надо в режиме предприятия это сделать через настройку технического специалиста. Все перерыл, не нашел эту группировку. 1С ЗУП 3.1 ДанныеДляОтраженияРасчетовЗарплатыВБухучете
2. spezc 782 30.06.15 11:00 Сейчас в теме
решение в лоб. в процедуре ПриКомпоновкеРезультата выполнять СКД программно и выполнять постобработку итогового ТабличногоДокумента: найти ячейку Итого объединить ее с нижестоящей ячейкой
4. vendim 24 30.06.15 13:34 Сейчас в теме
(2) Попробовал сделать. Неплохое решение. Только в итоговом табличном документе есть ещё итоговая строка, где тоже встречается слово "Итого". Поэтому ищу область со словом "Сумма" и объединяю с ячейкой сверху. Но у меня теперь другая беда, которая не позволяет применить этот вариант. В отчёте на основе одной и той же СКД используется множество вариантов отчёта с разными вариантами настроек. Выбор вариантов программный. Видимо поэтому не срабатывает процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка).

(3) Через макет не получается - колонка искомой ячейки в зависимости от данных меняется, поэтому в макете нельзя будет указать область.

А есть ещё какие-нибудь варианты решения задачи? Как-то же это делается? Мне кажется это распространённая задачка.
7. dj_serega 390 30.06.15 14:22 Сейчас в теме
(4) vendim,
колонка искомой ячейки в зависимости от данных меняется

Я думал там можно только на "Итог" прикрутить макет. Если так нельзя тогда да... Думать дальше нужно.
5. PetroP 30.06.15 13:45 Сейчас в теме
Видимо поэтому не срабатывает процедура ПриКомпоновкеРезультата

Процедура предопределенная - срабатывает всегда. Другое дело, может при расшифровке формируется другой отчет.
6. vendim 24 30.06.15 13:57 Сейчас в теме
(5) PetroP, в отчёте не используются расшифровки. В ПриКомпоновкеРезультата воткнул для проверки Сообщить("..."). Не срабатывает. И отладчиком не заходит.
9. PetroP 30.06.15 14:26 Сейчас в теме
(6) vendim, значит используется не стандартное действие, а свое. Ищите обработчики начиная с кнопки "Сформировать".
10. vendim 24 30.06.15 15:12 Сейчас в теме
(9) PetroP, Совершенно верно. Отчёты запускаются не стандартной кнопкой "Сформировать", а каждый отчёт запускается собственной кнопкой на форме. Из модуля формы вызывается нужная функция в модуле объекта, формируется отчёт и выводится в новый табличный документ. Получается что в коде обработки кнопки после возврата из функции нужно вставлять код объединения ячеек.
11. spezc 782 30.06.15 15:18 Сейчас в теме
(10) ну тогда смотрите процедуру этой кнопки, смотрите код, который программно формирует СКД и вот там вставляйте свой кусок, который обрабатывает выходной ТабличныйДокумент
12. vendim 24 30.06.15 15:46 Сейчас в теме
(11) spezc, Нашёл. После вызова функции формирования табличного документа (к этому моменту он уже сформирован и выведен) вставил заветную примочку:
	ТабДок = ОтчётОбъект.СформироватьОтчётПоДокументамНаСервере(); // вызов функции формирования отчёта

	Если ТабДок.НайтиТекст("Сумма") <> Неопределено Тогда          // примочка
		ИмяЯчейки 	= ТабДок.НайтиТекст("Сумма").Имя;
		ДлинаИмени 	= СтрДлина(ИмяЯчейки);
		ПозицияС 	= Найти(ИмяЯчейки,"C");
		НКолонки 	= Сред(ИмяЯчейки, 2, ПозицияС-2);
		НСтроки 	= Сред(ИмяЯчейки, ПозицияС+1, ДлинаИмени-ПозицияС);
		Область 	= ТабДок.Область(Число(НСтроки)-1, Число(НКолонки), Число(НСтроки), Число(НКолонки));
		Область.Объединить();
	КонецЕсли;
Показать

Код отрабатывает, ошибки не появляются, но в табличном документе ячейки так и остаются разъединёнными. Может после команды объединения надо каким-то образом обновить ТабДок. Но такого метода не нашёл. Попробовал перенести примочку в саму функцию перед выводом или после вывода - одна халва.
13. spezc 782 30.06.15 15:51 Сейчас в теме
(12) а отладчик что говорит? в конструкцию если заходит вообще? область находится?
14. vendim 24 30.06.15 15:54 Сейчас в теме
(13) spezc, Да, отладчик проходит как надо, позиции ячеек вычисляются замечательно, на Область.Объединить() ничто не ругается. А результат не меняется. Может надо поменять какие-нибудь общие свойства табличного документа? Защита и ТолькоПросмотр ситуацию не меняют.
8. spezc 782 30.06.15 14:25 Сейчас в теме
а что значит выбор вариантов программный? может у вас и формирование отчета тоже программное (в этом случае конечно ПриКомпоновкеРезультата вызываться не будет)?
15. spezc 782 30.06.15 16:01 Сейчас в теме
	Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Двойная,1); 
	
	//Объединяем в соответствии с параметрами координат
	Область = ТабличныйДокумент.Область("R"+Формат(К.НачальнаяСтрока, "ЧГ=")+"C"+(К.НачальнаяКолонка)+":R"+Формат(К.НачальнаяСтрока+КоличествоСтрок-1, "ЧГ=")+"C"+(К.НачальнаяКолонка+К.Номер-1));	
    Область.Объединить();
	Область.ГраницаСнизу = Линия;


мне кажется R и C забыли
16. spezc 782 30.06.15 16:02 Сейчас в теме
а, у вас другой формат получения области. попробуйте все-таки с R и С
17. vendim 24 30.06.15 16:21 Сейчас в теме
(16) spezc, Спасибо огромное! Заработало! И сразу выявилась ошибка. :-) Перепутал при вычислении адреса ячейки строки с колонками. Правильный код:
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
	ТабДок.ОтображатьСетку = Ложь;
	Если ТабДок.НайтиТекст("Сумма") <> Неопределено Тогда
		ИмяЯчейки 	= ТабДок.НайтиТекст("Сумма").Имя;
		ДлинаИмени 	= СтрДлина(ИмяЯчейки);
		ПозицияС 	= Найти(ИмяЯчейки,"C");
		НСтроки 	= Сред(ИмяЯчейки, 2, ПозицияС-2);
		НКолонки 	= Сред(ИмяЯчейки, ПозицияС+1, ДлинаИмени-ПозицияС);
		Область = ТабДок.Область("R"+Формат(Число(НСтроки)-1, "ЧГ=")+"C"+Формат(НКолонки, "ЧГ=")+":R"+Формат(НСтроки, "ЧГ=")+"C"+Формат(НКолонки, "ЧГ="));
		Область.Объединить();
		Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
		Область.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
	КонецЕсли;
	ТабДок.Показать();
Показать
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)