Вычисление в поле выражения СКД

1. SantiouS 14.04.20 13:45 Сейчас в теме
В запросе я получаю в колонку названия торговых точек:
- Петров 290
- Васильев 27;
- Дмитрий 78;
Цифрами является номер торговой точки.
Цель: вывести в столбец номера торговых точек.
Я создал вычисляемое поле в скд в котором пытаюсь обратиться к функции, написанной мною, в модуле объекта отчёта, но получаю ошибку.

Если бы я написал эту функцию в общий модуль, например с названием "ОбщийМодуль", а в выражение указал бы: "ОбщийМодуль.ПолучитьНомерМагазина(Магазин)", то все работало бы. Вот мне не понятно, как обратиться с выражения не к общему модулю а к модулю объекта. Не хочу выносить функцию в общие модули, хочу оставить ее в рамках отчёта.

Думаю, текст функции не принципиален, но все же приложу его:
Функция ПолучитьНомерМагазина(Магазин) Экспорт	
	ВыхСтрока="";
	Для п=1 По СтрДлина(Магазин) Цикл
		Симв=Сред(Магазин,п,1);
		Если Симв>="0" И Симв<="9" Тогда
			ВыхСтрока=ВыхСтрока+Симв;
		КонецЕсли;
	КонецЦикла;
	Возврат ВыхСтрока;	
КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. VictorRGB2 14 14.04.20 13:59 Сейчас в теме
(1) СКД, вроде как, поддерживает обращение только к экспортным функциям общих модулей

как вариант чтобы не тащить функцию в общий модуль, выполнить предварительный запрос и заполнить временную таблицу результатом, где пересчитать что вам надо и как надо, а СКД уже натравить на временную таблицу
VoVo; DenisCh; alex-l19041; SantiouS; +4 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VictorRGB2 14 14.04.20 13:59 Сейчас в теме
(1) СКД, вроде как, поддерживает обращение только к экспортным функциям общих модулей

как вариант чтобы не тащить функцию в общий модуль, выполнить предварительный запрос и заполнить временную таблицу результатом, где пересчитать что вам надо и как надо, а СКД уже натравить на временную таблицу
VoVo; DenisCh; alex-l19041; SantiouS; +4 Ответить
3. SantiouS 14.04.20 14:09 Сейчас в теме
(2) Спасибо за комментарий. Не хотелось скд обрабатывать программно и загонять описанный "Объект". В общем модуле оказалось есть такая функция, но не экспортная. Обновил общий модуль и все работает. Жаль что нельзя написать все напрямую в модуль объекта.
4. ZergKRSK 129 14.04.20 15:48 Сейчас в теме
(3)
Жаль что нельзя написать все напрямую в модуль объекта.

Можно, я в модуле объекта отчет делал функцию и пользовался ей в СКД.
5. SantiouS 15.04.20 12:42 Сейчас в теме
(4) Как Вы к ней обращались из поля выражения СКД?
6. ZergKRSK 129 15.04.20 18:00 Сейчас в теме
(5) отчет был встроен в конфу. Обращался так
МойОтчёт.МояФункция()
7. SantiouS 16.04.20 08:07 Сейчас в теме
(6) Функция была в модуле объекта или модуле менеджера? Уточните пожалуйста.
8. ZergKRSK 129 16.04.20 12:28 Сейчас в теме
(7) модуль менеджера отчета. Функция экспортная.
Обращение правильное будет так:
Отчеты.МойОтчёт.МояФункция()
SantiouS; +1 Ответить
9. SantiouS 16.04.20 13:21 Сейчас в теме
(8) Спасибо. Сохранил себе. Если отчёт будет в "Дополнительные отчёты и обработки", то есть не имея "модуля менеджера"(не состав конфигурации), то только вызов экспортных функций с общего модуля?
10. ZergKRSK 129 19.04.20 15:48 Сейчас в теме
11. dhurricane 19.04.20 16:40 Сейчас в теме
(1) Если Вам необходимо извлечь из строки лишь цифры, Вы можете попробовать использовать одно из представленных ниже выражений для вычисляемых полей:

Вариант 1 (для типовых)
СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими(
	СтроковыеФункцииКлиентСервер.ЗаменитьОдниСимволыДругими("0123456789", Магазин.Наименование, ""),
	Магазин.Наименование,
	"")

Вариант 2 (для посвежее платформ)
СтрСоединить(СтрРазделить(Магазин.Наименование, СтрСоединить(СтрРазделить(Магазин.Наименование, "0123456789"))))
SantiouS; +1 Ответить
12. soldatkin 11 17.11.22 14:01 Сейчас в теме
также в вычисляемых полях можно обратить к процедуре в модуле менеджера объекта
строка(Справочники.Номенклатура.СтавкаНДС(Номенклатура, &Период))
Прикрепленные файлы:
Оставьте свое сообщение

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