Имя: Пароль:
1C
1С v8
Построитель отчета и пакет запросов
0 Родом из детства
 
19.03.21
15:23
Итак, имеется обработка. Реквизит - ПостроительОтчета. На форме обработке у меня две таблицы, в первой - заказы, во второй - работники(работник|текущее количество заказов). Перетаскиванием заказ назначается работнику. Хотелось одним выполнением построителя заполнять обе эти таблицы. Для заполнения таблицы с работниками создал пакет запросов. Однако, так и не понял, как выполнить пакетный запрос? Чтобы потом можно было пройтись по результатам вирт.таблиц? Что-то типо ПостроительДерева.ВыполнитьПакет();
Заранее спасибо за ответы)
1 Родом из детства
 
19.03.21
15:25
ВЫБРАТЬ
    RGS_ДействияОператоров.Период,
    RGS_ДействияОператоров.Объект,
    RGS_ДействияОператоров.ВидДействияОператора,
    RGS_ДействияОператоров.Пользователь,
    RGS_ДействияОператоров.Объект.Маршрут.ПунктПрибытия
ПОМЕСТИТЬ ВТ_ГрузыПрошедшиеКонтроль
ИЗ
    РегистрСведений.RGS_ДействияОператоров КАК RGS_ДействияОператоров
ГДЕ
    RGS_ДействияОператоров.Период >= &Период
    И RGS_ДействияОператоров.ВидДействияОператора = ЗНАЧЕНИЕ(Перечисление.RGS_ВидыДействийОператора.КонтрольСГ)
    И RGS_ДействияОператоров.Объект.Маршрут.ПунктПрибытия = &ПунктПрибытия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    RGS_СтатусыСборкиСрезПоследних.Груз,
    RGS_СтатусыСборкиСрезПоследних.Грузчик,
    RGS_СтатусыСборкиСрезПоследних.Статус КАК СтатусГотовности
ПОМЕСТИТЬ ВТ_СтатусыСборки
ИЗ
    РегистрСведений.RGS_СтатусыСборки.СрезПоследних(, Склад = &Склад) КАК RGS_СтатусыСборкиСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    RGS_ГрузчикиСрезПоследних.Сотрудник,
    ЕСТЬNULL(ВложенныйЗапрос.КоличествоАктивныхГрузов, 0) КАК КоличествоАктивныхЗаказов
ПОМЕСТИТЬ ВТ_Грузчики
ИЗ
    РегистрСведений.RGS_Грузчики.СрезПоследних(
            ,
            НазначениеНаСборку = ИСТИНА
                И Сотрудник.Подразделение = &Подразделение) КАК RGS_ГрузчикиСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            RGS_СтатусыСборкиСрезПоследних.Грузчик КАК Грузчик,
            КОЛИЧЕСТВО(RGS_СтатусыСборкиСрезПоследних.Груз) КАК КоличествоАктивныхГрузов
        ИЗ
            РегистрСведений.RGS_СтатусыСборки.СрезПоследних(, Склад = &Склад) КАК RGS_СтатусыСборкиСрезПоследних
        ГДЕ
            RGS_СтатусыСборкиСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.RGS_СтатусыГрузаНаСкладе.Собирается)
        
        СГРУППИРОВАТЬ ПО
            RGS_СтатусыСборкиСрезПоследних.Грузчик) КАК ВложенныйЗапрос
        ПО RGS_ГрузчикиСрезПоследних.Сотрудник = ВложенныйЗапрос.Грузчик
{ГДЕ
    RGS_ГрузчикиСрезПоследних.Сотрудник}
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ГрузыПрошедшиеКонтроль.Объект КАК СборныйГруз,
    ВТ_ГрузыПрошедшиеКонтроль.Объект.Маркировка КАК Маркировка,
    ВТ_ГрузыПрошедшиеКонтроль.Объект.ВесНетто КАК Вес,
    ВТ_ГрузыПрошедшиеКонтроль.Объект.Объем КАК Объем,
    ВТ_ГрузыПрошедшиеКонтроль.Объект.КоличествоМест КАК КоличествоМестВсего,
    ГрузыНаСкладахОстатки.Ячейка КАК Ячейка,
    ЕСТЬNULL(ГрузыНаСкладахОстатки.КоличествоОстаток, 0) КАК МестВЯчейке,
    ВТ_ГрузыПрошедшиеКонтроль.Объект.Грузополучатель КАК Грузополучатель,
    уатЗаказГрузоотправителя_уэТовары.Длина,
    уатЗаказГрузоотправителя_уэТовары.Ширина,
    уатЗаказГрузоотправителя_уэТовары.Высота,
    ВТ_ГрузыПрошедшиеКонтроль.Объект.Доставка,
    ВТ_СтатусыСборки.Грузчик,
    ВТ_СтатусыСборки.СтатусГотовности КАК СтатусГотовности
ИЗ
    ВТ_ГрузыПрошедшиеКонтроль КАК ВТ_ГрузыПрошедшиеКонтроль
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ГрузыНаСкладах.Остатки КАК ГрузыНаСкладахОстатки
        ПО ВТ_ГрузыПрошедшиеКонтроль.Объект = ГрузыНаСкладахОстатки.Груз
            И ВТ_ГрузыПрошедшиеКонтроль.ОбъектМаршрутПунктПрибытия = ГрузыНаСкладахОстатки.Склад.ПунктНазначения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.уатЗаказГрузоотправителя_уэ.Товары КАК уатЗаказГрузоотправителя_уэТовары
        ПО ВТ_ГрузыПрошедшиеКонтроль.Объект = уатЗаказГрузоотправителя_уэТовары.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СтатусыСборки КАК ВТ_СтатусыСборки
        ПО ВТ_ГрузыПрошедшиеКонтроль.Объект = ВТ_СтатусыСборки.Груз
{ГДЕ
    ВТ_ГрузыПрошедшиеКонтроль.Объект.Маркировка,
    ВТ_СтатусыСборки.СтатусГотовности}

УПОРЯДОЧИТЬ ПО
    СтатусГотовности,
    СборныйГруз
2 Родом из детства
 
19.03.21
15:26
(1) Общий результат хочу поместить в одну таблицу, а результат вирт таблицы "ВТ_Грузчики", в другую
3 Ёпрст
 
гуру
19.03.21
15:33
(0) текст запроса построителя скармливай обычному запросу, устанавливай параметры запроса из настроек построителя и потом уже, выполняй пакет.
4 Родом из детства
 
19.03.21
15:34
(3) ну это дроч какой-то, тогда проще прост отдельным запросом тч грузчиков заполнить. Думал, может, функционал такой имеется у построителя, просто я не заметил. Но спасибо за совет%)
5 Ёпрст
 
гуру
19.03.21
16:04
(4) Это нормальное поведение, так ты используешь все отборы от построителя в обычном запросе.
6 Ёпрст
 
гуру
19.03.21
16:05
+ временные таблички, полученные из ТЗ  и т.д.
7 Родом из детства
 
19.03.21
16:31
(6) Ааа, я сначала, похоже, немного не так понял. Ну да, имеет смысл. Спасибо!
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс