|
Правильно ли составляю запрос к документам? | ☑ | ||
---|---|---|---|---|
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С найдешь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |