Имя: Пароль:
1C
1С v8
Пакетный запрос из виртуальных оборотных регистров
0 Stanislav_134
 
27.10.19
15:54
Всем привет!

Подскажите, делаю через СКД пакетный запрос (решаю билеты по Спецу БП). Сначала достаю из регистра бухгалтерии .ОборотныйДтКт определенные данные за период, установленный параметрами &НачалоПериода и &КонецПериода. Далее к полученным данным присоединяю опять же виртуальный регистр бухгалтерии .ОборотныйДтКт, но в параметрах второй виртуальной таблицы сразу задаю &КонПериода (допустим 31.12.2100) или вообще оставляю без указания параметров периода. Смысл в том, что из второй таблицы мне нужно выбрать данные грубо говоря за всё время вообще. Но результат СКД выдаёт, ограничивая данные по второй виртуальной таблице такими же параметрами (&НачалоПериода и &КонецПериода).

При написании такого же запроса через консоль результат получается именно такой какой нужно, то есть данные из второй таблицы берутся за всё время. Я так понимаю где-то в СКД настройку какую поправить надо? Или специальные параметры периода использовать?


ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.Период КАК ДатаПередачиВПереработку,
    ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента КАК ДоговорНаПереработку,
    ХозрасчетныйОборотыДтКт.Регистратор.Контрагент КАК Подрядчик,
    ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента.ас_НаименованиеСырья КАК НаименованиеСырья,
    ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоСырья,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК СтоимостьСырья,
    ХозрасчетныйОборотыДтКт1.Регистратор.ДоговорКонтрагента.ас_ПолучаемыйПолуфабрикат КАК Полуфабрикат,
    ХозрасчетныйОборотыДтКт1.КоличествоОборотДт КАК КоличествоПолуфабриката,
    ХозрасчетныйОборотыДтКт1.СуммаОборот КАК СтоимостьПолуфабриката
ПОМЕСТИТЬ вт_ПоступлениеПереработка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.МатериалыПереданныеВПереработку), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СырьеИМатериалы), , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонПер, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Полуфабрикаты), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство), , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт1
        ПО ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента = ХозрасчетныйОборотыДтКт1.Регистратор.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_ПоступлениеПереработка.ДоговорНаПереработку КАК ДоговорНаПереработку,
    вт_ПоступлениеПереработка.Подрядчик КАК Подрядчик,
    вт_ПоступлениеПереработка.НаименованиеСырья КАК НаименованиеСырья,
    вт_ПоступлениеПереработка.КоличествоСырья КАК КоличествоСырья,
    вт_ПоступлениеПереработка.СтоимостьСырья КАК СтоимостьСырья,
    вт_ПоступлениеПереработка.ДатаПередачиВПереработку КАК ДатаПередачиВПереработку,
    ЕСТЬNULL(вт_ПоступлениеПереработка.Полуфабрикат, "-") КАК Полуфабрикат,
    ЕСТЬNULL(вт_ПоступлениеПереработка.КоличествоПолуфабриката, "-") КАК КоличествоПолуфабриката,
    ЕСТЬNULL(вт_ПоступлениеПереработка.СтоимостьПолуфабриката + ХозрасчетныйОборотыДтКт.СуммаОборот, "-") КАК СтоимостьПолуфабриката
ИЗ
    вт_ПоступлениеПереработка КАК вт_ПоступлениеПереработка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонПер, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство), , СчетКт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , ) КАК ХозрасчетныйОборотыДтКт
        ПО вт_ПоступлениеПереработка.ДоговорНаПереработку = ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента
1 shuhard
 
27.10.19
15:56
(0)[Или специальные параметры периода использовать?]
угу
экранировку {}
2 Stanislav_134
 
27.10.19
15:56
Всем привет!

Подскажите, делаю через СКД пакетный запрос (решаю билеты по Спецу БП). Сначала достаю из регистра бухгалтерии .ОборотныйДтКт определенные данные за период, установленный параметрами &НачалоПериода и &КонецПериода. Далее к полученным данным присоединяю опять же виртуальный регистр бухгалтерии .ОборотныйДтКт, но в параметрах второй виртуальной таблицы сразу задаю &КонПериода (допустим 31.12.2100) или вообще оставляю без указания параметров периода. Смысл в том, что из второй таблицы мне нужно выбрать данные грубо говоря за всё время вообще. Но результат СКД выдаёт, ограничивая данные по второй виртуальной таблице такими же параметрами (&НачалоПериода и &КонецПериода).

При написании такого же запроса через консоль результат получается именно такой какой нужно, то есть данные из второй таблицы берутся за всё время. Я так понимаю где-то в СКД настройку какую поправить надо? Или специальные параметры периода использовать?

ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.Период КАК ДатаПередачиВПереработку,
    ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента КАК ДоговорНаПереработку,
    ХозрасчетныйОборотыДтКт.Регистратор.Контрагент КАК Подрядчик,
    ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента.ас_НаименованиеСырья КАК НаименованиеСырья,
    ХозрасчетныйОборотыДтКт.КоличествоОборотДт КАК КоличествоСырья,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК СтоимостьСырья,
    ХозрасчетныйОборотыДтКт1.Регистратор.ДоговорКонтрагента.ас_ПолучаемыйПолуфабрикат КАК Полуфабрикат,
    ХозрасчетныйОборотыДтКт1.КоличествоОборотДт КАК КоличествоПолуфабриката,
    ХозрасчетныйОборотыДтКт1.СуммаОборот КАК СтоимостьПолуфабриката
ПОМЕСТИТЬ вт_ПоступлениеПереработка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.МатериалыПереданныеВПереработку), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СырьеИМатериалы), , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонПер, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Полуфабрикаты), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство), , Организация = &Организация) КАК ХозрасчетныйОборотыДтКт1
        ПО ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента = ХозрасчетныйОборотыДтКт1.Регистратор.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_ПоступлениеПереработка.ДоговорНаПереработку КАК ДоговорНаПереработку,
    вт_ПоступлениеПереработка.Подрядчик КАК Подрядчик,
    вт_ПоступлениеПереработка.НаименованиеСырья КАК НаименованиеСырья,
    вт_ПоступлениеПереработка.КоличествоСырья КАК КоличествоСырья,
    вт_ПоступлениеПереработка.СтоимостьСырья КАК СтоимостьСырья,
    вт_ПоступлениеПереработка.ДатаПередачиВПереработку КАК ДатаПередачиВПереработку,
    ЕСТЬNULL(вт_ПоступлениеПереработка.Полуфабрикат, "-") КАК Полуфабрикат,
    ЕСТЬNULL(вт_ПоступлениеПереработка.КоличествоПолуфабриката, "-") КАК КоличествоПолуфабриката,
    ЕСТЬNULL(вт_ПоступлениеПереработка.СтоимостьПолуфабриката + ХозрасчетныйОборотыДтКт.СуммаОборот, "-") КАК СтоимостьПолуфабриката
ИЗ
    вт_ПоступлениеПереработка КАК вт_ПоступлениеПереработка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонПер, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство), , СчетКт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , ) КАК ХозрасчетныйОборотыДтКт
        ПО вт_ПоступлениеПереработка.ДоговорНаПереработку = ХозрасчетныйОборотыДтКт.Регистратор.ДоговорКонтрагента
3 Stanislav_134
 
27.10.19
15:57
(1) Можно поподробнее как это выглядит в параметрах таблицы?

И еще вопрос - как этот код вставить красиво. Что-то не прокатывает
4 Stanislav_134
 
27.10.19
15:58
тест
5 hhhh
 
27.10.19
16:11
(4) {&КонПер}
6 Stanislav_134
 
27.10.19
16:37
(1), (5)  Спасибо!