Поток вопросов по СКД в Мастер-группе не прекращается. Сегодняшняя подборка тому подтверждение. Вопросы связаны и с платформенными изменениями самой системы компоновки данных, и с развитием БСП, и с расширением практик применения СКД в современных типовых решениях.
Вопрос №1: “Почему могут быть не доступны варианты отчетов на СКД в пользовательском режиме?”
Ответ
Если такая база базируется на БСП, то тут еще могут влиять механизмы БСП. Например, пользователю по ограничениям доступа недоступен конкретный вариант отчета, поэтому он его и не видит. Также для подсистемы БСП “Варианты отчетов” в общем модуле ВариантыОтчетовПереопределяемый в процедуре НастроитьВариантыОтчетов нужно явно описывать используемые варианты отчетов и запустить приложение с ключом ЗапуститьОбновлениеИнформационнойБазы.
Пример подключения отчетов к подсистеме “Варианты отчетов” есть на странице нашего сайта – Подключение отчетов к подсистеме “Варианты отчетов”. Возможно, в вашем случае какое-то из описанных действий не было выполнено.
Вопрос №2: “Можно ли делать отбор на уровне детальных записей по вычисляемым полям в СКД?”
(нажмите, чтобы увеличить картинку)
Ответ
Ошибка не будет возникать, если для отбора на уровне детальных записей изменить настройку Применение – указать значение “После группировки или для иерархии”:
(нажмите, чтобы увеличить картинку)
Появление ошибки связано с использованием в выражении для вычисляемого поля функции ВычислитьВыражение с указанными параметрами Начало и Конец, которая должна быть вычислена на основании только некоторых записей группировки.
Вопрос №3: “В каком случае можно установить значения параметров в процедуре ПередКомпоновкойМакета модуля менеджера отчета?”
- Эта процедура вызывается “сама”? То есть, если я сделаю такую процедуру в модуле менеджера, мне не нужно будет прописывать её вызов? Смущает, что в списке предопределенных возможных процедур нет такой (например, ПриКомпоновкеРезультата в модуле объекта есть). Прилагаю скриншот, поясняющий, какой список имею в виду.
- Переопределение параметров правильно делать именно в этой процедуре? Почему не в процедуре ПриКомпоновкеРезультата модуля объекта или в модуле формы?
- Если у меня внешний отчет, то модуля менеджера в нем нет – значит, такую процедуру я не могу использовать?
Ответ
- В этом видеоуроке демонстрируется типовая конфигурация Бухгалтерия предприятия. Она базируется на Библиотеке стандартных подсистем (БСП), которая содержит отдельную подсистему для работы с отчетами. В этой подсистеме реализовано большое количество универсальных методов. Рассмотрим на примере отчета из видеоурока. В модуле отчета есть код, который вызывает метод общего модуля:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) // Отключаем стандартную обработку, т.к. формировать отчет будем "вручную". СтандартнаяОбработка = Ложь; БухгалтерскиеОтчетыВызовСервера.ОбработкаСобытияПриКомпоновкеРезультата(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки); КонецПроцедуры
А в общем модуле БухгалтерскиеОтчетыВызовСервера есть функция ПодготовитьОтчет, в которой содержится следующий код:
Если ПараметрыИсполненияОтчета.ИспользоватьПередКомпоновкойМакета Тогда МенеджерОтчета.ПередКомпоновкойМакета(ПараметрыОтчета, СхемаКомпоновкиДанных, КомпоновщикНастроек); КонецЕсли;
Следовательно, в модуле менеджера отчета можно доработать компоновщик, например, установить значения параметров. Инициируется этот вызов в процедуре ПриКомпоновкеРезультата.
Подобные фрагменты кода есть и в других конфигурациях, основанных на БСП, например, в УТ 11. Получается, что для доработок отчетов на БСП есть универсальные точки входа, где можно размещать свой код. В отчетах для конфигураций не на БСП этот подход работать не будет.
- Это зависит от того, для какой конфигурации разрабатывается отчет. Если конфигурация создается с нуля, то такой метод из модуля менеджера просто некому будет вызвать. Если конфигурация базируется на БСП, то можно “подсмотреть” в типовых отчетах, как они разработаны. Также в документации по БСП, размещенной на сайте ИТС, можно изучить подробное устройство подсистемы Варианты отчетов.
- Да, во внешних отчетах и обработках в принципе не существует модуля менеджера.
Вопрос №4: “Как вывести изображение в колонтитулах отчета на СКД?”
Ответ
Да, начиная с платформы 8.3.15 появилась возможность добавить картинку в колонтитул.
В конфигураторе это можно сделать в меню Таблица – Настройки печати – Колонтитулы:
(нажмите, чтобы увеличить картинку)
Вопрос №5: “Каким образом можно программно получать настройки отчета на СКД?”
НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
Но во многих видео настройки получаются такой строкой:
НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;
или
НастройкиКомпоновки = КомпоновщикНастроек.Настройки;
И далее по этим настройкам формируется отчет. Почему так? Зачем нам могут быть нужны настройки, которые не содержат значений, заданных пользователем? В каких случаях и каким способом нужно получать настройки?
Ответ
Чтобы решить, какие именно настройки следует использовать, нужно задавать себе вопрос “Отчет с какими настройками мне нужно сформировать для решения поставленной задачи?”
- Чаще всего на практике нужно учитывать пользовательские настройки, значит, используем метод:
НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
В таком случае из компоновщика получаем настройки, которые уже включают в себя и пользовательские, и фиксированные настройки. С этими “результирующими” настройками компонуем отчет. В методе ПриКомпоновкеРезультата в модуле отчетов чаще всего встречается именно этот вариант
- Если нужно взять настройки не из компоновщика, а из схемы компоновки, то воспользуемся настройками по умолчанию:
НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;
Такой вариант встречается при компоновке из программного кода, например, когда на форме обработки компоновщик вообще не отображается. В таком случае удобно обратиться к настройкам, описанным непосредственно в схеме компоновки
- СКД часто используется в обработках – для заполнения ТЧ, списка справочников или документов для обработки. Настройки компоновщика размещаются на форме, пользователь может их редактировать – настраивать отборы по своему усмотрению. А пользовательские настройки в таком случае не используются, поскольку мы не отчет разрабатываем, а всего лишь обработку. Значит, можно взять настройки из компоновщика:
НастройкиКомпоновки = КомпоновщикНастроек.Настройки;
Профессиональная разработка отчетов в 1С 8.3 на СКД.
Добрый день!
Подскажите пожалуйста, проблема с округлением Вычисляемого поля в СКД:
Есть выражение которое рассчитывается так ВычислитьВыражение(“Сумма(СуммаАналитики)”,”Клиент”)/ВычислитьВыражение(“Сумма(СуммаАналитики)”,”Торговый”) (2400,51/477296,83)получается число 0,0050,
далее другое выражение Сумма(ВычислитьВыражениеСГруппировкойМассив(“Максимум(План)”,”Торговый”)) получается число 103 236,00, далее перемножаем между собой эти выражения, на калькуляторе получается 516,18,
а в самом отчете после формирования 519,21. Когда убираешь форматирование вычисляемого поля тогда после деления первого выражения получается 0,005029 и после перемножения на калькуляторе получается 519,17.
Как это победить? Т.е. СКД не умеет корректно округлять? Я уже пробовал и через окр() и через Выразить(МоеЧисло,”ЧИСЛО()15,2″) ничего не выходит, визуально в отчете первое выражение равно 0,0050
и соответственно при перемножении показатели отличаются если их перемножаешь на калькуляторе. Помогите пожалуйста если возможно!
Добрый день!
Без данных и конкретного отчета, конечно, трудно определить причину.
Пришла в голову идея, что разные результаты получаются, потому что
Пример.
Предполагаю, что разные числа перемножаются, поэтому и результаты разные.
Попробуйте упростить выражения для расчета итогов. Возможно, поможет набор данных – объект, данные для которого подготовить программно, а при помощи СКД только вывести результат.