Имя: Пароль:
1C
1С v8
1С+PostgreSQL - запрос ложит 1С-ку
0 024410
 
29.08.11
23:37
Доброе время суток!
У кого есть опыт работы 1С + ___
Такая ситуация пишу запрос (текст в самом низу поста). В файловой версии работает, в клиент-серверном варианта либо умирает rphost, либо запрос выполняется 2-3 часа... Причиной всему последнее ПОЛНОЕ соединение, если его поменять на левое, то все ок. Запрос как бэ без особых косяков или...?



ВЫБРАТЬ
   АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Заказ
ПОМЕСТИТЬ ЗапрещенныеЗаказы
ИЗ
   Документ.АБП_ЗаданиеНаПогрузку.ЗаказыИРеализации КАК АБП_ЗаданиеНаПогрузкуЗаказыИРеализации
ГДЕ
   (НЕ АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Ссылка.ПометкаУдаления)
   И АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Заказ.ДатаОтгрузки МЕЖДУ &НачалоПериода И &КонецПериода
   И АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Ссылка <> &текДок
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказПокупателя.Ссылка КАК Заказ,
   ЗаказПокупателя.ДатаОтгрузки,
   ЗаказПокупателя.Контрагент,
   ВЫБОР
       КОГДА ЗаказПокупателя.Проведен
           ТОГДА 1
       КОГДА ЗаказПокупателя.ПометкаУдаления
           ТОГДА -1
       ИНАЧЕ 0
   КОНЕЦ КАК СостояниеЗаказа
ПОМЕСТИТЬ ЗаказыПокупателей
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
   ЗаказПокупателя.Проведен
   И ЗаказПокупателя.ДатаОтгрузки МЕЖДУ &НачалоПериода И &КонецПериода
   И (НЕ ЗаказПокупателя.Ссылка В
               (ВЫБРАТЬ
                   ЗапрещенныеЗаказы.Заказ
               ИЗ
                   ЗапрещенныеЗаказы))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РеализацияТоваровУслуг.Сделка КАК Заказ,
   РеализацияТоваровУслуг.Ссылка КАК Реализация,
   РеализацияТоваровУслуг.Склад КАК Автомобиль,
   РеализацияТоваровУслуг.Дата КАК ДатаРеализации,
   ЗначенияСвойствОбъектов.Значение КАК ТочкаМаршрута,
   РеализацияТоваровУслуг.Контрагент,
   ВЫБОР
       КОГДА РеализацияТоваровУслуг.Проведен
           ТОГДА 1
       КОГДА РеализацияТоваровУслуг.ПометкаУдаления
           ТОГДА -1
       ИНАЧЕ 0
   КОНЕЦ КАК СостояниеРеализации,
   РеализацияТоваровУслуг.АдресДоставки
ПОМЕСТИТЬ Реализации
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ПО (ЗначенияСвойствОбъектов.Свойство = &Маршрут)
           И РеализацияТоваровУслуг.Ссылка = ЗначенияСвойствОбъектов.Объект
ГДЕ
   (РеализацияТоваровУслуг.Сделка В
               (ВЫБРАТЬ
                   ЗаказыПокупателей.Заказ
               ИЗ
                   ЗаказыПокупателей)
           ИЛИ (НЕ РеализацияТоваровУслуг.Ссылка.Проведен)
               И (РеализацияТоваровУслуг.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода))
   И (НЕ РеализацияТоваровУслуг.ПометкаУдаления)
;

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

УПОРЯДОЧИТЬ ПО
   ДатаОтгрузки,
   Заказ
АВТОУПОРЯДОЧИВАНИЕ
1 Поручик
 
29.08.11
23:41
Ни хрена себе. А какова суть вопроса?
2 024410
 
29.08.11
23:42
а че нихрена простенький запрос. суть в том может кто скажет лыжи не едут или я ....?
3 024410
 
29.08.11
23:44
вообще нужно убедить заказчика поменять слона на что то другое, ну или как то его настроить этого слона, просто я в слонах вообще ни чего не понимаю, кроме того слона крутит местный админ на которого я никак не повлияю
4 Asmody
 
29.08.11
23:46
для начала — нахрена в запросе проскакивает конструкция ххх.Ссылка.yyy?
5 Jstunner
 
29.08.11
23:46
обычно, использование полного соединения говорит о корявости запроса
6 Asmody
 
29.08.11
23:46
от полного соединения можно избавится. например, объединением
7 Asmody
 
29.08.11
23:48
в-третьих, закинуть это всё в СКД (в разные наборы), и пусть платформа разрулит как ей удобно. (хотя это «в-третьих» надо уметь готовить)
8 024410
 
29.08.11
23:49
насчет полного соединия согласен - не кашерно, но всетаки не должно же полное соединение "ложить" СУБД, кроме того соединяются 2 небольшие таблицы совсем небольшие
9 024410
 
29.08.11
23:51
(7) СКД не умеет делать полного соединения, а если уж и прибегать к объединению, так можно и без СКД разрулить - это запрос не для отчета а "рабочий"
10 Поручик
 
29.08.11
23:53
(9) А ты профайлером его родимого или что там в постгре. Уверен, сильно оху..едивишься.
11 Господин ПЖ
 
29.08.11
23:53
я бы тоже положился...

1 000 слева 2 000 справа... 2 000 000 всего...
12 024410
 
29.08.11
23:53
как бы задача не столько разрулить конкретную ситуацию сколько понять что не так со слоном, потому как в типовых конфигурациях полное соединение встречается не часто но встречается
13 024410
 
29.08.11
23:54
(11) полное соединиее в данном случае увеличивает выборку аж на одну строку
14 024410
 
29.08.11
23:54
(11) кроме того в файловой версии работает
15 024410
 
29.08.11
23:55
(10) ссори "профайлером его родимого" это как? какая то есть улитка перехватывающая запросы?
16 Dethmont
 
29.08.11
23:56
Слишком много таблиц
17 Поручик
 
29.08.11
23:57
(15) Приблуда, показывающая транслированный запрос во всей его скульной красоте.
18 024410
 
29.08.11
23:57
(16) точно тока шо попробовал убрать первую таблицу - отработало
19 Dethmont
 
29.08.11
23:59
+(11) Я на СЕРВАКЕ одну ссылку со СКУЛЯ вытянуть не могу
20 Dethmont
 
29.08.11
23:59
тип ВСЕ ССЫЛКИ )))
21 024410
 
30.08.11
00:00
(16) однако, разве 4 таблицы это много. Я делал запросы и по 7-8 на DB2 и до 1000 записей и не че
22 Dethmont
 
30.08.11
00:00
А ты загрузил его под сотню таблиц тягать!!!!!!
23 Fragster
 
гуру
30.08.11
00:00
это из-за полного соединения, попробу заменить его на объединение, если получится. на крайняк - индексируй по полю соединения временные таблицы.
24 Dethmont
 
30.08.11
00:01
Какие 4!!! ПОСЧИТАЙ ВНИМАТЕЛЬНЕЕ!!!!
25 Dethmont
 
30.08.11
00:01
КАЖДАЯ ТОЧКА ТАБЛИЦА!!!!
26 024410
 
30.08.11
00:02
я имел ввиду 4 временные
27 Fragster
 
гуру
30.08.11
00:02
ну и по мелочи - РегистрСведений.ЗначенияСвойствОбъектов сначала отобрать по свойству, а потом уже соединять
28 Asmody
 
30.08.11
00:02
т.е. как-бы совет в (4) ТС плавно проигнорировал?
29 Asmody
 
30.08.11
00:03
и вообще, за отмазку «в файловой всё работает» надо гнать сцаными тряпками
30 Fragster
 
гуру
30.08.11
00:03
ну и да, (4) тоже немного добавит. но самый швах - это то, как постгре работает с полными соединениями :(
31 Dethmont
 
30.08.11
00:04
Говорю же тебе что у меня вот такой запрос на сервере не работате
"ВЫБРАТЬ
Рег.Ссылка КАК Блин
из
РегистрыСведений.СинхронизацияБляБля КАК РЕг
Где
Рег.Ссыдка.ПометкаУдаления"
32 Fragster
 
гуру
30.08.11
00:04
И (НЕ ЗаказПокупателя.Ссылка В
               (ВЫБРАТЬ
                   ЗапрещенныеЗаказы.Заказ
               ИЗ
                   ЗапрещенныеЗаказы))

заменить на левое соединение с тбором по есть не null
33 Dethmont
 
30.08.11
00:05
Ваще без соединений!!!!
Превышаю 256 таблиц
34 Dethmont
 
30.08.11
00:06
Да, нее запрос кривой, нужно пересмотреть структуру запроса.
35 024410
 
30.08.11
00:07
(23) Попробую проиндексировать
(28) та ни че я не игнорирую - пробую разные варианты - я ж чего и спрашиваю - просто я так думаю что если что работает на MSSQL и DB2 должно работать и на слоне. Конечно можно (и нужно ) оптимизировать запросы - это все знают - никаких точек и все такое просто с точками то быстрее, а времени иногда в обрез
36 Asmody
 
30.08.11
00:08
(33) Регистр.Ссылка? Гениально!
37 Asmody
 
30.08.11
00:08
(35) с точками не быстрее — 100%
38 Dethmont
 
30.08.11
00:08
Что гениально????
39 Asmody
 
30.08.11
00:09
(37)+ вторая точка — лишний join. почти всегда так
40 Asmody
 
30.08.11
00:09
(38) ссылка на регистр сведений. это в какой платформе?
41 Dethmont
 
30.08.11
00:10
Подскажи как правильно?
42 Dethmont
 
30.08.11
00:10
Мне нужно проверить все типы на пометкуУдаления
43 024410
 
30.08.11
00:10
(32) У меня всегда были сомнения насчет использования запросов в условиях, но как то 1С-совцы вроде пишут... Т.е. лучше юзать левое соединеие?
44 024410
 
30.08.11
00:11
(37) я имел ввиду бысрее писать запрос
45 Dethmont
 
30.08.11
00:11
(36) Подскажешь что ли?
46 Asmody
 
30.08.11
00:12
(43) не всегда. универсального рецепта нет. смотреть надо, анализировать
47 Asmody
 
30.08.11
00:12
(45) я не знаю платформы, где есть ссылка на регистр сведений. чем я могу помочь?
48 MikleV
 
30.08.11
00:13
(32)+1
49 Dethmont
 
30.08.11
00:14
Поле так называется!!!!
неужели не понятно!?!?!?!?!
50 Dethmont
 
30.08.11
00:14
Имеет тип "все ссылки"
51 MikleV
 
30.08.11
00:16
ыыыыыы
ВЫРАЗИТЬ
52 Dethmont
 
30.08.11
00:16
(47)Причом тут платформа?
(Кстати ссылка на регистр сведений есть!!!)
53 Dethmont
 
30.08.11
00:16
(51)Что выразить???
54 Asmody
 
30.08.11
00:17
(52) да?!!!! пойду-ка я спать. видимо, уже люди из параллельного мира на мисту пролезли. в «нашей» 8ке ссылок на запись РС нет
55 024410
 
30.08.11
00:18
(4) >> для начала — нахрена в запросе проскакивает конструкция ххх.Ссылка.yyy?
ВЫБРАТЬ
  АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Заказ
ПОМЕСТИТЬ ЗапрещенныеЗаказы
ИЗ
  Документ.АБП_ЗаданиеНаПогрузку.ЗаказыИРеализации КАК АБП_ЗаданиеНаПогрузкуЗаказыИРеализации
ГДЕ
  (НЕ АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Ссылка.ПометкаУдаления)
  И АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Заказ.ДатаОтгрузки МЕЖДУ &НачалоПериода И &КонецПериода
  И АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Ссылка <> &текДок

ссори а как же тут иначе? я обращаюсь к ТЧ документа, но меня интересут только ТЧ документов не помеченных на удаление в ТЧ ссылка на документ хранится в поле ССЫЛКА как иначе не пойму.
56 Dethmont
 
30.08.11
00:19
(54)База данных объектная????
57 024410
 
30.08.11
00:20
(56) ссылки есть на сам регистр на не на его записи, вот что имел ввиду   Asmody наверное. На записи ссылок нет.
58 Dethmont
 
30.08.11
00:21
))) Пусть книжки читает
59 Asmody
 
30.08.11
00:23
(55) у тебя там не один запрос
60 Dethmont
 
30.08.11
00:24
Ды кто нибудь подскажет как получить поле "все ссылки" запросом???
61 Asmody
 
30.08.11
00:25
(57) ссылка на регистр? Ну ка, ну ка
(58) это в какой книжке написано про ссылку на регистр?
62 Asmody
 
30.08.11
00:26
(60) за такое поле руки надо отрывать. По жопу.
63 024410
 
30.08.11
00:27
(61) Да точно... нету ссылок на регистр
64 Dethmont
 
30.08.11
00:27
(62) Согласен!!!
Но кто то сдлал, не исправишь уже. А вот ипатса мне с ним
65 Dethmont
 
30.08.11
00:28
Как запись региста находит себя на сервере???
66 MikleV
 
30.08.11
00:28
бугага
67 MikleV
 
30.08.11
00:28
давно я так не ржал
68 Dethmont
 
30.08.11
00:28
Наверное по случайным полям?)))
69 Asmody
 
30.08.11
00:29
(65) она там есть. Зачем ей себя находить?
70 024410
 
30.08.11
00:30
(59) >> у тебя там не один запрос
до конструкция типа ххх.Ссылка.yyy?
встречается только один раз:

АБП_ЗаданиеНаПогрузкуЗаказыИРеализации.Ссылка.ПометкаУдаления
71 024410
 
30.08.11
00:31
(68) Регистр сведений это таблица, которая содержит записи.
72 Asmody
 
30.08.11
00:31
(70) если что, ctrl+f
73 024410
 
30.08.11
00:32
(68) попробуй, например создать документ, добавить реквизит и положить туда регистр сведений
74 024410
 
30.08.11
00:32
(72) та пробовал вроде - щас еще погляжу
75 024410
 
30.08.11
00:34
(72) ну да есть еще в одном месте - уберу, может заработает :)
76 024410
 
30.08.11
00:35
В любом случаем всем спасибо, я уже 2-мя способами починил запрос
77 024410
 
30.08.11
00:37
щас еще поля проиндексирую - может и 3-й будет
Закон Брукера: Даже маленькая практика стоит большой теории.