Имя: Пароль:
1C
 
Правильно ли составляю запрос к документам?
0 Wirtuozzz
 
31.01.16
15:35
Добрый день. Сразу попрошу не пинать сильно. Итак, задача у меня сделать печатную форму для документа Х.
Сложность, заключается в том, что в ТЧ документа Х содержатся ссылки на документы У.
База серверная, данных очень много поэтому запрос должен быть грамотно составлен, что бы не повесить сервер.
Составляю запрос:

ВЫБРАТЬ
    ДокументХ.Ссылка
ПОМЕСТИТЬ ВтДокументыХ
ИЗ
    Документ.ВтДокументыХ КАК ДокументХ
ГДЕ
    ДокументХ.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтДокументыХ.Ссылка КАК Ссылка1,
    ДокументУ.Ссылка,
    ДокументУ.НомерИсходногоДокумента,
    ДокументУ.НомерИсправленияИсходногоДокумента
ИЗ
    ДокументХ КАК ДокументХ
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДокументУ КАК ДокументУ
        ПО ВтДокументыХ.Ссылка = Выразить( ДокументУ.ДокументОснование КАК Документы.ДокументХ)
ГДЕ
    ДокументУ.Ссылка В
            (ВЫБРАТЬ
                ВтДокументыХ.Ссылка
            ИЗ
                ВтДокументыХ КАК ВтДокументыХ)
Это не правильный подход?
1 Wirtuozzz
 
31.01.16
15:43
Или надо из ТЧ докуметаХ сразу вытаскивать ссылки на документУ, помещать в ВТ, потом из вт вытаскивать в результирующую таблицу?
2 ДенисЧ
 
31.01.16
15:43
Let me unseen it!...
3 Wirtuozzz
 
31.01.16
15:43
Или это будет в принципе одно и тоже?
4 Wirtuozzz
 
31.01.16
15:44
(2) не понял? ты хочешь увидеть или не хочешь видеть?
5 ДенисЧ
 
31.01.16
15:45
(4) На русский это переводится приблизительно как "развидеть"....
6 Wirtuozzz
 
31.01.16
15:47
(5) Запрос нужен?
7 mistеr
 
31.01.16
15:58
(0) Тебе нужно просто получить некоторые реквизиты документа Y? Тогда временные таблицы тут лишние. Наоборот, дополнительная нагрузка на сервер. Соединяй ТЧ с таблицей документа сразу и все.
8 Wirtuozzz
 
31.01.16
16:00
ВЫБРАТЬ
    ДокументХ.Ссылка
ПОМЕСТИТЬ ВтРеализация
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументХ
ГДЕ
    ДокументХ.Ссылка = &Ссылка
;

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

Хорошо, вот запрос. Какой будет алгоритм поиска СФВ? скажите пожалуйста.
9 mistеr
 
31.01.16
16:03
(8) >Какой будет алгоритм поиска СФВ?

А в типовой посмотреть? Там, где на форме реквизиты СФВ показываются?
10 Wirtuozzz
 
31.01.16
16:10
(9) Я имел в виду в запросе как будет искаться СФв ? Т.е. сначала будут выбраны все Сфв за весь период, а потом сработает условие, на проверку, что основание СФв это документ реализация, потом уже только будет попытка соединить две таблицы по указанному условию соединения таблиц?
11 Drac0
 
31.01.16
16:11
(8) Вот ты сам п русски можешь объяснить, что делаешьэтим запросом?

"Сохраняю во временную таблицу нужную реализацию, потом выираю из этой таблицы строки и соединяю с ними..." И так далее?
12 GreatOne
 
31.01.16
16:15
-запрос должен быть грамотно составлен, что бы не повесить сервер.

Какой серьёзный подход к написанию печатной формы)
13 GreatOne
 
31.01.16
16:18
В общих модулях есть функция поиска сф к документу, вроде ЕстьСчетФактура(); Найдёшь в модуле реализации её вызов.
14 GreatOne
 
31.01.16
16:18
И обойдешься вообще без запроса
15 Wirtuozzz
 
31.01.16
16:22
Хорошо какой алгоритм построения запроса для решения такой задачи:
Необходимо получить стогимость Номенклатуры в выбранном типе цен, которая была оплачена в документе ПКО.

Там структура будет такая :
1. Док ПКО - > В тч находятся реализации, которые оплачены, в реализациях товар.

Особое условие что документов реализаций очень очень много.
16 GreatOne
 
31.01.16
16:37
Запрос к объекту документ редко когда нужен. Посмотри движения ПКО. У счета 62 третье субконто - документ расчетов, в них будет лежать твоя реализация. Далее из них тяни номенклатуру и левым соединением цену ставь.
17 GreatOne
 
31.01.16
16:38
(15) очень и очень много - это сколько?
18 Wirtuozzz
 
31.01.16
16:40
Вот накидал запрос, прошу любить и жаловать.

ВЫБРАТЬ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК СсылкаПриходныйКассовыйОрдер,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.ОснованиеПлатежа КАК ОснованиеПлатежа
ПОМЕСТИТЬ ВТОснования
ИЗ
    Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
ГДЕ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка = &Ссылка

ИНДЕКСИРОВАТЬ ПО
    ОснованиеПлатежа
;

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

Теперь вопрос знатокам: если у меня в базе несколько сотен тысяч документов Реализаций товаров, то запрос базу повесит потому что он не оптимизированный или он будет работать долго, потому что банально большой объем данных?
И оптимально ли составлен запрос? или можно по другому собрать его, так сказать более правильно?
19 GreatOne
 
31.01.16
16:42
Миша, все х**ня (с)

Покупай книжку по запросам.
20 Wirtuozzz
 
31.01.16
16:43
Наверное так будет более правильно

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

ИНДЕКСИРОВАТЬ ПО
    ОснованиеПлатежа
;

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

Сразу скажу, что смотрю только документы реализации т.к. для остальных будет идентично.
21 Wirtuozzz
 
31.01.16
16:43
(19) что не так?
22 GreatOne
 
31.01.16
16:43
Кстати, если что и повесит сервер, то не реализация, а обращение к объекту ПКО через точку
23 Drac0
 
31.01.16
16:44
(20) Ты мне хот бы объясни, зачем тебе секция ГДЕ?
24 GreatOne
 
31.01.16
16:44
Ты вообще понимаешь, что брать данные из объекта - затея бредовая?
25 GreatOne
 
31.01.16
16:45
(23) чтоб наверняка)) Еще в три попытки обернуть
26 Wirtuozzz
 
31.01.16
16:46
(23) какая именно секция?
27 Wirtuozzz
 
31.01.16
16:47
(24) как надо делать? откуда брать данные?
28 Drac0
 
31.01.16
16:50
(26) Вторая.

(27) Регистры
29 GreatOne
 
31.01.16
16:50
(27) не поверишь, регистры!
30 Wirtuozzz
 
31.01.16
16:54
(29) РЕГИСТРЫ!!! Это хорошо.
Но полностью мою задачу не решит.
31 Wirtuozzz
 
31.01.16
16:57
Короче чет я вообще ступил конкретно. Надо все из регистров брать.
32 Wirtuozzz
 
31.01.16
17:04
Вопрос для собственного развития. А конструкция отбора, мною предложенная как будет отработана? Т.е. все равно все документы РТиУ будут просмотрены, и в момент перебора будут условия накладываться?
33 GreatOne
 
31.01.16
17:06
(32) ГДЕ - это значит из полученного результата что-то отобрать.
34 Wirtuozzz
 
31.01.16
17:08
(33) Спасибо.
35 Wirtuozzz
 
31.01.16
17:26
А такой момент. в (20) в итоговом запросе есть конструкция где. Она поможет сократить время исполнения запроса? или только удлинит?
36 GreatOne
 
31.01.16
17:38
(35) встречный вопрос: а зачем она там нужна?
37 Wirtuozzz
 
31.01.16
17:45
(36) Скажем я буду цену искать из РС "цены номенклатуры" с определенным видом. Так что будет? Быстрее с "Где" или не конструкция не сыграет роли?
38 GreatOne
 
31.01.16
17:45
С такой кашей в голове на подобные темы лучше не рассуждать. Читай книжку по запросам, на сайте 1С найдешь.