|
OFF: Непонятный запрос - как вы поступаете в подобной ситуации? | ☑ | ||
---|---|---|---|---|
0
Stella0608
22.02.13
✎
11:54
|
Тема скорее пятничная.
Вот откапываете вы какой-то отчет, который писал человек, который давно уже свалил, вы его и в глаза не видели. Вам (возможно частично) он кажется откровенно нубским. Но есть вероятность, что отчет гениален, а это вы - нуб и этого не понимаете. Вот как определить, кто именно в данном случае нуб? :) |
|||
38
Тролль главный
22.02.13
✎
12:24
|
(34) всех устраивало ведь?
|
|||
39
Stella0608
22.02.13
✎
12:25
|
(35) Не, я согласна зваться нубом, но такое точно делать не буду :).
|
|||
40
viktor_vv
22.02.13
✎
12:25
|
(36) Ну глянь на регистр, флаг Быстрая обработка движений стоит ?
Можно поставить, если нету, немного распухнет таблица движений, но можно будет выкинуть джойн с журналом. |
|||
41
Shurjk
22.02.13
✎
12:26
|
(0) Обидеть художника может каждый, так же и докапаться к любому коду можно. Главный критерий это то пользуеются ли этим отчетом и есть ли к нему притензии от пользователей.
|
|||
42
viktor_vv
22.02.13
✎
12:28
|
(40)+ И выкинь это
| AND ($ФлагРегистра.Взаиморасчеты = 1) Оно там всеравно нафик не надо, из-за этого можешь в индекс не попасть. |
|||
43
dmpl
22.02.13
✎
12:29
|
(36) Ну естественно тормозит. Ты соединяешь кучу движений регистра с кучей записей из журнала документов. А надо-то тебе выбрать всего лишь клиентов... Уменьшай развер соединяемых таблиц.
(39) Ну, попробуй для начала переделать этот запрос. Получится быстрее и на встроенном языке 7.7 - значит, смело называй автора запроса нубом. |
|||
44
Stella0608
22.02.13
✎
12:30
|
Я не понимаю, если мне надо с даты Х отобрать клиентов, зачем смотреть все движения по всем клиентам ДО даты Х...
|
|||
45
viktor_vv
22.02.13
✎
12:30
|
(43) Нет, там выбираются клиенты по которым были движения до определенной даты.
|
|||
46
Азазель
22.02.13
✎
12:30
|
(41) *так же = также;
*докапаться= докопаться; *пользуеются =пользуется; *притензии= претензии; |
|||
47
viktor_vv
22.02.13
✎
12:31
|
(44) Это уже вопрос к (38), отсюда не видно, что там дальше с ними делают.
|
|||
48
rs_trade
22.02.13
✎
12:32
|
(0) Нуб автор, ибо такие вопросы задает. Работает отчет, не трож. Не работает, перепиши.
|
|||
49
acsent
22.02.13
✎
12:33
|
(43) >>Уменьшай развер соединяемых таблиц
Не правильный совет Правильно нужно в индекс попадать |
|||
50
Stella0608
22.02.13
✎
12:34
|
Отчет работать перестал после того как в справочник была проставлен реквизит.
Проблема в том, что проставлять реквизит я как бы умею... |
|||
51
dmpl
22.02.13
✎
12:35
|
(45) Ну и? Зачем соединять таблицу всех движений, когда достаточно просто получить таблицу клиентов? Или что, у движений даты нет? Да даже просто группировка исходной таблицы до клиент и iddoc вполне может в разы сократить размер соединяемой таблицы.
(49) Уменьшение размеров таблиц дает эффект всегда, и, в общем-то, при правильной реализации не мешает получить бонус от попадания в индекс. |
|||
52
Stella0608
22.02.13
✎
12:39
|
Остальной код выложить, или же тупо забиваем и решаем, что я всегда - нуб? :(
|
|||
53
McNamara
22.02.13
✎
12:39
|
(0)Нуб тот кто писал этот отчет, потому что ты можешь сейчас это аргументировать начальству, а тот кто его писал, уже нет, да и ему уже пофиг на это.
|
|||
54
viktor_vv
22.02.13
✎
12:40
|
(51) Ты не поверишь, но у движений в частном случае даты нет :).
|
|||
55
exwill
22.02.13
✎
12:41
|
(0) Не хочется тебя расстраивать, но...
Ответ на вопрос кто из вас нуб содержится в самом факте вопроса. |
|||
56
VladZ
22.02.13
✎
12:42
|
(52) Не комплексуй. Ты молодец! :)
|
|||
57
Эмбеддер
22.02.13
✎
12:45
|
странное конечно условие дата<значение. чем больше данных в базе, тем дольше будет выполняться запрос. прямопропорционально. хотя возможно, что регистры накопления организованы неправильно
|
|||
58
dmpl
22.02.13
✎
12:49
|
(54) Ну тогда это меняет дело. Хотя почему бы в таком случае не выбрать клиентов из проведенных документов? Зачем тогда таблица регистра?
|
|||
59
Stella0608
22.02.13
✎
12:52
|
ИМХО, если отчет формируется за период, смотреть всю таблицу регистра вообще нет смысла. Достаточно взять клиентов за этот период и проверить по старым движениям, даже если это так требуется.
Но интересен вопрос в общем. Пока, наверное, ближе всего к истине (4)... |
|||
60
viktor_vv
22.02.13
✎
12:53
|
(58) Потому что признак проведения документа не дает гарантии что он сделал движения конкретно в этот регистр.
|
|||
61
dmpl
22.02.13
✎
12:56
|
(60) Дык нафига тогда документ "РасходнаяКредит" с нулевой суммой? Или в какой еще ситуации такой документ не делает движений по взаиморасчетам? И, кстати, вопрос - а не должны ли попадать такие клиенты в отчет?
|
|||
62
viktor_vv
22.02.13
✎
12:56
|
(51) Группировка по клиенту и iddoc в данном случае ничего не даст, полюс не забываем, что в скуле вы не задаете порядок обработки данных, вы только описываете, что вы хотите получить, а как там уже скуль построит план запроса, можно только примерно прикинуть.
|
|||
63
dmpl
22.02.13
✎
12:57
|
(62) От конфигурации зависит. Если взаиморасчеты ведутся до позиции номенклатуры - еще как даст.
|
|||
64
viktor_vv
22.02.13
✎
13:01
|
(63) Не, ну это уже фантастика :).
Я к тому, что может и так быть, но очень вряд ли. |
|||
65
JustBeFree
22.02.13
✎
13:01
|
(0) А какая разница КАК написан отчет ? Он либо работает (в смысле ПРАВИЛЬНО работает), либо - нет.
|
|||
66
dmpl
22.02.13
✎
13:04
|
(64) Какая фантастика? Я такое реализовывал... потому что просто распределение по процентам начальство не устраивало - люди брали товар на реализацию и платили по мере реализации за вполне конкретный товар... считай, комиссионная торговля, только без отчетов комиссионеров.
|
|||
67
Stella0608
22.02.13
✎
13:08
|
(65) Ну он может работать быстро, либо медленно и печально.
В данном случае второе плюс есть ошибка, до которой никак не могу докопаться. |
|||
68
SherifSP
22.02.13
✎
13:11
|
(0) У кого меньше кода и производительность лучше, тот крутой)
|
|||
69
dmpl
22.02.13
✎
13:13
|
(67) В данном случае надо уточнить, зачем выбираются движения по регистру, а не документы. И правильно ли это.
И что за ошибка-то? |
|||
70
viktor_vv
22.02.13
✎
13:13
|
(67) Там еще вот это Р.Debkred=1 в условии убивает его сильно плюс неизвестно, что в ТекстУсловий.
Здесь опять же, насколько надо условие на направление движения Расход (кажется), зависит от требований к отчету. |
|||
71
Aleksey
22.02.13
✎
13:14
|
(44) Например, чтобы исключить старых клиентов, по которым были движения до даты Х
|
|||
72
Stella0608
22.02.13
✎
13:21
|
(71) Непонятно как понять, стояла ли такая задача.
К тому же, допустим, в отчет надо вывести клиентов за такой-то месяц. Допустим, это 50 клиентов. Не логичнее ли проверить, присутствовали ли эти 50 клиентов в старых движениях, нежели получать все движения с момента работы базы. Или же я все-таки нуб? :(. |
|||
73
viktor_vv
22.02.13
✎
13:25
|
(72) Ну в том запросе в результат и выходят только клиенты, а не все движения.
Плюс для проверки, были ли в старых движениях эти 50 клиентов, все равно придется накладывать условия по дате на движения регистра, получится примерно та же песня, только вид сбоку. |
|||
74
Stella0608
22.02.13
✎
13:27
|
(73) Да, но все старые 10 000 клиентов не будут выгружены в ТЗ и не будут забивать оперативу. Или же разницы нет?
|
|||
75
Dmitry77
22.02.13
✎
13:28
|
(0) срочно замуж. Уже предлагали?
|
|||
76
viktor_vv
22.02.13
✎
13:29
|
(74) С этой точки зрения, да, разница есть.
|
|||
77
Stella0608
22.02.13
✎
13:29
|
(75) Да. Детей тоже предлагали. :)
А почему, кстати? |
|||
78
IKSparrow
22.02.13
✎
13:37
|
(50) Ну судя по результату, всё-таки не умеешь добавлять реквизиты.
|
|||
79
IKSparrow
22.02.13
✎
13:38
|
О детская невинность, о молодость... Надо было поднять тему, вместо того, чтобы сесть и прикинуть свои варианты реализации запроса. Делов то...
|
|||
80
Stella0608
22.02.13
✎
13:40
|
(78) Реквизит не добавлялся, а правился. Обработкой. Которую дал бывший программер :). Уже сто раз об этом пожалела.
Какой он был раньше - не помню. И имеет ли отношение данный реквизит к этой проблеме - тоже не знаю. Совпадение удивляет, но в селекте я в упор не вижу данного реквизита :). |
|||
81
Stella0608
22.02.13
✎
13:40
|
Мне озвучили еще 2 варианта - "оба нубы" и "заниженная самооценка" :).
|
|||
82
dmpl
22.02.13
✎
13:41
|
(80) Да давно бы уже выбрала штатным запросом из документов нужных клиентов...
|
|||
83
viktor_vv
22.02.13
✎
13:43
|
(80) Случайно (38) не является тем самым бывшим программистом :), судя по его эмоциональной реакции ?
А то меня все мучает этот вопрос :). Хочется скандалов, интриг, расследований. |
|||
84
Stella0608
22.02.13
✎
13:43
|
(82) Хыыы. Размер базы озвучить или не стоит?
Скажем так, документы за день без правильных индексов выбираться будут ну ооочень долго :). |
|||
85
Stella0608
22.02.13
✎
13:44
|
А мне интересно выяснить, почему все на мисте советуют замуж.
Уже не первая ветка, однако :). |
|||
86
bushd
22.02.13
✎
13:45
|
(0) отчет работает? Ну и все чо. Не нравится - свой напиши.
|
|||
87
Фея с лопатой
22.02.13
✎
13:46
|
Старые отчеты от предыдущих программеров та еще тема... Обычно приходится с нуля переписывать, чем переделывать этот гуанокод.
|
|||
88
Stella0608
22.02.13
✎
13:47
|
Кстати, в этом же отчете есть селекты, которые, по моему мнению, писали не нубы. Но выяснить, кто именно что писал - уже нет возможности...
|
|||
89
viktor_vv
22.02.13
✎
13:47
|
(84) Да ладно, ты ж писала 5 Gb, вроде немного, хотя непонятно за какой период насобиралось.
В день наверное тысячи две, максимум, документов. |
|||
90
zippygrill
22.02.13
✎
13:47
|
(85) да так по приколу :)
|
|||
91
Dmitry77
22.02.13
✎
13:48
|
(77) анекдот есть
Замуж, дура! Срочно замуж! Молодая, симпатичная девушка приходит в церковь, подходит к священнику. При этом, на ней ни макияжа, ни бижутерии, ничего, даже одежда консервативно-строгая. Потупив голову спрашивает: "Батюшка, а как вы понимаете концепцию протеирея Феофана о социально-патриархальном единении души человека с Господом Богом, на основании религиозных воззрений, высказанную для русской проваславной епархии в Париже"? Батюшка: "Замуж, дура! СРОЧНО ЗАМУЖ!" |
|||
92
dmpl
22.02.13
✎
13:48
|
(84) Ну так в указанном запросе выбираются вообще все документы, и не за 1 день... Так что по-любому быстрее будет если в индекс не попадешь ;)
|
|||
93
viktor_vv
22.02.13
✎
13:48
|
(87) Это типа один гуанокод заменять на другой :).
Это я не лично, а так в общем. |
|||
94
andrewalexk
22.02.13
✎
13:49
|
(0) :)...а зачем? чсв качать? исправь то что считаешь неверным и считай себя 22см
|
|||
95
McNamara
22.02.13
✎
13:50
|
(94) тогда уж "считай себя с 5-м размером")
|
|||
96
Stella0608
22.02.13
✎
13:50
|
(89) 5GB - это другая база. Тут много десятков гигабайт.
Реиндексацию уже сто лет как не делаем; новые реквизиты в справочник пихаем... |
|||
97
viktor_vv
22.02.13
✎
13:51
|
(94) Ну с ее полом как-то сложно с 22 см будет :).
|
|||
98
andrewalexk
22.02.13
✎
13:53
|
(97) :) мальчишка.....у девочек аналог -22см
|
|||
99
viktor_vv
22.02.13
✎
13:53
|
(96) А сколько этот запрос по времени выполняется, секунды, минуты, часы ?
|
|||
100
Stella0608
22.02.13
✎
13:54
|
(99) Минуты. Но у нас индексы правильные :).
|
|||
101
viktor_vv
22.02.13
✎
13:54
|
(98) Мне больше нравится аналог как в (95) :)).
|
|||
102
Stella0608
22.02.13
✎
13:55
|
Мне не нравится 5 размер, мне и моего 3 много...
|
|||
103
andrewalexk
22.02.13
✎
13:56
|
(101) :) вот видишь...а ТС нет
|
|||
104
viktor_vv
22.02.13
✎
13:57
|
(100) Ну таки попробуй для эксперимента выкинуть из условия вот это
Р.Debkred=1 и из полей соединения вот это | AND ($ФлагРегистра.Взаиморасчеты = 1) что получится по времени ? |
|||
105
Sh1ko
22.02.13
✎
14:01
|
про сиськи уже было?
|
|||
106
andrewalexk
22.02.13
✎
14:03
|
(105) :) фотка ТС в ЛК, 3р.
|
|||
107
viktor_vv
22.02.13
✎
14:03
|
(105) Почему было? Есть в личке у ТС немного, все как положено :).
|
|||
108
Stella0608
22.02.13
✎
14:05
|
(104) Сейчас пробую :).
Меня этот отчет уже задолбал; засунула запрос в отдельную обработку. |
|||
109
Stella0608
22.02.13
✎
14:32
|
В отдельной обработке производительность запроса без этих 2х строчек не изменилась.
Однако там же он тормозит почему-то сильно меньше, чем в большом запросе. |
|||
110
фобка
22.02.13
✎
14:38
|
(109) не надо их убирать, они могут как выпасть из индекса так и наоборот попасть в какую-то схему.
Текст запроса полностью с условием |
|||
111
dmpl
22.02.13
✎
14:38
|
(109) Когда SQL сервер одномоментно видит столько нубских ошибок, ему становится плохо, и он пока не придет в себя - тормозит :)
|
|||
112
viktor_vv
22.02.13
✎
14:39
|
(109) Это в каком большом запросе, и как они связаны?
Похоже тут конкурс телепатов таки. |
|||
113
фобка
22.02.13
✎
14:40
|
(110) если исходить из этого
"Смутила вот эта строчка AND (Жур.Date_Time_IDDoc < :ДатаНачала) Учитывая, что запрос должен выполняться, если стоит галка "Только новые клиенты с ДатаНачала" " должен быть еще один запрос после выполнения этого |
|||
114
viktor_vv
22.02.13
✎
14:41
|
(110) Че то я этих полей ни в одном из индексов, что журнала, что таблицы движений не наблюдаю.
Ну оно в принципе уже не важно, раз не влияет на скорость. |
|||
115
Stella0608
22.02.13
✎
14:42
|
Нет, нужна общая идея как отличить нуба от не-нуба.
Кстати, только что нашла у себя нубскую ошибку (правда исправила :))) (113) Запрос есть, кидать? P.S. сделала поиск по всему отчету по реквизиту, который правила - не вижу его вообще... в принципе... |
|||
116
фобка
22.02.13
✎
14:44
|
(115) что за странные идеи, вообще? "нуб" - это понятие из компьютерных игр, означает новичок (пренебрежительно).
Работает - хорошо, медленно работает - оптимизируй запрос. Кидай, чо уже там, нужно смотреть в комплексе |
|||
117
andrewalexk
22.02.13
✎
14:46
|
(116) :) это было давно и неправда...."независимо от того что и как вы делаете, нуб - это всякий кто делает это хуже, а задрот - кто лучше"
|
|||
118
Stella0608
22.02.13
✎
14:47
|
ТзОст = глСессия.ВыполнитьИнструкцию(ТекстЗапроса);
//теперь выбираем справочник ТекстУсловий=""; Если флГоловнойКлиент=1 Тогда Если СписКлиентов.РазмерСписка()>0 Тогда ТекстУсловий=ТекстУсловий+" | AND ($Спр.ГоловнойКлиент IN (SELECT Val FROM #СписКлиентов))"; глСессия.УложитьСписокОбъектов(СписКлиентов, "#СписКлиентов", "Клиенты"); КонецЕсли; КонецЕсли; Если ВыбКлиент.Выбран()=1 Тогда Если ВыбКлиент.ЭтоГруппа()=1 Тогда ТекстУсловий=ТекстУсловий+" | AND (Спр.ID IN (SELECT Val FROM #ВыбКлиент))"; глСессия.УложитьСписокОбъектов(ВыбКлиент, "#ВыбКлиент", "Клиенты"); Иначе ТекстУсловий=ТекстУсловий+" | AND (Спр.ID =:ВыбКлиент)"; глСессия.УстановитьТекстовыйПараметр("ВыбКлиент",ВыбКлиент); КонецЕсли; КонецЕсли; ТекстЗапроса=" |SELECT | Спр.ID [Клиент $Справочник.Клиенты], | $Спр.ГоловнойКлиент [ГоловнойКлиент $Справочник.Клиенты], | 0 Уд |FROM | $Справочник.Клиенты as Спр (nolock) |WHERE | Спр.IsFolder = 2 AND | Спр.IsMark = 0 |"+ТекстУсловий+" |Order by | $Спр.ГоловнойКлиент,Спр.ID"; глСессия.РежимRPC(1); глСессия.Отладка(Отладка); ТзСпр = глСессия.ВыполнитьИнструкцию(ТекстЗапроса); Если Отладка=1 Тогда глПросмотрТСЗ(ТзСпр, "Справочник клиентов"); глПросмотрТСЗ(ТзОст, "Регистр взаиморасчетов"); КонецЕсли; ПомеченоСтр=0; ТзСпрСтрок = ТзСпр.КоличествоСтрок(); Для счЦ=1 По ТзСпрСтрок Цикл ТзСпр.ПолучитьСтрокуПоНомеру(счЦ); ГоловнойКлиент = ТзСпр.ГоловнойКлиент; Если ПустоеЗначение(ГоловнойКлиент)=0 Тогда //клиент тогда не интересен Стр=0; Если ТзОст.НайтиЗначение(ГоловнойКлиент,Стр,"ГоловнойКлиент")=1 Тогда ТзСпр.Уд = 1; //значит продавал от кого-то ПомеченоСтр = ПомеченоСтр+1; КонецЕсли; Иначе Стр=0; Если ТзОст.НайтиЗначение(ТзСпр.Клиент,Стр,"Клиент")=1 Тогда ТзСпр.Уд = 1; //значит продавал ПомеченоСтр = ПомеченоСтр+1; КонецЕсли; КонецЕсли; КонецЦикла; сзНов=СоздатьОбъект("СписокЗначений"); Если ПомеченоСтр>0 Тогда Если ПомеченоСтр = ТзСпр.КоличествоСтрок() Тогда ТзСпр.УдалитьСтроки(); Иначе ТзСпр.Сортировать("Уд-"); ТзСпр.Выгрузить(сзНов,ПомеченоСтр+1, ,"Клиент"); КонецЕсли; Иначе ТзСпр.Выгрузить(сзНов, , ,"Клиент"); КонецЕсли; Если Отладка=1 Тогда глПросмотрТСЗ(сзНов, "сзНов"); глПросмотрТСЗ(ТзСпр, "Новые клиенты"); КонецЕсли; Возврат сзНов; |
|||
119
Stella0608
22.02.13
✎
14:49
|
Ну вот могу привести пример своей нубской ошибки (правда, исправленной, но на нее ушли пара часов :()
СпрКл = СоздатьОбъект("Справочник.Клиенты"); СпрКл.НайтиПоКоду("003041660049"); Сообщить(ТзОст.НайтиЗначение(СпрКл,"","Клиент")); |
|||
120
andrewalexk
22.02.13
✎
14:51
|
:)...это не пример нубской ошибки...это пример нубского кода
|
|||
121
Stella0608
22.02.13
✎
14:52
|
(119) Код по определению нубский, т.к. это была отладка :).
Но вот этот самый нубский код содержал ошибку, на которую ушли пара часов... |
|||
122
Эльниньо
22.02.13
✎
14:52
|
(34) Везде один и тот же комментарий?
// // Писал нуб с жуткого бодуна // |
|||
123
Stella0608
22.02.13
✎
14:54
|
(122) Неа :(. Такой коммент ставлю я, когда реально пишу с бодуна :).
Насторожил тот факт, что при установке галки отчет начинал реально тормозить и вешать систему... |
|||
124
Эльниньо
22.02.13
✎
14:57
|
(123) Ты бываешь с жуткого бодуна?
Млин! А я чуть было не влюбился. ( |
|||
125
viktor_vv
22.02.13
✎
14:57
|
(123) Вот этой
Если флГоловнойКлиент=1 Тогда что ли ? И где тут то запрос, который раньше обсцждали ? |
|||
126
IVT_2009
22.02.13
✎
14:59
|
часть на свои отчеты прошлых лет гляжу и думаю ... с какого перепою это написано , хотя и написано не с перепою. с возрастом меняется немного подход , часть при параллельном изучении других языков программирования.
|
|||
127
Stella0608
22.02.13
✎
15:03
|
(125) После запроса что раньше обсуждали идет вышеприведенный код.
(126) О да, буквально вчера такое было :). |
|||
128
Stella0608
22.02.13
✎
15:18
|
(124) Ну такие как вы, которые чуть не влюбились, спаиваете :)
|
|||
129
фобка
22.02.13
✎
15:19
|
(127) с каким флагом "тормозит"?
|
|||
130
фобка
22.02.13
✎
15:21
|
(118) //теперь выбираем справочник
ТекстУсловий=""; Если флГоловнойКлиент=1 Тогда Если СписКлиентов.РазмерСписка()>0 Тогда ТекстУсловий=ТекстУсловий+" | AND ($Спр.ГоловнойКлиент IN (SELECT Val FROM #СписКлиентов))"; глСессия.УложитьСписокОбъектов(СписКлиентов, "#СписКлиентов", "Клиенты"); КонецЕсли; КонецЕсли; Если ВыбКлиент.Выбран()=1 Тогда Если ВыбКлиент.ЭтоГруппа()=1 Тогда ТекстУсловий=ТекстУсловий+" | AND (Спр.ID IN (SELECT Val FROM #ВыбКлиент))"; глСессия.УложитьСписокОбъектов(ВыбКлиент, "#ВыбКлиент", "Клиенты"); Иначе ТекстУсловий=ТекстУсловий+" | AND (Спр.ID =:ВыбКлиент)"; глСессия.УстановитьТекстовыйПараметр("ВыбКлиент",ВыбКлиент); КонецЕсли; КонецЕсли; ТекстЗапроса=" |SELECT | Спр.ID [Клиент $Справочник.Клиенты], | $Спр.ГоловнойКлиент [ГоловнойКлиент $Справочник.Клиенты], | 0 Уд |FROM | $Справочник.Клиенты as Спр (nolock) |WHERE | Спр.IsFolder = 2 AND | Спр.IsMark = 0 | AND Спр.ID NOT IN (SELECT Val FORM #СписокСтарыхКлиентов) | AND $Спр.ГоловнойКлиент NOT IN (SELECT Val FORM #СписокСтарыхГоловных) |"+ТекстУсловий+" |Order by | $Спр.ГоловнойКлиент,Спр.ID"; глСессия.РежимRPC(1); глСессия.Отладка(Отладка); СписокСтарыхКлиентов = СоздатьОбъект("СписокЗначений"); СписокСтарыхГоловных = СоздатьОбъект("СписокЗначений"); ТзОст.Выгрузить(СписокСтарыхКлиентов,,,"Клиент"); ТЗВрем = СоздатьОбъект("ТаблицаЗначений"); ТзОст.Выгрузить(ТЗВрем); ТЗВрем.Свернуть("ГоловнойКлиент",); ТЗВрем.Выгрузить(СписокСтарыхГоловных); СписокСтарыхГоловных.УдалитьЗначение(СписокСтарыхГоловных.НайтиЗначение(ПолучитьПустоеЗначение("Справочник.Клиенты")));// удалим пустое если было глСессия.УложитьСписокОбъектов(СписокСтарыхКлиентов, "#СписокСтарыхКлиентов"); глСессия.УложитьСписокОбъектов(СписокСтарыхГоловных, "#СписокСтарыхГоловных"); ТзСпр = глСессия.ВыполнитьИнструкцию(ТекстЗапроса); сзНов = СоздатьОбъект("СписокЗначений"); ТзСпр.Выгрузить(сзНов, , ,"Клиент") Если Отладка=1 Тогда глПросмотрТСЗ(ТзСпр, "Справочник клиентов"); //глПросмотрТСЗ(ТзОст, "Регистр взаиморасчетов"); КонецЕсли; Возврат сзНов; |
|||
131
Stella0608
22.02.13
✎
15:21
|
(129) При установке данного флага выполняются все запросы, приведенные выше. Функция возвращает сзНов и пихает его в основной селект. Как-то так.
Без него эта функция вообще не выполняется и тормозов нет. |
|||
132
фобка
22.02.13
✎
15:27
|
(131) и в чем тормоза? долго отчет формируется?
Регистр распух значит уже.. Думаю можно добавить для клиентов новый реквизит - Дата создания и опираться уже на него |
|||
133
Stella0608
22.02.13
✎
15:35
|
(132)
1) Реквизит уже есть. Собственно он и правился. Сейчас выясняю, почему клиенты в отчет не попадают. 2) В справочник Клиенты нельзя добавить новый реквизит. Объем базы слишком велик. И вообще, тема была не об этом. :( |
|||
134
фобка
22.02.13
✎
15:42
|
(133) ну, если тема в "нубстве" только..
Все были нубами когда-то, не все ли равно?) каждый пишет как позволяют ему его способности и знания. Если отчет кажется "нубским" - пусть так и будет, и не парься, Можно переписать под себя - тебе же с этим работать. |
|||
135
viktor_vv
22.02.13
✎
16:00
|
(133) Поэкспериментировал немного, интересно стало.
Замени inner на Left тут |FROM | $Регистр.Взаиморасчеты Р (nolock) |INNER JOIN | _1sjourn Жур (nolock) ON Р.iddoc = Жур.iddoc там где справочник джойнится оставь inner. Должно полегчать. Ну и что-то типа (130), чтоб не насиловать ТЗ. |
|||
136
Stella0608
22.02.13
✎
16:03
|
Я пока что пришла к выводу, что мы оба нубы :(.
|
|||
137
Stella0608
22.02.13
✎
16:53
|
Предварительный вердикт такой:
1) Код нубский; 2) Пока я его не переписала на работающий не-нубский я тоже нубас :). И кстати, пока прихожу к выводу, что правка справочника тут все-таки не причем... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |