Имя: Пароль:
1C
1С v8
Работа СКД последовательность выполнения компоновщика макета
0 glime
 
03.06.16
08:10
Добрый день, вопрос в следующем, в какой последовательности выполняется компоновка данных.
Есть код:

КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКД)

В Схеме, в настройках, есть отбор, и настройках компоновки есть отбор.
Я правильно понимаю, что сначала, отрабатывает отбор из Схемы, выполняется компоновка, а потом на результат накладываются настройки?
1 Gbpltw
 
03.06.16
08:11
чего именно не работает-то?
2 glime
 
03.06.16
08:20
да есть запрос:

ВЫБРАТЬ
    СоответствиеОрганизацийПартнеров.Партнер КАК СобственныйПартнер
ПОМЕСТИТЬ врОрганизацииПартнеры
ИЗ
    РегистрСведений.СоответствиеОрганизацийПартнеров КАК СоответствиеОрганизацийПартнеров
{ГДЕ
    (СоответствиеОрганизацийПартнеров.Организация В (&Организация))}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДвиженияДенежныеСредстваКонтрагент.Регистратор КАК Регистратор,
    ...........
    ДвиженияДенежныеСредстваКонтрагент.СуммаКВыплатеВРамкахЛимитаОборот + ДвиженияДенежныеСредстваКонтрагент.СуммаКВыплатеСверхЛимитаОборот КАК СуммаКВыплате
{ВЫБРАТЬ
    Регистратор.*,
    ............
    СуммаКВыплате}
ИЗ
    РегистрНакопления.ДвиженияДенежныеСредстваКонтрагент.Обороты(
            &НачалоПериода,
            &КонецПериода,
            Авто,
            ХозяйственнаяОперация В (&ХозяйственнаяОперация)
                И НЕ Партнер В
                        (ВЫБРАТЬ
                            врОрганизацииПартнеры.СобственныйПартнер
                        ИЗ
                            врОрганизацииПартнеры КАК врОрганизацииПартнеры) {........}) КАК ДвиженияДенежныеСредстваКонтрагент
{ГДЕ
    ДвиженияДенежныеСредстваКонтрагент.Регистратор.*}
3 glime
 
03.06.16
08:25
Если коротко, если в отчете не выбрана Организация, то из регистра сведений возьми всех партнеров, и исключи поступления ДС от них, если выбрано только несколько Организаций, то возьми только партнеров этих организаций, и исключи обороту внутри данной группы.
4 glime
 
03.06.16
08:58
так вот и ...
5 senior
 
03.06.16
09:00
(0) что есть настройки компоновки? Ты про пользовательские настройки?
6 glime
 
03.06.16
09:11
Выполнить(<Схема>, <Настройки>, <ДанныеРасшифровки>, <МакетОформления>, <ТипГенератора>, <ПроверятьДоступностьПолей>, <ПараметрыФункциональныхОпций>)
Параметры:

<Схема> (обязательный)

Тип: СхемаКомпоновкиДанных.
Схема, для которой требуется построить макет.
<Настройки> (обязательный)

Тип: НастройкиКомпоновкиДанных.
Настройки, для которых необходимо создать макет.
7 glime
 
03.06.16
09:11
вот эти
8 senior
 
03.06.16
09:29
Есть польз. настройки и те, что в схеме у варианта. Тебе нужно передать КомпоновщикНастроек.ПолучитьНастройки()
9 senior
 
03.06.16
09:30
Если я правильно понял твой вопрос
10 glime
 
03.06.16
09:43
(8) куда передать?
То есть я правильно понял, сначала отрабатывает схема со своими настройками, потом уже накладываются настройки?
11 Fragster
 
гуру
03.06.16
09:44
(0) нет
12 senior
 
03.06.16
09:53
(10) КомпМакета.Выполнить(..., КомпНастроек.ПолучитьНастройки())
13 glime
 
03.06.16
09:54
(11)тогда как объяснить, В Схеме в отборах организации нет, в Настройках есть, если я в консоль серелизовываю схему и проверяю, если указываю параметр организация то отрабатывает(ограничивает только по партнерам, те которые выбраны, если не выбираю, то ограничивает по всем)
14 glime
 
03.06.16
09:55
(12) в параметре у меня и так "НастройкиСжемыКомпановкиДанных", а не компановщик
15 Sabbath
 
03.06.16
10:20
(0) Не правильно понимаешь. Компоновщик имеет на входе схему и настройки. На выходе получает макет. Он является результатом применения настроек к схеме. Если у тебя стоят отборы (что пользовательские, что разработчика) они помещаются в запрос, и запрос выполняется с ними. Кромое того добавляются или удаляются таблицы запроса, поля, связи в соответствии с настройками.

Я так понимаю, другой вариант, когда внешний набор данных, там запроса нет.
16 glime
 
03.06.16
10:35
(15) ну тогда почему не отрабатывает запрос....
17 glime
 
03.06.16
10:35
в консоле отрабатывает, когда запихиваю в отчет хрен....
18 Sabbath
 
03.06.16
10:45
(17) в консоль СКД засунь и смотри результирующий запрос
19 Sabbath
 
03.06.16
10:46
(16) я по твоему описанию что-то не осилил смысл, в чем проблема
20 glime
 
03.06.16
10:48
(18) отрабатывает как надо
21 glime
 
03.06.16
10:50
(19) Основное место в запросе
{ГДЕ
    (СоответствиеОрганизацийПартнеров.Организация В (&Организация))}
То есть если выбрана организация накладывай фильтр, если нет, то не фильтруй
22 Sabbath
 
03.06.16
10:50
(13) у тебя в запросе написано так, чтобы ограничивало по всем, если не установлена организация. Первый запрос пакета выполняется без условия ГДЕ, когда нет параметра и у тебя там все партнеры
23 Sabbath
 
03.06.16
10:52
+(22) плюс к этому надо смотреть, какие реально параметры СКД подставляет в параметры виртуальной таблицы. Я думаю, там они заметно отличаются от исходного текста
24 Sabbath
 
03.06.16
10:54
(21) тут логика правильная, я думаю, дальше косяк
25 Sabbath
 
03.06.16
10:58
Я думаю, во втором подзапросе не хватает фигурных скобок где организация и партнер. Но это надо разбираться. Кстати не ясно, что у тебя там в {....}

Короче, пока не поймешь, какие у тебя запросы в зависимости от настроек реально исполняются, то не поймешь
26 glime
 
03.06.16
11:31
(22) так и задумано
27 glime
 
03.06.16
11:41
(25) там ка раз организация и партнер, просто строка длинная.....
28 glime
 
03.06.16
11:42
(25) дело в том, что я как раз на момент выполнить серелизую схему и подставляю ее в консоль.
29 glime
 
03.06.16
11:44
Функция СерилизоватьСКД(Схема) Экспорт
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Схема, "dataCompositionSchema", "http://v8.1c.ru/8.1/data-composition-system/schema";);
    Возврат ЗаписьXML.Закрыть();

КонецФункции
30 Sabbath
 
03.06.16
12:27
(29) Тут мне сложно сказать. я с этим не работал. Схема это уже скомпонованный макет? Если да, то посмотри наборы данных и запросы. Наверно, там должен быть уже модифицированный запрос. Преобразуется ли что-то самим методом ЗаписатьXML - не в курсе.
Вообще с программной обработкой СКД я еще разбираюсь, пока не сильно шарю.