|
v7: Обнаружил серьезную ошибку в типовых "торговых" конфах 7.7. | ☑ | ||
---|---|---|---|---|
0
seakuban
07.05.12
✎
22:56
|
Совершенно случайно, оптимизируя комплексную конфигурацию 7.7, довелось наткнуться на довольно глупую ошибку, допущенную штатными программистами ЗАО "1C" при проектировании "торговых конфигураций". Ошибка заключается в том, что алгоритм наложения фильтров на регистры (при подготовке таблицы итогов для использования в модуле проведения документов) не накладывает фильтр по списку номенклатуры табличной части, если на момент проведения документа итоги находятся в актуальном состоянии!
-- Вот текст данной функции (он одинаков в обоих рассматриваемых конфигурациях): --- Процедура глФильтрОстатковТМЦ(Конт,ТаблНоменклатуры, СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ = "") Экспорт ФирмаДляОстатковТМЦ = СписокПараметров.Получить("ФирмаДляОстатковТМЦ"); ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Фирма", ФирмаДляОстатковТМЦ,2); Если (ТипЗначенияСтр(ВремРезервыТМЦ) = "Регистр") Тогда ВремРезервыТМЦ.УстановитьЗначениеФильтра("Фирма",ФирмаДляОстатковТМЦ,2); КонецЕсли; Если Конт.ИтогиАктуальны()=0 Тогда // подготовка фильтров СписокТМЦ = СоздатьОбъект("СписокЗначений"); ТаблНоменклатуры.Выгрузить(СписокТМЦ,,,"Номенклатура"); // установка фильтров ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Номенклатура",СписокТМЦ,2); ВремОстаткиТМЦ.ВременныйРасчет(); Если (ТипЗначенияСтр(ВремРезервыТМЦ) = "Регистр") Тогда // установка фильтров ВремРезервыТМЦ.УстановитьЗначениеФильтра("Номенклатура",СписокТМЦ,2); ВремРезервыТМЦ.ВременныйРасчет(); КонецЕсли; КонецЕсли; КонецПроцедуры // ФильтрОстатковТМЦ() По тексту функции легко заметить, что фильтр по списку номенклатуры табличной части включается только в том случае, если на момент проведения документа итоги неактуальны. В том случае, если документ проводится на ТА, фильтр увы, не включается. Результат этой ошибки хорошо заметен на конфигурациях содержащих большой справочник номенклатуры. "Притормаживание" проведения документа ощутимое. -- источник: http://legion-service.org/error_v_konfah_tis_kompl_1c77.html |
|||
1
seakuban
07.05.12
✎
22:57
|
проверил последние типовые релизы - в них та же ошибка...
|
|||
2
BlackSeaCat
07.05.12
✎
23:02
|
Программисты 1С никогда не считали замедление ошибкой, как штатные, так и все остальные.
|
|||
3
seakuban
07.05.12
✎
23:03
|
причем в аналогичной функции глФильтрПартийТМЦ - подготавливающей к использованию регистр партий - такой ошибки нет. фильтры накладываются в при любом состоянии итогов. на конфигурации моего клиента (где примерно 50 тыс наименований номенклатуры и товарный остаток ~5000 позиций) эта ошибка сказывается ощутимым образом...
|
|||
4
seakuban
07.05.12
✎
23:04
|
(2) тут явная ошибка. такое ощущение что конфы правились/писались на скорую руку. больно уж тупая ошибка..(((
|
|||
5
viktor_vv
07.05.12
✎
23:18
|
Для получения остатков там использеется сводныйИтог(), чето мне имхается что для него УстановитьЗначениеФильтра как-то побоку при получении остатков на ТА. А вот по пртиям используется ВыгрузитьИтоги() , там это необходимо.
Но это чисто судя по СП. И проверить на большой базе не могу. |
|||
6
Скользящий
07.05.12
✎
23:23
|
это не ошибка а скорее "неоптимальность" кода. Которая заметна на больших конфах с большим количеством документов. Вряд ли они тестируют свой код на пухлых базах.
|
|||
7
seakuban
07.05.12
✎
23:25
|
(5) извините но вы пишите бред. буквально в каждом вашем предложении
|
|||
8
seakuban
07.05.12
✎
23:27
|
(6) проверил наличие этой ошибки на 2-х базах. одна база размером 10 гбт, 3000 документов в день, размер номенклатуры примерно 20 тыс. вторая размером 1 гбт, 30 документов в день, размер номенклатуры 60 тыс. на первой торможение не столь ощутимо. на второй исправление этой ошибки дает ускорение в разы...
|
|||
9
seakuban
07.05.12
✎
23:30
|
(6) ну какая же это неоптимальность. ежу же, как говорится, понятно что фильтр по партиям накладывается в процедуре так как надо, а в процедуре где накладывается фильтр по остаткам и резервам разработчик разработчик невнимательность допустил
|
|||
10
viktor_vv
07.05.12
✎
23:31
|
Не, ну можно глянуть в профайлере, че уходит на сервер при СводныйОстаток. Я ж не утверждаю, что так и есть. И у вас полностью типовая конфа ? Без своих допилок ? И отладчик что говорит, на чем больше тормозит?
|
|||
11
Скользящий
07.05.12
✎
23:32
|
(9) Я тебя понял, заметно на большом справочнике Номенклатуры. Мне другое непонятно, зачем ты тут об этом пишешь. Пиши на линию 1С, а лучше на партнерской конференции. Здесь из 1С никто не читает этот форум.
|
|||
12
ProProg
07.05.12
✎
23:33
|
(0) емае, еще кто то на 77 работает? ужас!
|
|||
13
seakuban
07.05.12
✎
23:34
|
(9) напишу конечно. но не на выходных же))
|
|||
14
ProProg
07.05.12
✎
23:35
|
(0) дибил. ПОсле этой процедуры при проведении в любом случе идет вильтр по конкретномй товару при переборе табличной части.
А эта процедура нужна только для оптимизации если задним числом фигачат. чтобы сделать сразу расчет по табличной части а потом по конкретному товару. В актуальном соятонии этого не требуется! |
|||
15
seakuban
07.05.12
✎
23:36
|
(12) ну чего сразу ужас. что есть с тем и работаем. наоборот сейчас интересно работать. потому что приходится то браться за 7.7 то за 8.2 то еще чего доброго за 8.0. разнообразие)
|
|||
16
ProProg
07.05.12
✎
23:38
|
В актуальном состоянии даже временны расчет не нужен!!! от него толка как от коза молока.
А фильтры сработат только если не актуальные итоги. И они нужны будут чтобы не весь регистр а сразу табличную часть и затем по каждому товару. В актуальном состоянии делать фильтр по всей табличной части не нужно! потому что временный расчет тоже не будет происходить. Неуч! |
|||
17
ProProg
07.05.12
✎
23:43
|
Самое прикольно что ты даже не в курсе ошибки которую знают реальные профи!
А ошибка на типовых 77 заключается в том - что на измерениях определенныхз не стоят галочки которые в скл версии хоть и добавляют индексы но увеличивают скорость базы в сотни раз. Но это фуйня. Самая главная ошибка в скорости на семерке и в типовых 77 это то что они дятлы поставили измерение номенклатуру не первым в регистрах. И все методы СводныйОстаток или даже теже самые фильтры - вызывают из за этого жуткие тормозища. Стоит тебе только переписать типовую тис - поменять в правильном порядке измерения и переписать все участки вызова процедуры СвобныйОстаток - база залетает в тысячи раз. |
|||
18
viktor_vv
07.05.12
✎
23:44
|
(8) На второй скорее всего есть свои допилки, которые используют ВыгрузитьИтоги() или ВыбратьДвижения для остатков, вот они и тормозят. Тут как бы количество номенклатуры вообще побоку. Там в другом разница должна быть. И как бы отладчиком нетрудно найти я думаю.
Опять же это ИМХО. |
|||
19
seakuban
07.05.12
✎
23:44
|
Да ты прав, Евгений. А за оскорбление получишь по лысой морде если встретимся. Понял?
|
|||
20
seakuban
07.05.12
✎
23:45
|
(17) у меня конфы оптимизированы именно так как ты описал в 17. и я об этом знаю давно
|
|||
21
seakuban
07.05.12
✎
23:46
|
(17) да ну в 1000 раз. Проверял? У меня все нужные конфы оптимизированы именно так. Но там другой порядок цифр. Сам то проверял о чем пишешь?
|
|||
22
viktor_vv
07.05.12
✎
23:46
|
(17) Можно не менять, а то червато. Можно отборы итогов и движений поставить на измерение Номенклатура. Правда индексы распухнут. Тут уж по конкретной базе смотреть, что лучше.
|
|||
23
ProProg
07.05.12
✎
23:47
|
(21) проверял. Я 9 лет работал с базой в десятки гиг со 150 юзерами.
|
|||
24
seakuban
07.05.12
✎
23:49
|
(23) у меня 3 базы оптимизированы таким образом. ускорение есть заметное. но не надо как фантастическое ускорение это преподносить
|
|||
25
ProProg
07.05.12
✎
23:50
|
(24) ускорение ощутимо при большом количестве пользователей. Никто не говорил что скорость звука будет при нажатии кнопок. Но когда работает сотня юзеров то все это очень ощутимо.
|
|||
26
seakuban
07.05.12
✎
23:52
|
у меня 60 юзеров в одной из этих баз. Я и не спорю что ощутимо. Но не надо тут преподносить эту элементарную оптимизацию как сокровенное знание. которым владеют блин реальные профи))))
|
|||
27
ProProg
07.05.12
✎
23:53
|
(26) а чо тут такого. это реально знание, а вот сабж - тупость.
|
|||
28
seakuban
07.05.12
✎
23:54
|
могучий оптимизатор регистров учит неуча)))) посмеялся)))
|
|||
29
Злопчинский
07.05.12
✎
23:55
|
Сомнительно.
На эту "ошибку" я тоже обращал внимание, но оставил как есть, ибо влияние ее на оперативное проведение - мизерное. И это так, не ошибка, а неоптимальность... Вот если бы автор нашел ошитибку в партионном учете, которая тянется уже лет восемь - тогда можно бло бы выпендриваться... ;-) |
|||
30
ProProg
07.05.12
✎
23:55
|
Емае как я не заметил ссылку с рекламой. автор решил сгенерировать тупую статью по якобы мегаошиьке фирмы 1С в модуле) чтобы засевтить свой сайт с услугами))) Самое прикольное - что в ошибке то он облажался.
|
|||
31
seakuban
07.05.12
✎
23:56
|
(27) сабж - это небольшая невнимательность. чего за тобой не меньше числится на просторах инета. а вот грубость по отношению к незнакомому человеку и хвальба элементарными методами оптимизации как тайнами сокровенных знаний - вот это если не тупость так глупость точно)
|
|||
32
viktor_vv
07.05.12
✎
23:56
|
Кстати из (0) цитата.
"В результате таблица выгруженных итогов получается большого размера (по сравнению с тем размером который она бы имела если бы был задан фильтр по списку номенклатуры) и проведение документа ощутимо замедляется." Это и имелось ввиду в (5). Я вскользь посмотрел процедуры списания ТМЦ со склада и контроля остатков. Там увидел только СводныйОстаток(), на который фильтр при получение на ТА никак не влияет. Если там есть еще и выгрузитьИтоги(), то да, тормоза будут. |
|||
33
Злопчинский
07.05.12
✎
23:56
|
(31) забей, Маня искренне уверен, что он знает и умеет все лучше всех.
|
|||
34
viktor_vv
07.05.12
✎
23:57
|
Так что насчет бреда в (5) поскромнее надо быть, и внимательнее читать что пишут.
|
|||
35
seakuban
07.05.12
✎
23:58
|
(34) ладно, извини. меня смутило твоё упоминание несуществующей функции в 7.7))
|
|||
36
ProProg
08.05.12
✎
00:01
|
(31) учись нормально пиарить свой сайт. правильно. а то за подобные темы типа сабжа ни одинк клиент не прийдет.
|
|||
37
viktor_vv
08.05.12
✎
00:01
|
(35) А, ну да СводныйОстаток(). Это скрестил их с ВыгрузитьИтоги(). :).
|
|||
38
seakuban
08.05.12
✎
00:03
|
жаль конечно. рано обрадовался. опять конфа с 60 юзерами завтра тормозить будет зверски((
|
|||
39
seakuban
08.05.12
✎
00:06
|
(36) не ошибается тот кто ничего не делает. так что клиента это не смутит если автор признал ошибку
|
|||
40
ProProg
08.05.12
✎
00:07
|
(39) ладно. Удачи. решай проблему. По сайту если хоч обратись в личку я посоветую чо в продвижении сделать. подскажу.
|
|||
41
seakuban
08.05.12
✎
00:07
|
(40) ок. и тебе того же!
|
|||
42
ProProg
08.05.12
✎
00:14
|
(41) Есть несколько толковых материалов которые помогут посещамеости сайта с поисковиков. Материалы очень простые но датут весомый результат. Плюс уже могу сказать как улучшить сайт. Плюс еще есть выгодное предложение для тебя. скайп Skype: shekineugeniy
но пообщаться по делу лучше после праздников. |
|||
43
seakuban
08.05.12
✎
00:15
|
(41) по делу с толком пообщаться я всегда рад. после праздников постучусь!
|
|||
44
zak555
08.05.12
✎
00:21
|
(42) маня, давай про шупальцы пообщаемся
|
|||
45
viktor_vv
08.05.12
✎
00:48
|
(35) А, и таки метод СводныйИтог() для регистров есть, это аналог СводногоОстатка() для оборотного регистра.
|
|||
46
experimentator76
08.05.12
✎
19:03
|
(0) посмотри еще - остатки по фирме закрываются ?
у меня в не самой свежей торге 7.7 не закрывались при списании остатков - то есть по-моему списывалось по фирме документа |
|||
47
Злопчинский
08.05.12
✎
19:40
|
(46) ну это у тебя очень старая видимо... еще может быть 7.0 Торговля.
в ТиС 7.7 таких траблов не наблюдалось. |
|||
48
zak555
09.05.12
✎
20:20
|
(47) +1
|
|||
49
vah1
09.05.12
✎
20:32
|
7.7 вообще посчитали ошибкой, коль 8 выпустили
ЗЫ статус надо поднимать, а не новые версии каждый месяц выпускать R/3 с середины прошлого века не переделывался, а денех поимели и имеют учаснеги и иже с ними нисебефига |
|||
50
zak555
09.05.12
✎
20:40
|
(49) 8 выпустили из-за желания поиметь доход
|
|||
51
aka AMIGO
09.05.12
✎
20:41
|
недалеко то время, когда 8-ку посчитают ошибкой?
|
|||
52
andrewks
09.05.12
✎
20:52
|
(50) ага, не качеством, так количеством
|
|||
53
Злопчинский
09.05.12
✎
21:19
|
(49) это снеговик - до сих пор одна большая ошибка... ;-)
|
|||
54
zak555
09.05.12
✎
21:20
|
(52) почему и стали развивать новую версию, а не доделывать старую
|
|||
55
vah1
09.05.12
✎
21:36
|
(51) надо ж как то от старых пердунов тактично избавляться, студентов нынче больше чем людей.
Мы то кто - институтские, а школота теперь вся из новых академий и университетов |
|||
56
vah1
09.05.12
✎
21:38
|
+ мама платит, преп репу чешет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |