![]() |
![]() |
![]() |
|
СКД: как передать необязательный параметр в выражение в ВычислитьВыражение | ☑ | ||
---|---|---|---|---|
0
CaIIIka
07.07.25
✎
17:37
|
Здравствуйте! Задача показалась простая, но решить нормальным способом не смог.
Есть вычисляемое поле, в нем функция ВычислитьВыражение, которая вызывает функцию общего модуля, передавая в нее параметры: часть из постоянных параметров, часть из группировок. Чет не пойму, как передать в функцию общего модуля параметр отчета, который нельзя делать обязательным (использование-Авто). Тип параметра - СправочникСсылка. Фигурные скобки, как в запросе, не дает использовать. Если параметр не используется, то отчет ругается. ВычислитьВыражение("РаботаСКонтрагентами.Просрочка(&Период.ДатаНачала,&Период.ДатаОкончания,измКлиент,измПредприятие,&НужныйПараметр,Сумма(ресСуммаБазКонечныйОстаток),&ПоПоставщикам)","измКлиент","Группировка") измКлиент и измПредприятие - поля запроса основного набора данных &НужныйПараметр - необязательный параметр отчета (Использование-Авто) Весь Инет перерыл, не нашел ничего. Выдает либо как ВычислитьВыражение использовать в различных вариациях, либо как с параметрами работать. Нейро тоже ничего. ИИ от Гугл выдал конструкцию: ВЫБОР КОГДА &Параметр = НЕОПРЕДЕЛЕНО (или ЕСТЬ NULL) ТОГДА <Выражение при отсутствии параметра> ИНАЧЕ <Выражение с параметром> КОНЕЦ Но она тоже требует этот параметр, и ругается если не указан :) Пока есть идея сделать еще один набор данных с выборкой элементов нужного справочника в зависимости от указанного (или неуказанного) параметра, в новом запросе этот параметр загнать в фигурные скобки, передать полученный массив в функцию общего модуля и допилить ее, чтобы понимала тип переданного параметра (ссылка или массив данных). Но это показалось извращением. Может есть способ проще? Если что, 1С 8.2.19.130 (вдруг в "тройке" чего-то добавили). |
|||
1
timurhv
07.07.25
✎
18:01
|
РаботаСКонтрагентами.Просрочка - там запрос чтоли?
Раз конфига древняя и не обновляется, лучше будет сделать через дополнительный набор данных - как вы и подумали. Только, не понял зачем нужна дальнейшая передача и допил. Выбирайте сразу необходимые данные. |
|||
2
CaIIIka
07.07.25
✎
18:16
|
(1) Запросы только в наборах данных в СКД. РаботаСКонтрагентами.Просрочка считает просрочку за период по контрагенту, организации и подразделению (тот самый параметр). Контрагент и организация - поля запроса СКД, они есть в выборке. Подразделение - необязательный параметр отчета.
|
|||
3
vicof
07.07.25
✎
18:33
|
(0) Обязательное и заполненное несколько разные вещи.
Обязательным его легко можно сделать в скдшке, а заполненность проверять в функции подсчета просрочки. |
|||
4
CaIIIka
07.07.25
✎
18:34
|
(2) Обязательным его делать нельзя. Я в (0) говорил (3 абзац).
|
|||
5
CaIIIka
07.07.25
✎
18:37
|
Сведу задачу к минимуму:
Вычисляемое поле: ВычислитьВыражение("ОбщМодуль.Просрочка(&НужныйПараметр)","измКлиент","Группировка") &НужныйПараметр - Параметр отчета. Использование:Авто. Как сделать, чтоб не ругалось, когда параметр не выбран (галка на параметре не стоит)? |
|||
6
youalex
07.07.25
✎
18:38
|
Технически можно попробовать добавить обязательный параметр (использовать Всегда), с выражение = &Подразделение (твой параметр)
|
|||
7
CaIIIka
08.07.25
✎
07:39
|
(6) Всё гениальное - просто! И, главное, работает! В общий модуль всегда ссылка уходит: выбранная или пустая. Не пришлось шарады с набором данных городить.
Спасибо большое! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |