|
Запрос в динамическом списке документов УФ с количеством и левым соеденением | ☑ | ||
---|---|---|---|---|
0
TrueF
08.04.16
✎
16:08
|
Попробую объяснить всю трагикомедию))
Есть два документа ПредЗаказ и Заказ В документе Заказ есть реквизит Основание со ссылкой на документ ПредЗаказ, Документов Заказ с одинаковыми реквизитами Основание ПредЗаказ может быть множество. Задача - в списке документов ПредЗаказ вывести количество документов Заказ где Предзаказ = Заказ.Основание Сообразить не могу как количество документов Заказ посчитать в запросе. Сам запрос: ВЫБРАТЬ ДокументПредЗаказ.Ссылка, ДокументПредЗаказ.Номер, ДокументПредЗаказ.Дата, ДокументПредЗаказ.Контрагент, Заказ.Ссылка Как ЗаказОсновной ИЗ Документ.ПредЗаказ КАК ДокументПредЗаказ ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК Заказ ПО ДокументПредЗаказ.Ссылка = Заказ.Основание.Ссылка |
|||
1
Fragster
гуру
08.04.16
✎
16:11
|
одним из правильных вариантов будет создать РС с измерением "предзаказ", ресурсом "заказ" и обновлением его по нужным правилам при записи заказа (например можно сделать два ресурса - количество проведенных и непроведенных заказов, а помеченные на удаление вообще не считать) и сделать левое соединение уже с ним.
|
|||
2
TrueF
08.04.16
✎
16:14
|
(1) лишняя таблица в базе. по другому наверно можно, просто запросом?
|
|||
3
Fragster
гуру
08.04.16
✎
16:18
|
(2) Она не лишняя. И её еще и обновлять при записи надо. Некоторые системы, вон, тоже остатки как обороты по всему периоду считают, а в 1с есть таблица итогов регистров. Это называется денормализация, и делается в определенных случаях и совершенно сознательно.
|
|||
4
Игорь_МММ
08.04.16
✎
16:31
|
Задача - в списке документов ПредЗаказ вывести количество документов Заказ где Предзаказ = Заказ.Основание
может так: Задача - в списке документов ПредЗаказ вывести количество документов Заказ где Заказ.Основание=Предзаказ? |
|||
5
TrueF
08.04.16
✎
16:32
|
(3) Придется с РС видимо и с перепроведением базы. не хотелось конечно.
Хотел по быстрому запрос и все. |
|||
6
TrueF
08.04.16
✎
16:32
|
(4) да верно
|
|||
7
Cyberhawk
08.04.16
✎
16:35
|
(4) А разница есть?
|
|||
8
Fragster
гуру
08.04.16
✎
16:35
|
(5) при чем тут перепроведение? сделай в менеджере РС экспортную функцию с параметром - массивом пред заказов, перед записью заказа вызывай с массивом из предыдущего и текущего предзаказа.
а в обработке обновления (или руками) вызови с массивом со всеми предзаказами. а запрос для ДС сделать можно, но он будет тупить. |
|||
9
Игорь_МММ
08.04.16
✎
16:36
|
Выбрать
Заказ.Ссылка Из Заказ Где Заказ.Основание = &Основание Количество = Запрос.выполнить.выгрузить.Количество() ну а там в событии ПриАктивизацииСтроки присваивайте Количество чему нужно |
|||
10
Fragster
гуру
08.04.16
✎
16:36
|
> массивом из предыдущего и текущего предзаказа.
Ссылка.Предзаказ и Предзаказ |
|||
11
Fragster
гуру
08.04.16
✎
16:38
|
(6)это вывод просто в поле, а не в сам ДС. ну и выбирать все ссылки и считать их количество вместо получения нужного значения прямо в запросе - это странно.
|
|||
12
Diman000
08.04.16
✎
16:38
|
Количество Различные вроде, не?
Ну и РС вполне себе вариант. Для дин. списков часто производительность ключевой момент. |
|||
13
Игорь_МММ
08.04.16
✎
16:45
|
Выбрать
Количество(Заказ.Ссылка) Как Количество &Основание Как Основание Поместить Таблица Из Заказ Где Заказ.Основание = &Основание Сгруппировать по Основание ; Выбрать ПредЗаказ Количество Из ДокументыПредзаказ ЛевоеСоединение Таблица По Предзаказ.Ссылка = Таблица.Основание |
|||
14
Fragster
гуру
08.04.16
✎
16:48
|
(13) а еще в ДС не работают пакетные запросы, как на зло (по крайней мере до 8.3.8, да и в ней они намного менее эффективны из-за того, что основная таблица ограничивается 25-50 строками, а "неосновные" запросы пакета гребут все данные)
|
|||
15
Игорь_МММ
08.04.16
✎
16:55
|
(14) да, был не прав
не шибко силен.. а нельзя что-то типа при создании формы заполнять эту колонку с количеством? |
|||
16
Fragster
гуру
08.04.16
✎
16:56
|
(15) в управляемых формах в динамическом списке - нет
|
|||
17
Игорь_МММ
08.04.16
✎
16:57
|
... сделать реквизит на форме типа ТЗ - его заполнять запросом ?
|
|||
18
Fragster
гуру
08.04.16
✎
17:01
|
(17) тут тоже фигня - надо прописывать все возможности ДС - обновление данных и представлений, добавление/изменение/удаление данных, всякие вводы на основании и прочие глобальные команды...
|
|||
19
TrueF
08.04.16
✎
17:03
|
Спасибо всем, пошел РС ваять. Видимо это легче всего выйдет.
|
|||
20
aleks_default
08.04.16
✎
17:52
|
ВЫБРАТЬ
ДокументПредЗаказ.Ссылка, ДокументПредЗаказ.Номер, ДокументПредЗаказ.Дата, ДокументПредЗаказ.Контрагент, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Заказ.Ссылка) Как КоличествоЗаказов ИЗ Документ.ПредЗаказ КАК ДокументПредЗаказ ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК Заказ ПО ДокументПредЗаказ.Ссылка = Заказ.Основание СГРУППИРОВАТЬ ПО ДокументПредЗаказ.Ссылка, ДокументПредЗаказ.Номер, ДокументПредЗаказ.Дата, ДокументПредЗаказ.Контрагент |
|||
21
Cyberhawk
08.04.16
✎
17:55
|
(20) Ага, при каждом прокручивании... из года в год...
|
|||
22
aleks_default
08.04.16
✎
17:59
|
ну пусть попробует, чо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |