Вход | Регистрация
 

Программно изменить структуру СКД

Программно изменить структуру СКД
Я
   ac13
 
10.04.19 - 12:59
Есть СхемаКомпоновкиДанных. Можно ли изменить её структуру при формировании отчета?

Например, есть запрос:
[1c]"ВЫБРАТЬ
|    РеализацияТоваровУслуг.Склад
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|
|СГРУППИРОВАТЬ ПО
|    РеализацияТоваровУслуг.Склад"[/1c]

А мне надо, чтобы на месте РеализацияТоваровУслуг.Склад было:
[1c]ВЫБОР
    КОГДА РеализацияТоваровУслуг.Склад.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
        ТОГДА РеализацияТоваровУслуг.Склад.Родитель.Родитель
    ИНАЧЕ ВЫБОР
            КОГДА РеализацияТоваровУслуг.Склад.Родитель <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
                ТОГДА РеализацияТоваровУслуг.Склад.Родитель
            ИНАЧЕ РеализацияТоваровУслуг.Склад
        КОНЕЦ
КОНЕЦ[/1c]

Как мне при определенных условиях программно изменить структуру СКД?
 
 
   ac13
 
1 - 10.04.19 - 13:00
почему [1c] - не работает?
   FIXXXL
 
2 - 10.04.19 - 13:05
   catena
 
3 - 10.04.19 - 13:06
   МихаилМ
 
4 - 10.04.19 - 13:11
   toypaul
 
5 - 10.04.19 - 14:20
(0) можно
(3) в тонком клиенте не сработает
   toypaul
 
6 - 10.04.19 - 14:21
пример из (2) сработает в тонком клиенте
   ac13
 
7 - 10.04.19 - 15:19
не очень понял как это реализовать, в примерах немного не то, что мне нужно.
У меня есть поле структуры. По умолчанию запрос выглядит так:

"ВЫБРАТЬ
|    РеализацияТоваровУслуг.Склад 
|ИЗ 
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
| 
|СГРУППИРОВАТЬ ПО 
|    РеализацияТоваровУслуг.Склад"

А мне надо, чтобы при некоторых условиях запрос работал так:


"ВЫБРАТЬ
|    (ВЫБОР 
|    КОГДА РеализацияТоваровУслуг.Склад.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) 
|        ТОГДА РеализацияТоваровУслуг.Склад.Родитель.Родитель 
|    ИНАЧЕ ВЫБОР 
|            КОГДА РеализацияТоваровУслуг.Склад.Родитель <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) 
|                ТОГДА РеализацияТоваровУслуг.Склад.Родитель 
|            ИНАЧЕ РеализацияТоваровУслуг.Склад 
|        КОНЕЦ 
|КОНЕЦ) КАК Склад 
|ИЗ 
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
| 
|СГРУППИРОВАТЬ ПО 
|    РеализацияТоваровУслуг.Склад"
   toypaul
 
8 - 10.04.19 - 15:44
(7) а ты хотел чтобы разжевали и в рот положили что ли? в (2) все написано, надо только чуть чуть подумать самому
   FIXXXL
 
9 - 10.04.19 - 16:59
(7) какое "поле структуры?
как вариант, прямо в тексте запроса оборачиваешь свой Склад еще в один
|ВЫБОР КОГДА &ПараметрВыбораСклада ТОГДА РеализацияТоваровУслуг.Склад ИНАЧЕ     (ВЫБОР 
|    КОГДА РеализацияТоваровУслуг.Склад.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) 
|        ТОГДА РеализацияТоваровУслуг.Склад.Родитель.Родитель 
|    ИНАЧЕ ВЫБОР 
|            КОГДА РеализацияТоваровУслуг.Склад.Родитель <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) 
|                ТОГДА РеализацияТоваровУслуг.Склад.Родитель 
|            ИНАЧЕ РеализацияТоваровУслуг.Склад 
|        КОНЕЦ 
|КОНЕЦ) КАК Склад
   ac13
 
10 - 10.04.19 - 17:24
проблему решил заменой части текста запроса. теперь другая проблема
есть типовой отчет, у него несколько сохраненных вариантов.
Например - "Отчет по складу", сохранен вариант "Отчет по складу 1".
Как ПриКомпоновкеРезультата понять какой вариант настроек выбрал пользователь, чтобы грузить соответствующий текст запроса?
 
 Рекламное место пустует
   fisher
 
11 - 10.04.19 - 17:43
(10) "КлючТекущегоВарианта" можно получить на клиенте и пробросить в ПриКомпоновке через ДополнительныеСвойства у настроек КомпоновщикаНастроек.
Но тебе это не нужно. Ты же можешь просто завязать вариант получения склада на параметр запроса (параметр СКД) недоступный пользователю, который параметрически устанавливать в разные значения в настройках разных вариантов.
   fisher
 
12 - 10.04.19 - 17:45
Если это чисто пользовательские варианты, тогда просто "отдать пользователю" параметр-селектор.
   fisher
 
13 - 10.04.19 - 17:48
Собственно, в (9) уже предложили.
   ac13
 
14 - 10.04.19 - 17:49
(11) типовую настройку СКД менять нельзя, нужно всё решить в коде
   ac13
 
15 - 10.04.19 - 17:53
в самом начале ПриКомпоновкеРезультата нужно определить, что за вариант настроек открыт, а потом уже выполнять манипуляции с текстом запроса, выбором склада и т.д.
   fisher
 
16 - 10.04.19 - 17:54
(14) Почему нельзя? По-моему, добавление нового параметра не должно сломать работу с уже сохраненными настройками.
   ac13
 
17 - 10.04.19 - 17:56
(16) добавить то можно, но мне нельзя трогать типовую СКД, её нужно остаивть без изменений
   МимохожийОднако
 
18 - 10.04.19 - 19:19
(17) Сохрани варианты настроек в отдельные макеты, файлы или хранилища и забирай оттуда по условиям. У меня так реализовано формирование прайсов и отчетов, СКД которых хранятся в реквизитах справочника "Прайсы к отправке". Берешь новый элемент, загружаешь подготовленный в консоли СКД в реквизит справочника и перед рассылкой формируешь программно.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует