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

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


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


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

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

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


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