Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объеденение полей запроса
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
TailorMade
Здравствуйте. Я бы хотел в этом запросе объеденить поля, у которых есть IDРодителя и равно ID другого задания. Это вообще возможно сделать? А то я пробовал и не получалось

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

СГРУППИРОВАТЬ ПО
    ЗаказПокупателяРасшифровка.Исполнитель,
    ЗаказПокупателяРасшифровка.Задание

УПОРЯДОЧИТЬ ПО
    НомерСтрокиТЧ
demon14
TailorMade @ Сегодня, 7:59 необходимо зарегистрироваться для просмотра ссылки ,
...
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка2
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка2.IDРодителя
...

ID если это все же УИД, необходимо хранить как строку.
TailorMade
demon14 @ Сегодня, 8:57 необходимо зарегистрироваться для просмотра ссылки ,
то есть надо два запроса сделать? А то я не очень понял, как сделать
Макс1С
TailorMade @ Сегодня, 9:04 необходимо зарегистрироваться для просмотра ссылки ,
Уточню, вы хотите получить дерево задач с подзадачами? Количество уровней подзадач чем-то ограничено или нет(у подзадач будут свои подзадачи)?
fly
Цитата(TailorMade @ 10.10.19, 7:59) необходимо зарегистрироваться для просмотра ссылки
Это вообще возможно сделать?


Да

Если задавать вопрос как можно сделать
Берете поля которые сгруппировать нужно
и ставите отборы на IDРодителя - в зависимости от типа вашего реквизита ТЧ может "Неопределено" или "0" или что другое

Цитата(TailorMade @ 10.10.19, 7:59) необходимо зарегистрироваться для просмотра ссылки
ID другого задания


Для этого берете выборку по всем Другим заданиям и проверяете есть ли данный ID в этой выборке.


ВЫБРАТЬ
   
    ЗаказПокупателяРасшифровка.Задание,
    ЗаказПокупателяРасшифровка.Исполнитель
 ИЗ
    Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ГДЕ
    ЗаказПокупателяРасшифровка.Ссылка = &ТекущийДокумент
        И
           НЕ ЗаказПокупателяРасшифровка.IDРодителя  = Неопределено
                И ЗаказПокупателяРасшифровка.ID В
            (ВЫБРАТЬ
                ЗаказПокупателя.Ссылка
            ИЗ
                Документ.ЗаказПокупателя КАК ЗаказПокупателя
            СГРУППИРОВАТЬ ПО
                ЗаказПокупателя.Ссылка)

//условие выборки по
// ID другого задания

СГРУППИРОВАТЬ ПО
    ЗаказПокупателяРасшифровка.Исполнитель,
    ЗаказПокупателяРасшифровка.Задание
Vladal
Вложенные запросы с выборками затрудняют отладку. Я бы сделал так:


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗаказПокупателя.Ссылка
ПОМЕСТИТЬ втЗаказыПокупателя
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
СГРУППИРОВАТЬ ПО
    ЗаказПокупателя.Ссылка
;


fly @ Сегодня, 15:29 необходимо зарегистрироваться для просмотра ссылки ,
Непонятна логика вот этого условия:

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


1. Не ... = ...
не равно. Это ужас. Используйте оператор "<>". Повесьте автозамену на БЮ, если трудно переключаться между раскладками. Пофигуратор 1С 8 позволяет это сделать Шаблонами.

2. Сравнение IDРодителя <> Неопределено даст Истину для NULL, например. Неопределено будет когда это поле составного типа, а в оригинале автора оно суммируется, делаю вывод, что числовое.

3. Это условие с выборкой не имеет смысла - в самом подзапросе нет никаких ограничений и выдаст всю выборку.
Надо хотя бы задать условие, что Заказ не помечен на удаление:
ГДЕ
    НЕ ЗаказПокупателя.ПометкаУдаления


...

TailorMade @ Сегодня, 7:59 необходимо зарегистрироваться для просмотра ссылки ,
Напишите, что за поля ID и IDРодителя, какого они типа?
Это ссылка на иерархический справочник, либо ссылка на документ (головной - "родитель", подчиненный).

Правильно ли я понимаю, что условие должно выглядеть примерно так:

Если в строке ТЧ заполнено поле IDРодителя, тогда:
- Найти другие заказы покупателя по исполнителю с таким ID.
- Полученные результаты сгруппировать по Исполнителю и Заданию.
fly
Цитата(Vladal @ 10.10.19, 17:58) необходимо зарегистрироваться для просмотра ссылки
1. Не ... = ...
не равно. Это ужас.


на что влияет?
В стандартных конфигурациях используется повсеместно:

Если Не..... = Неопределено Тогда
КонецЕсли;


пока не встречал статей по оптимизации языка запросов, что рекомендуют, что нет в использовании.

Код - для быстроты написан, для примера, что его можно реализовать.
По ходу не вдавался в детали конкретной конфигурации.
Vladal
fly @ Сегодня, 18:09 необходимо зарегистрироваться для просмотра ссылки ,
Если так - да. Быстрый пример. Но и он содержит ошибки.

В типовых есть (было)
Для ПП=1 По 10000 Цикл
КонецЦикла;


Цитата(fly @ 10.10.19, 18:09) необходимо зарегистрироваться для просмотра ссылки
на что влияет?

Читабельность и понимание логики.
Я видел шедевры (и одно время работал с их генератором) вроде этого:
Если Не ЗначениеФлажка = Ложь Тогда


Обычная беззлобная критика ради повышения качества кода.
Макс1С
ТС ушёл куда-то, видимо.
Я вижу решение такой задачи в динамическом формировании текста запроса с левыми соединениями по IDродителей. В цикле по возможному количеству вложенностей подзадач.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.