Имя: Пароль:
1C
1С v8
Выгрузка всех полей запроса СКД в таблицу значений.
0 FAR_E_R
 
18.08.16
11:40
Добрый день!
Выгружаю результат запроса из СКД в таблицу значений по следующему варианту:

КомпоновщикМакета            = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных        = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных    = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ПроцессорВывода                = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ДанныеТЗ                    = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

Как сделать так чтобы в таблицу значений выгружались все поля запроса из СКД а не только те которые пользователь выбрал для в настройках СКД.
1 Cyberhawk
 
18.08.16
11:41
Сделай поля обязательными
2 FAR_E_R
 
18.08.16
11:46
(0) (1) В роли поставил галочку "обязательное", но не помогло...
3 тарам пам пам
 
18.08.16
11:47
(1) Не прокатит. В ТЗ выгружается все равно по настройкам варианта отчета, флажок "обязательное" влияет только на то, будет ли СКД исключать это поле из запроса, если оно не используется.

Поэтому единственный вариант - модифицировать КомпоновщикНастроек.Настройки, добавляя туда все нужные поля.
4 Cyberhawk
 
18.08.16
11:48
А зачем давать пользователю выбирать поля, если нужны все?
5 lodger
 
18.08.16
11:54
глупое предложение конечно, но может проще отдельно выдернуть запрос из СКД и выполнить его?
да, двойное обращение к бд, да, дольше, но и вы ответьте - зачем вам табзнач под скд? может вам и скд не особо нужно в таком случае?
скд оптимизирует запрос так, как ему заблагорассудится, отбрасывая ненужные ему поля из запроса.
6 FAR_E_R
 
18.08.16
11:57
Предполагалось использование двух схем компоновки данных.
В первой схеме выполняется запрос, который далее выгружается в таблицу значений, там обрабатывается и возвращается в СКД по вторую схему как внешний данные.
Ну, раз нельзя тогда оставлю как есть. Сейчас запрос выполняется отдельно от СКД и загружается в СКД как внешний данные. Но при такой схеме есть минус. Сложные отборы пользователя в СКД нужно преобразовывать в параметры внешнего запроса вручную. Я хотел, чтобы СКД выдавала в таблицу значений данные с учетом сложных отборов пользователей, но при этом, сохраняя все поля, даже если пользователь их скрыл.
7 LordCMEPTb
 
18.08.16
13:14
А что мешает для выгрузки в таблицу значений скопировать настройки компоновки, в которых указать все поля, и на этапе формирования макета компоновки дать именно эти настройки?
8 FAR_E_R
 
18.08.16
14:01
(7) Да, спасибо, попробую так, если получится, напишу...
9 Franchiser
 
гуру
18.08.16
14:12
(8) так напиши и будет счастье:
КомпоновщикМакета            = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных        = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
10 hitodom
 
18.08.16
14:26
(6) убери настройку палей с формы
11 hitodom
 
18.08.16
14:27
(9) а отборы?
12 DrZombi
 
гуру
18.08.16
14:36
(0) Формируй запрос в построителе.
Зачем тебе вообще такие сложности с СКД?

Ну коль так хочется, то готовь программно СКД с нужными полями :)
13 Franchiser
 
гуру
18.08.16
16:08
(11) ОК, если нужны отборы можно взять НастройкиПоУмолчанию и на них наложить только отборы и, при необходимости, пользовательские отборы.
14 Franchiser
 
гуру
18.08.16
16:11
(13) вообще я бы запретил в этом случае все настройки скд, вывел бы необходимые пользовательские отборы на форму и их крутил, если что-то сложно через внешний набор данных (Результат запроса) с передачей результата в компоновку
15 FAR_E_R
 
18.08.16
16:25
(13) К сожалению, запретить пользователю настраивать отчет не могу, но вот вариант с подменой настроек на настройки по умолчанию с переносом в них отборов мне очень понравился, буду реализовывать, большое спасибо всем кто помогал, как получится, выложу код, хоть его будет и мало…