Имя: Пароль:
1C
1C 7.7
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
+ мама платит, преп репу чешет