При написание очередного отчета столкнулся с проблемой, решение нашел, но хочу узнать, существуют ли другие варианты.
Постановка задачи (упрощенно, конечно все намного сложнее):
В отчете параметрами задается дата и тип цен.
Данные получаются запросом.
При выводе используется группировка по строкам, данные выводятся по номенклатуре с иерархией.
Количество, стоимость и цена - это ресурсы. Стоимость - вычисляемое поле = Кол-во * Цена.
Задача: нужно, чтобы при выводе отчета в заголовках в полях Стоимость и Цена текст выводился согласно заданному параметру ТипЦен.
Я знаю 2 способа решения:
1. В процедуре ПриКомпоновкеРезультата изменить программно.
2. Нарисовать полностью свой макет заголовка группировки, в нем текст колонок Стоимость и Цена заполняются по шаблону (так я и реализовал в этот раз).
Хочу поинтересоваться у коллег, есть ли другие способы решения задачи.
Работал еще в 2-х направлениях:
1. Условное оформление. Можно создать его для группировки с областью использования "в заголовке полей". Вопрос: можно ли текст, который задается на вывод при условном оформлении как-то сформировать исходя из значения параметра (или вычисляемого поля)?
вот здесь по контексту сообщения 8 получается, что можно, но картинка не открывается, а больше в сети информации я не нашел...
2. Через собственный макет. Но не рисовать макет заголовка для всей группировки, а только для двух нужных полей из заголовка. Пробовал всяко разно, но таким образом решить не смог.
Предвидел такой ответ, поэтому описал в начальных условия: При выводе используется группировка по строкам, данные выводятся по номенклатуре с иерархией. :)
Задачу я в любом случае решил.
Ответ на вопросы 1-2 которые я задал интересует с точки зрения саморазвития, поиска истины, минимизации трудозатрат при разработки в будущем и так далее...
(4) Можно в Компоновщике найти это поле и установить ему нужный заголовок.
ЗаголовкиПолей = Новый Соответствие;
Для Каждого ДоступноеПолеВыбора Из КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы Цикл
Если ДоступноеПолеВыбора.Заголовок = "Цена" Тогда
ЗаголовкиПолей.Вставить(ДоступноеПолеВыбора.Поле, НовыйЗаголовокЦена);
КонецЕсли;
Если ДоступноеПолеВыбора.Заголовок = "Стоимость" Тогда
ЗаголовкиПолей.Вставить(ДоступноеПолеВыбора.Поле, НовыйЗаголовокСтоимость);
КонецЕсли;
КонецЦикла
Для Каждого ВыбранноеПоле Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
НовыйЗаголовок = ЗаголовкиПолей.Получить(ВыбранноеПоле.Поле);
Если НовыйЗаголовок = Неопределено Тогда
Продолжить;
КонецЕсли;
ВыбранноеПоле.Заголовок = НовыйЗаголовок;
КонецЦикла;
(5) Про такой вариант я знаю, но не описал его среди найденных мною способов.
Так тоже можно, но не хотел возиться с программным выводом.
В голове просто не укладывается, что 1С не предусмотрели простого решения, не связанного с программным выводом. Так и кажется, что оно лежит на поверхности, но ускользает от взора... Хотя... Это же 1С! :)
(4) "Вопрос: можно ли текст, который задается на вывод при условном оформлении как-то сформировать исходя из значения параметра (или вычисляемого поля)?"