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

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

Программно изменить структуру СКД
Я
   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 или кнопку "Обновить" в браузере.