Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 3
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Объеденение полей запроса          
TailorMade Подменю пользователя
сообщение 10.10.19, 6:59
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 24
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте. Я бы хотел в этом запросе объеденить поля, у которых есть IDРодителя и равно ID другого задания. Это вообще возможно сделать? А то я пробовал и не получалось

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

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

УПОРЯДОЧИТЬ ПО
    НомерСтрокиТЧ

demon14 Подменю пользователя
сообщение 10.10.19, 7:57
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 10
Из: Київ
Спасибо сказали: 0 раз
Рейтинг: 0

TailorMade @ Сегодня, 7:59 * ,
...
Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Расшифровка КАК ЗаказПокупателяРасшифровка2
ПО ЗаказПокупателяРасшифровка.ID = ЗаказПокупателяРасшифровка2.IDРодителя
...

ID если это все же УИД, необходимо хранить как строку.

TailorMade Подменю пользователя
сообщение 10.10.19, 8:04
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 24
Спасибо сказали: 0 раз
Рейтинг: 0

demon14 @ Сегодня, 8:57 * ,
то есть надо два запроса сделать? А то я не очень понял, как сделать

Макс1С Подменю пользователя
сообщение 10.10.19, 8:45
Сообщение #4

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 163
Из: Днепр
Спасибо сказали: 53 раз
Рейтинг: 50.6

TailorMade @ Сегодня, 9:04 * ,
Уточню, вы хотите получить дерево задач с подзадачами? Количество уровней подзадач чем-то ограничено или нет(у подзадач будут свои подзадачи)?

fly Подменю пользователя
сообщение 10.10.19, 14:29
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 215
Спасибо сказали: 44 раз
Рейтинг: 43

Цитата(TailorMade @ 10.10.19, 7:59) *
Это вообще возможно сделать?


Да

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

Цитата(TailorMade @ 10.10.19, 7:59) *
ID другого задания


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


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

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

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

Vladal Подменю пользователя
сообщение 10.10.19, 16:58
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 364
Из: Украина
Спасибо сказали: 63 раз
Рейтинг: 49.8

Вложенные запросы с выборками затрудняют отладку. Я бы сделал так:


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


fly @ Сегодня, 15:29 * ,
Непонятна логика вот этого условия:

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


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

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

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


...

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

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

Если в строке ТЧ заполнено поле IDРодителя, тогда:
- Найти другие заказы покупателя по исполнителю с таким ID.
- Полученные результаты сгруппировать по Исполнителю и Заданию.

fly Подменю пользователя
сообщение 10.10.19, 17:09
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 215
Спасибо сказали: 44 раз
Рейтинг: 43

Цитата(Vladal @ 10.10.19, 17:58) *
1. Не ... = ...
не равно. Это ужас.


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

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


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

Код - для быстроты написан, для примера, что его можно реализовать.
По ходу не вдавался в детали конкретной конфигурации.

Vladal Подменю пользователя
сообщение 10.10.19, 17:43
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 364
Из: Украина
Спасибо сказали: 63 раз
Рейтинг: 49.8

fly @ Сегодня, 18:09 * ,
Если так - да. Быстрый пример. Но и он содержит ошибки.

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


Цитата(fly @ 10.10.19, 18:09) *
на что влияет?

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


Обычная беззлобная критика ради повышения качества кода.

Спасибо сказали: fly,

Макс1С Подменю пользователя
сообщение 15.10.19, 15:47
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 163
Из: Днепр
Спасибо сказали: 53 раз
Рейтинг: 50.6

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.10.20, 11:40
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!