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

Хранилище

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

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



> Динамический список + сложный запрос 2 страниц V   1 2 >          
DartRomanius Подменю пользователя
сообщение 14.03.11, 11:31
Сообщение #1

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Кипение мозга породило:

Есть форма списка документов (динамический список).
Выводит документ одного типа - скажем документ "Заказ".
Есть несколько регистров сведений.

Вывод данных из регистров получается достаточно простым (рагистры не периодические).

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


У документа есть подчиненный документ. В подчиненном документе есть некий реквизит.
Как бы его вывести (этот реквизит)? Причем надо брать данные из последнего подчиненного документа.

Как-то так.

ЗЫ: Вариант с еще одним регистром сведений понятен, а вот если без него (регистра).


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

DartRomanius Подменю пользователя
сообщение 15.03.11, 8:51
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Хоть бы послали куда... 32000000.gif


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

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

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

DartRomanius, посмотрите стандартный механизм "Структура подчинённости".

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

Fynjy Подменю пользователя
сообщение 15.03.11, 8:56
Сообщение #4

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

х
Причина редактирования: http://pro1c.org.ua/index.php?showtopic=2284


Signature

World1С Подменю пользователя
сообщение 15.03.11, 9:07
Сообщение #5

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Fynjy прав (+100), начните с документа который вам нужен, поставте условие
| ГДЕ <Документ>.ДокументОснование.Ссылка = <Документ заказ>
и выбирайте все что нужно.


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

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

pablo Подменю пользователя
сообщение 15.03.11, 11:29
Сообщение #6

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Есть вариант построить вложенный запрос вида

Выбрать ПЕРВЫЕ 1 
поля заказа
из Документ.Заказ как Заказ
где Заказ.Владелец=&Владелец
Упорядочить по Дата Убыв

Но это не самый лучший вариант, так как привязан к параметру


Signature
Правильно поставленный вопрос содержит до 90% ответа.

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

DartRomanius Подменю пользователя
сообщение 15.03.11, 11:30
Сообщение #7

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Код.

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


выводит 8 (ВОСЕМЬ) строк вместо одной, так как подчиненных документов 8.
мне нужно взять:
ПОСЛЕДНИЙ

Цитата(pablo @ 15.03.11, 12:29) *
Есть вариант построить вложенный запрос вида

Выбрать ПЕРВЫЕ 1 
поля заказа
из Документ.Заказ как Заказ
где Заказ.Владелец=&Владелец
Упорядочить по Дата Убыв

Но это не самый лучший вариант, так как привязан к параметру


Внешние параметры возможности использовать нету. К сожалению не подходит.

Цитата(pablo @ 15.03.11, 12:29) *
Есть вариант построить вложенный запрос вида

Выбрать ПЕРВЫЕ 1 
поля заказа
из Документ.Заказ как Заказ
где Заказ.Владелец=&Владелец
Упорядочить по Дата Убыв

Но это не самый лучший вариант, так как привязан к параметру



Вроде как прошел следующий вариант:
ВЫБРАТЬ
    ЗаказДокументы.Ссылка,
    ЗаказДокументы.ПометкаУдаления,
    ЗаказДокументы.Номер,
    ЗаказДокументы.Дата,
    ЗаказДокументы.Проведен,
    ЗаказДокументы.Примечание,
    ЗаказДокументы.Автор,
    ЗаказСтатус.Статус,
    ЗаказСтатусФлаг.Выполнен
ИЗ
    РегистрСведений.СтатусыЗаказов КАК ЗаказСтатус
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК ЗаказДокументы
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаказФлаг КАК ЗаказСтатусФлаг
            ПО (ЗаказСтатусФлаг.Заказ = ЗаказДокументы.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
                ЗаказПервичка.Заказ КАК Заказ,
                ЗаказПервичка.Контрагент КАК Контрагент,
                ЗаказПервичка.Дата КАК Дата
            ИЗ
                Документ.ЗаказПервичнаяИнформация КАК ЗаказПервичка
            
            УПОРЯДОЧИТЬ ПО
                ЗаказПервичка.Дата УБЫВ) КАК ВложенныйЗапрос
            ПО (ВложенныйЗапрос.Заказ = ЗаказДокументы.Ссылка)
        ПО ЗаказСтатус.Заказ = ЗаказДокументы.Ссылка


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

DartRomanius Подменю пользователя
сообщение 15.03.11, 11:50
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Всем принимавшим участие большое спасибо.
Вроде получилось.


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

pablo Подменю пользователя
сообщение 15.03.11, 11:57
Сообщение #9

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Без параметра может быть пустое значение поля. Но как от параметра корректно избавиться - ума не приложу


Signature
Правильно поставленный вопрос содержит до 90% ответа.

DartRomanius Подменю пользователя
сообщение 15.03.11, 12:03
Сообщение #10

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(pablo @ 15.03.11, 12:57) *
Без параметра может быть пустое значение поля. Но как от параметра корректно избавиться - ума не приложу


Мдя. Номер к сожалению пока не прошел. Берет то последний но совсем последний... sad.gif

Мне вот любопытно, а как условие внутреннего запроса отослать на поле основного.


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

pablo Подменю пользователя
сообщение 15.03.11, 12:31
Сообщение #11

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

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


Signature
Правильно поставленный вопрос содержит до 90% ответа.

DartRomanius Подменю пользователя
сообщение 15.03.11, 13:48
Сообщение #12

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(pablo @ 15.03.11, 13:31) *
единственная идея, которая в голове крутится: сделать пакетный запрос, подзапрос вынести в отдельный запрос и организовать в нем группировку по владельцу


Динамический список не поддерживает объединения


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

World1С Подменю пользователя
сообщение 15.03.11, 15:12
Сообщение #13

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Вот пример запроса который через документ ПКО получит любой реквезить документа Реализация или ссылку на документ.
ВЫБРАТЬ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК СсылкаПКО,
    РеализацияТоваровУслуг.Ссылка КАК СсылкаРТУ
ИЗ
    Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка = РеализацияТоваровУслуг.Ссылка
ГДЕ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Дата <= &Дата


если это то.


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

DartRomanius Подменю пользователя
сообщение 15.03.11, 15:25
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(World1С @ 15.03.11, 16:12) *
Вот пример запроса который через документ ПКО получит любой реквезить документа Реализация или ссылку на документ.
ВЫБРАТЬ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК СсылкаПКО,
    РеализацияТоваровУслуг.Ссылка КАК СсылкаРТУ
ИЗ
    Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО ПриходныйКассовыйОрдерРасшифровкаПлатежа.Сделка = РеализацияТоваровУслуг.Ссылка
ГДЕ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Дата <= &Дата


если это то.


В динамический список НЕЛЬЗЯ передать параметры!


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

DartRomanius Подменю пользователя
сообщение 15.03.11, 15:26
Сообщение #15

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

*
В запрос динамического списка, нельзя передать параметры


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

pablo Подменю пользователя
сообщение 15.03.11, 15:27
Сообщение #16

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

С регистром сведений будет проще и для написания, и для сервера. Потому как усложнять запрос -> нагружать сервер.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

DartRomanius Подменю пользователя
сообщение 15.03.11, 15:29
Сообщение #17

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(pablo @ 15.03.11, 16:27) *
С регистром сведений будет проще и для написания, и для сервера. Потому как усложнять запрос -> нагружать сервер.


От похоже так и придется делать.


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

World1С Подменю пользователя
сообщение 15.03.11, 16:36
Сообщение #18

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Уберите параметр Дата. В запросе мне пришлось его использовать для того чтобы ограничить выборку.


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

DartRomanius Подменю пользователя
сообщение 16.03.11, 8:33
Сообщение #19

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Цитата(World1С @ 15.03.11, 17:36) *
Уберите параметр Дата. В запросе мне пришлось его использовать для того чтобы ограничить выборку.


Дык, не в дате дело то.

Если я использую только регистры сведений (в которых кстати по 1-й записи, ссылающихся на документ) то все нормально.
А вот если, еще использовать Н-ую таблицу в которой более 1-й ссылки, то выходит "партак".

Так как выборка происходит из 2-х (или более, не важно) таблиц - то и количество строк выборки больше.
На примере:
-Таблица 1
- заказ 1
- заказ 2
- заказ 3
- Таблица 2
- подчиненый документ 1, ссылка на заказ 1
- подчиненый документ 2, ссылка на заказ 1
- подчиненый документ 3, ссылка на заказ 2
- подчиненый документ 4, ссылка на заказ 1
- подчиненый документ 5, ссылка на заказ 3

Имеем выборку из пяти записей
- Выборка
- строка 1, заказ 1, подчиненый документ 1
- строка 2, заказ 1, подчиненый документ 2
- строка 3, заказ 1, подчиненый документ 4
- строка 4, заказ 2, подчиненый документ 3
- строка 5, заказ 3, подчиненый документ 5

А надо получить
- Выборка
- строка 1, заказ 1, подчиненый документ 4
- строка 2, заказ 2, подчиненый документ 3
- строка 3, заказ 3, подчиненый документ 5


Вот так.

ЗЫ: Повторюсь, параметры в запрос динамического списка не передаются. Во всяком случае для формы списка документов.
- Выборк


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

World1С Подменю пользователя
сообщение 16.03.11, 11:51
Сообщение #20

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

А группировать по заказу разве нельзя? Сделайте группировку по ЗаказСсылка.


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

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


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

 

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