TGViewer
Жёлтый чайник 1С (Черненко Виталий) Жёлтый чайник 1С (Черненко Виталий) @juniorones · 5.3K subscribers
Post #465 2.55K
Как в вычисляемых полях СКД вызвать метод самого отчета (даже внешнего)? .

Костыль, насколько я понимаю, древний, но не все о нём знают.

Как многие помнят, в отчёте на СКД можно в вычисляемых полях вызывать функции серверных модулей.
Но иногда очень нужно срочно сделать внешний отчет, который бы вызывал в вычисляемых полях свой собственный метод.
Для таких случаев и понадобится наш костыль 👀

1️⃣ В СКД добавить специальный параметр без типа и с ограничением от пользователя. Пусть он будет называться "Объект"

2️⃣ В событии ПриКомпоновкеРезультата() нам нужно:
2.1 Использовать программный вывод СКД
2.2 При инициализации ПроцессораКомпоновкиДанных использовать параметр ВозможностьИспользованияВнешнихФункций = Истина
2.3 (!) Перед выполнением компоновщика макета в настройки передать параметр "Объект" = ЭтотОбъект (т.е. объект отчета)
2.4 После формирования результата рекомендую очистить параметр в ДанныеРасшифровки.Настройки, чтобы не было попыток платформы сериализовать несериализуемое.

3️⃣ В самой СКД в вычисляемых полях появится доступность использовать параметр &Объект, который будет содержать объект текущего отчета. К сожалению, СКД не даёт возможности выполнить метод отчета напрямую, поэтому нам всё равно понадобится метод общего модуля конфигурации. Но в БСП для этого есть подходящие. Например:

ОбщегоНазначения.ВызватьФункциюОбъекта(&Объект, "МойМетод", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КакоетоПоле))


😳 Как это всё работает?
1. В настройки СКД передаётся параметр "Объект" с объектом текущего отчета
2. В вычисляемом поле вызывается метод отчета через "буферный" метод БСП. Если его нет, то тут уж нужно добавить свой расширением. К сожалению =(
3. После формирования отчета, чтобы небыло несериализуемых значений, мы удаляем отчет из параметров настроек СКД.

Всегда ли это работает?
🤷‍♂️ Не знаю. Штука древняя, но на уровне смекалки =)

Есть способ лучше?
❕ Пишите в комментариях. Чую, что можно как-то заставить СКД выполнить метод отчета без метода общего модуля...

Пример отчета в комментариях 👇
@JuniorOneS
  • 🔥 23
  • 👍 9
  • 👏 5
  • 🤔 2
  • ❤ 1
  • 🏆 1
More from @juniorones
  1. Sep 7, 2026🤖 1С-разработка с ИИ По советам прошел обучение на курсе Владимира Харина. Могу сказать,…
  2. Jul 15, 2026Post #768
  3. Jun 11, 2026🚀 Записался на вахту 18 июня стартует уже третий поток у Владимира Харина на курсе «1С-ра…
  4. Jun 5, 2026Нашел себе новое задротское хобби (а планировал пойти в спортзал) - ардуино. Давно погляды…
  5. Jun 1, 2026📈 Оптимизация настроек СКД 🧲😺 Внутри Магнита огромный лес легаси кода. И иногда мы им д…
  6. Apr 27, 2026⚫️️️️️️️️️️️️️️️️️️️️️️ 1С DAY от MAGNIT TECH: погружение в практику и технологии! ️️️️Вст…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →