Имя: Пароль:
1C
1С v8
Запретить СКД убирать невыбранные поля
0 Naroru
 
17.11.20
12:58
Всем добрый день

В СКД есть запрос следующего вида

ВЫБРАТЬ
    ЗадачаОператоруОформления.Дата,
    ЗадачаОператоруОформления.Ссылка,
    ЗадачаОператоруОформления.Исполнитель
ПОМЕСТИТЬ втДанныеПоЗадаче
ИЗ
    Документ.ЗадачаОператоруОформления КАК ЗадачаОператоруОформления

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗадачаОператоруОформленияЗадачиОператора.Услуга,
    ЗадачаОператоруОформленияЗадачиОператора.Ссылка
ПОМЕСТИТЬ ВтУслугиИзЗадач
ИЗ
    Документ.ЗадачаОператоруОформления.ЗадачиОператора КАК ЗадачаОператоруОформленияЗадачиОператора
ГДЕ
    ЗадачаОператоруОформленияЗадачиОператора.Ссылка В
            (ВЫБРАТЬ
                втДанныеПоЗадаче.Ссылка
            ИЗ
                втДанныеПоЗадаче КАК втДанныеПоЗадаче)
    И НЕ ЗадачаОператоруОформленияЗадачиОператора.Услуга = ЗНАЧЕНИЕ(Справочник.НоменклатураУслуг.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ЗадачаОператоруОформленияЗадачиОператора.Услуга,
    ЗадачаОператоруОформленияЗадачиОператора.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтУслугиИзЗадач.Услуга КАК Услуга,// ЭТО ПОЛЕ ИСЧЕЗАЕТ
    ВтУслугиИзЗадач.Ссылка КАК Задача,
    СУММА(1) КАК Нумератор
ПОМЕСТИТЬ втУслугиЗадачСНумерацией
ИЗ
    ВтУслугиИзЗадач КАК ВтУслугиИзЗадач
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтУслугиИзЗадач КАК ВтУслугиИзЗадач1
        ПО ВтУслугиИзЗадач.Ссылка = ВтУслугиИзЗадач1.Ссылка
            И ВтУслугиИзЗадач.Услуга >= ВтУслугиИзЗадач1.Услуга

СГРУППИРОВАТЬ ПО
    ВтУслугиИзЗадач.Услуга,
    ВтУслугиИзЗадач.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(втУслугиЗадачСНумерацией.Нумератор) КАК Нумератор,
    МАКСИМУМ(втУслугиЗадачСНумерацией.Задача) КАК Задача
ПОМЕСТИТЬ втМаксимальноеКоличествоУслуг
ИЗ
    втУслугиЗадачСНумерацией КАК втУслугиЗадачСНумерацией
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втДанныеПоЗадаче.Дата КАК ДатаСозданияЗадачи,
    втДанныеПоЗадаче.Ссылка КАК Ссылка,
    втДанныеПоЗадаче.Исполнитель КАК Исполнитель,
    втМаксимальноеКоличествоУслуг.Нумератор КАК МаксимальноеКоличествоУслугВЗадаче
ИЗ
    втДанныеПоЗадаче КАК втДанныеПоЗадаче
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ втМаксимальноеКоличествоУслуг КАК втМаксимальноеКоличествоУслуг
        ПО (ИСТИНА)


Смысл запроса - взять документ ЗадачаОператору.
Из его таб части вытащить Услуги
Пронумеровать их
Выбрать максимальный номер (т.е. максимальное количество строк Услуг, которое есть в выбранных документах ЗадачаОператору)
И вывести инфу



Так вот, СКД удаляет поле Услуга ( написал коммент в коде) и в том пакете вместо строк вида
Задача_1 Услуга_1  1
Задача_2 Услуга_2  2

я получаю
Задача_1  3

Кто знает, как решить проблему? Не таща дальше поле Услуга в финальный пакет
1 craxx
 
17.11.20
13:05
(0) директивы компоновки в запросе уже отменили?
2 toypaul
 
гуру
17.11.20
13:35
вот так сделай.

ВЫБРАТЬ
    ВтУслугиИзЗадач.Ссылка КАК Задача,
    СУММА(1) КАК Нумератор
ПОМЕСТИТЬ втУслугиЗадачСНумерацией
ИЗ
    ВтУслугиИзЗадач КАК ВтУслугиИзЗадач
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтУслугиИзЗадач КАК ВтУслугиИзЗадач1
        ПО ВтУслугиИзЗадач.Ссылка = ВтУслугиИзЗадач1.Ссылка
            И ВтУслугиИзЗадач.Услуга >= ВтУслугиИзЗадач1.Услуга

СГРУППИРОВАТЬ ПО
    ВтУслугиИзЗадач.Услуга,
    ВтУслугиИзЗадач.Ссылка
3 Naroru
 
17.11.20
13:44
(1) Какие директивы компоновки в запросе в СКД? В первый раз слышу
4 Naroru
 
17.11.20
13:46
(2)  именно так мне СКД и делает по итогу, модифицируя запрос
И, как я сказал, вместо пронумерованных услуг
Задача_1   Услуга_А     1
Задача_1   Услуга_Б     2
Задача_1   Услуга_В     3

я получу
Задача_1  6
5 toypaul
 
гуру
17.11.20
13:52
(4) вот не надо мне ля-ля. сделай так как я написал. если не видишь, что написано - просто скопируй и вставь
6 Naroru
 
17.11.20
14:15
(5) Ну, скажу так, в целом мою изначальную проблему это решает, спасибо
но теперь просто вопрос любопытства, есть ли возможность СКД обязать включать в запрос поля, которые по итогу не будут в выбранных

Для чего - для выгрузки результата компоновки в таблицу значений с этими служебными полями и дальнейшей  обработкой
И потом, при выводе отчета, чтобы эти служебные поля не приходилось скрывать из Выбранных

Если этот момент подскажешь - круто
7 toypaul
 
гуру
17.11.20
14:29
только если "протащить" в конечную выборку и сделать их обязательными.

задолбали эти 1Сники (разработчики платформы). элементарные вещи не могут сделать из-за которых квадратные колеса каждый раз приходится изобретать как будто другим заняться нечем
8 dka80
 
17.11.20
14:31
Во временных  таблицах, если я не ошибаюсь, все поля включаются в запрос
На последнем запросе в поле ставишь "Обязательное" и оно будет всегда использоваться
9 Naroru
 
17.11.20
15:04
(8) как раз из временной оно и исчезает)
обязательное не прокатывало
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс