gifts2017

СКД против "ручного" кодинга

Опубликовал Игорь Исхаков (Ish_2) в раздел Программирование - Работа с интерфейсом

На ИС остались еще ветераны, которые полагают , что СКД  это всего лишь "оформительский бантик" к запросу... В статье мы покажем как использование "бантика" дает резкий прирост производительности при построении сложных отчетов.

Сравним по быстродействию типовой отчет БП 1.6 "Обороты Счета" и его аналог,   интерактивно созданный  на СКД . Запуск рассматриваемых отчетов будет осуществляться в конфигурации БП 1.6.

 Экспериментальный отчет ОборотыСчетаБП1_6.erf, оформленный в стиле БП 2.0 , прикреплен к статье для скачивания:

В отчет добавлен небольшой дополнительный функционал : колонки "Обороты Дт" и "Обороты Кт" должны разворачиваться не только по счетам (как в БП 1.6 и в БП 2.0)  , но и произвольным настраиваемым образом . Например , по счетам и первому субконто этих счетов :

 

 

Описание

В СКД созданы три очевидных набора данных :

1. "Остатки "    как запрос к виртуальной таблице "ОстаткиИОбороты" :
2. "ОборотыДт" как запрос к виртуальной таблице "ОборотыДтКт"
3. "ОборотыКт" как запрос к виртуальной таблице "ОборотыДтКт"

Набор "Остатки" левым соединением связан с наборами "ОборотыДт" и "ОборотыКт" . В "Настройках" используется объект "Таблица" :

 

С помощью минимального "оформительского" кодинга в модуле формы получим отчет в стиле БП 2.0. Представленная экспериментальная разработка  может рассматриваться лишь  как основа для создания полнофункционального отчета со всеми необходимыми пользовательскими настройками.

Сравнение с БП 1.6

Убрав отметки в настройках у отмеченных выше красным группировок,  можно сравнить по быстродействию представленный отчет и аналогичный типовой "Обороты счета" в БП 1.6 . Возможно также сравнение и с отчетом автора от 2009г.  
http://infostart.ru/public/18838/ . Тогда я  не решился использовать СКД и "вручную" реализовал разворачивание колонок "Обороты Дт" и "Обороты Кт" по счетам и первому субконто.  Огромный проигрыш "ручного" кодинга в быстродействии был очевиден уже тогда. Сегодня читатели могут в этом убедиться.
Экспериментальный отчет выигрывает у типового по быстродейтсвию от 2 до 5 раз.

Сравнение с БП 2.0

Типовой отчет "Обороты счета" БП 2.0 более сложен.  В нём использовано  больше  дополнительных наборов данных и прямое сравнение по быстродействию затруднительно. Сравнить можно лишь способы разворачивания оборотов по корр.субконто :

 

Как видно из рисунка , корр.субконто в БП 2.0 располагаются в строках отчета причем "вперемешку" и дебетовые и кредитовые , что снижает, на мой взгляд, читаемость  отчета.   С другой стороны , отчет в БП 2.0  располагает  более разнообразным богатым функционалом.
Публикация автора  Tuning1c  http://infostart.ru/public/21923/  содержит отчет "Обороты счета" из БП 2.0 ,  адаптированный для запуска в БП 1.6.

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ОборотыСчетаБП1_6.erf
.erf 21,78Kb
14.10.10
206
.erf 21,78Kb 206 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Рудаков (fishca) 28.09.10 09:05
(0)
СКД это всего лишь "оформительский бантик" к запросу

А разве это не так? Чем можете обосновать? Этот отчет только это утверждение и подтвердил.
2. Игорь Исхаков (Ish_2) 28.09.10 09:09
(1) Конечно, не так.
Отчет "Обороты счета" является примером сложной перекрестной таблицы.
Реализовать такую построителем невозможно. Остается ручной кодинг.
Сила СКД - в составлении перекрестных таблиц
В теме предлагается читателю сравнить представленный отчет и типовой в БП 1.6 по быстродействию и самостоятельно сделать вывод : что быстрее ?
3. Александр Рытов (Арчибальд) 28.09.10 09:31
Автору респект. Самостоятельно я, будучи семерочником, ни в жисть бы не догадался, что обороты счета в восьмерке являются сложными и перекрестными. :(
4. gavril (gavril) 28.09.10 09:40
Ну вот и все.
Ты теперь сам подвязался формировать "Обороты счета", потому как научить настраивать этот отчет пользователя намного сложней, чем писать ручной код как в отчете 1.6
:)
5. Александр Медведев (anig99) 28.09.10 10:42
быстродействие СКД зависит в большей степени в автоматически налагаемых параметрах на виртуальные таблицы и отбрасыванию ненужных связей и полей... Так что грамотно составленный запрос не будет медленнее СКД.
6. Игорь Исхаков (Ish_2) 28.09.10 10:50
(4) Нет, неверно. Демонстрационный отчет - не для бухгалтера.
Отчет для ветеранов , которые настаивают , что СКД -"бантик".
В теме я почтительно пытался их переубедить .
Убежден , что после такого примера они "дружною толпою" перебегут на сторону энтузиастов СКД.
7. Игорь Исхаков (Ish_2) 28.09.10 10:59
(5) Неверно.
Перекрестную таблицу ты "грамотно" составленным запросом в 1с не создашь.
Тебе придется "вручную" обрабатывать выборки запроса и в цикле выводить области табличного документа. Посмотри код типового отчета "Обороты Счета" в БП 1.6 или УПП .
Проблема перекрестных таблиц ( то бишь таблиц с динамическими колонками) в СУБД обсуждалась где-то в середине 90-х годов. Разные Субд по-разному решили эту проблему.
8. Сергей Кучеров (СергейКа) 28.09.10 11:03
СКД конечно рулит - не но панацея.
Недавно у меня не получилось выделить (цветом, шрифтом, не важно) итоги по группировкам (строки/колонки - только итоги) в сложной перекрестной таблице. Потратил несколько часов, но так и не допер :(
9. Игорь Исхаков (Ish_2) 28.09.10 11:04
(3) Как прожженный "семерочник" оцени код типового отчета в 77.
Поделись впечатлениями .
10. Александр Медведев (anig99) 28.09.10 11:07
А проверял на SQL или файловом варианте?
11. Игорь Исхаков (Ish_2) 28.09.10 11:12
(8) В конфигураторе - СКД - закладка "Макеты" - Добавить Макет ресурсов.
В появившемся окне
Группировка1 это строки
Группировка2 это колонки.
В перекрестии этих строк и колонок можно создать область макета для форматирования соответствующих ресурсов.
Например , чтобы как- то выделить последнюю итоговую строку отчета - нужно
в группировке 1(строки) поставить "Заголовок" - в Группировке 2(Колонки) поставить "Общий итог подвал". Могу соврать , но примерно так.
12. Игорь Исхаков (Ish_2) 28.09.10 11:14
(10) Конечно. И на файловом и SQL-вариантах представленный отчет выиграл у типового от 2 до 4 раз. Только нужно не забыть в настройках отчета снять (в теме выделено красным) галочки (группировки по корр.субконто).
13. Алексей Константинов (alexk-is) 28.09.10 12:12
(0) Круть, а что с чем сравнивать?
Я понимаю, что наверное туплю, но всё же - какие обработки скачать? Что сравнить?
Может я просто запутался в этих трех ссылках?
14. Сергей Кучеров (СергейКа) 28.09.10 12:17
(11) Эх, если бы было так легко...
Итоговые группировки строк - так получилось без проблем. А вот группировки строк и группировки колонок вместе (пересечение) - нет.
И строки и колонки строятся иерархически.
15. Игорь Исхаков (Ish_2) 28.09.10 12:27
(13)
1. Запусти типовую БП 1.6.
2. Запусти типовой отчет для 62 счета , который называется "Обороты Счета".
Засеки время.
3. Запусти текущий отчет (ОборотыСчетаБП1_6.erf).
4. Убери галочки в настройках как показано на третьем сверху рисунке темы.
5. Установи 62 счет за тот же период.
6. Кнопка Сформировать
Засеки время и сравни с п.2
16. Ирина Пятакова (Alraune) 28.09.10 12:39
17. Алла (Bux2) 28.09.10 13:03
БП 1.6.25.5 файловый, настройки как в публикации.
За квартал:
-типовой 43
-авторский 8, быстрее в 5,4 раза.

За полугодие:
-типовой 151
-авторский 20, быстрее в 7,6 раза.

Супер.
18. Алла (Bux2) 28.09.10 13:06
Автор, надо в Управленческой ведомости http://infostart.ru/public/18838/ заменить Обороты счета на новый вариант. Обязательно.
19. Игорь Исхаков (Ish_2) 28.09.10 13:08
(18) Та тема закрыта. Бессмысленно сейчас что - то всерьез делать для БП 1.6.
20. Алла (Bux2) 28.09.10 13:11
Значит надо менять Управленческую ведомость - для БП 2 :)
21. Игорь Исхаков (Ish_2) 28.09.10 13:13
22. L B (L_B) 28.09.10 14:04
Круто. КрАсава. Плюс и в мемориз :)
23. Аркадий Кучер (Abadonna) 28.09.10 14:22
(19)
Та тема закрыта. Бессмысленно сейчас что - то всерьез делать для БП 1.6.

Да и на 2.0 под 8.1 - тоже бессмысленно ;)
8.2 давно уж на дворе
24. Игорь Исхаков (Ish_2) 28.09.10 14:29
25. Сергей Рудаков (fishca) 28.09.10 16:19
(24) вот если бы мы увидели анализ, за счет чего типовой отчет 1.6 проигрывает СКД из 2.0 статья была бы куда полезней, а так похоже на пустую декларацию не очень оптимального кода в 1.6

Ну быстрее отчет работает написанный на СКД и что из этого следует?
26. Игорь Исхаков (Ish_2) 28.09.10 16:46
(25) Постараюсь.
Итак , у вас есть регистр
Измерение1,Измерение2, Ресурс.
Вам нужно получить отчет "Перекрестная таблица" :
В строках Измерение1 ,В столбцах Измерение2 , в "перекрестье" Ресурс.
Если Измерение1 - Номенклатура , Измерение2 - Склады , Ресурс - Остаток.
То получить нужно :
---------- Склад1 -- Склад2 ----Склад 3
Стол
Стул
Шкаф
ИТОГО

Главной отличительной особенностью такой перекрестной таблицы является неопределенное заранее количество столбцов (динамические столбцы).

Как вы это будете делать в 8-ке ? Без построителя , и без СКД ?
Созданием такой перекрестной таблицы занимался каждый в своей жизни.
И выкручивался как мог - "вручную" . Выкрутились и разработчики "типовой" БП .

Так вот . Такую часто повторяющуюся задачу можно реализовать на уровне платформы.
(что , конечно, значительно эффективнее).
Первой попыткой в 8.0 было создание ПостроителяОтчетов. Но он позволял строить лишь простые перекрестные таблицы (Обороты счета на нём не построишь) .
Потом в 8.1 в 2007 г. появидось СКД , позволяющее на уровне платформы решать задачи построения более сложных перекрестных таблиц гораздо более эффективно чем пользовательский кодинг. Что и было продемонстрировано в текущей теме.

Правда другие СУбд , решили эту задачу на уровне платформы значительно раньше.
27. Алексей Константинов (alexk-is) 28.09.10 17:23
(15) Я не вредный, просто любопытный. Посмотрел в отчете из 6 не работают расшифровки. Вырезал расшифровки из 2. Результат:
2. 12,249 сек
6. 10,42 сек

Не такая уж большая разница получилась :)
28. Игорь Исхаков (Ish_2) 28.09.10 17:36
(27) Всегда считал , что верна только первая часть пословицы "любопытство не порок..".

1. Ты посчитал что расшифровки можно выбросить из п .2. ?
Мы ими можем пренебречь , они не нужны в отчете ?

2. Возьми больший период (чтобы в типовом он выпонялся 2-3 мин.) .
Тогда какое соотношение ?
29. Владимир (hogik) 28.09.10 19:04
(15)
Игорь.
В сообщении (15), думаю, имеет смысл добавить между пунктами #2 и #3 еще один пункт - "перезагрузить систему". Или я ошибаюсь?
30. Андрей Д. (detec) 28.09.10 21:02
Спасибо за пример хорошо сделанного отчёта! Ещё можно ускорить его вынесением выполнения кода на сервер 1С:Предприятие - http://infostart.ru/public/75926/
31. Валерий Агеев (awa) 28.09.10 21:55
(0) Режет слух в статье использование термина "раскручивать" вместо "разворачивать". Или это я неправильный?
(26) Не понял, в чем сложность построения такого отчета без СКД и Построителя?
32. Игорь Исхаков (Ish_2) 28.09.10 23:28
(29) Нет , ненужно. Перезагрузка системы , конечно, ничего не даст.
(30) Конечно. Но отчет демонстрационный, код в нём минимален, директивы для компилятора убраны.
(27) Алексей . отправь мне "гостинец" - оформленный как внешний отчет "обороты счета" из типовой. С твоими исправлениями.
Ты не подумай - я тебе верю. Просто проверю.
33. Игорь Исхаков (Ish_2) 28.09.10 23:43
(31) 1. Согласен. Режет.
2. Простой пример перекрестной таблицы реализовать несложно. Да и в (26) речь не о сложности . А о том, что задачу построения перекрестной таблицы лучше эффективнее решать на уровне платформы. То есть при помощи СКД.
34. Валерий Агеев (awa) 29.09.10 00:21
(33) Т.е. все-таки речь идет не о сложности (трудоемкости) создания отчета типа "перекрестная таблица" разными способами, а именно об эффективности (времени) выполнения отчета? Тогда вопрос из (25), как мне кажется, остался без ответа. За счет чего отчет на СКД более эффективный? Из-за того, что отчет, созданный "ручным кодингом" недооптимизирован? Или СКД действительно более эффективна в своей внутренней реализации? Мне это действительно интересно!
35. Владимир (hogik) 29.09.10 01:40
(32) по ответу на (29).
Даст объективную оценку быстродействия сравниваемых алгоритмов, а не оценку эффективности кэширования системы.
36. Алексей Константинов (alexk-is) 29.09.10 08:03
(32) Сделал замер за 4 года. Результаты:
2. 45,173 сек
6. 39,845 сек

Над оптимизацией вывода результатов можно еще поработать. Сбить 2-3 секунды реально. Т.к. ~70% времени выполняются запросы, можно покопать ещё там.

Про расшифровки. Я не утверждаю, что расшифровки не нужны. Просто в типовой конфигурации на их формирование уходит значительная часть времени - почти половина времени формирования отчета. Я за честное соревнование.

Хотя я надеялся, что расшифровки появятся в варианте отчета с СКД.
Прикрепленные файлы:
ОборотыСчетаХозрасчетный.erf
37. Игорь Исхаков (Ish_2) 29.09.10 08:20
(35) Подробнее.
При старте 1с Предприятие 8.1 метаданные не грузятся.
Подгрузка необходимых метаданных( а не данных !) происходит по мере обращения к ним.
Поэтому если запустить 1с Предприятие 8 и последовательно два раза запустить один и тот же отчет , то можно убедиться , что при втором запуске время исполнения отчета существенно меньше. После первого обращения метаданные уже в кэше.

Теперь вопрос : а третий запуск отчета будет быстрее чем второй ? Другими словами ,
используются при третьем запуске данные( а не метаданные!) кэша 1сПредприятия, которые остались в нем после второго запуска ?

1. Если в отчете используется запрос , для извлечения данных, то третий запуск будет не быстрее. Опыт показывает , что время 2,3, 4, 5 , запуска с небольшой погрешностью одинаково.

2. Если в отчете используется объектная техника доступа к данным ( Получаем объект и обращаемся к его реквизитам через точку) - то всё может быть. Не пробовал.
Правда , такое обращение к к данным в отчете - экзотика.
38. Игорь Исхаков (Ish_2) 29.09.10 08:31
(34)
За счет чего отчет на СКД более эффективный?


Строго говоря , утверждать что-либо можно только из опыта.
Берем Регистр со структурой в (26) и большим объемом данных. "Ручным" способом (Без построителя и СКД) рисуем отчет из (26) . Затем то же рисуем в СКД и в Построителе.
Сравниваем.

Затем то же проделываем с отчетом "Обороты счета". Сравниваем.
Мой прогноз : СКД победит и в первом и во втором случае.
Предполагаю , что :
СКД действительно более эффективна в своей внутренней реализации
39. Игорь Исхаков (Ish_2) 29.09.10 08:33
40. Александр Шишкин (Шёпот теней) 29.09.10 08:55
... хотелось бы ещЁ подсчитать стоимость ...

штатный отчЁт - уже ничего не стоит ...

просто отчЁт - сделает кто как сможе и будет работать на ... 0...20 % медленне ... и то не факт ... вопрос а судьи кто ? и кто ЧТО знает КАК реализовать ...

отчЁт на СКД - ??? ... крАсивая фишка ... не вижу никакго эффекта ни от её изучения ... ни от её использования ... опытным - это мало помогает ... а для новых - забивает голову "иными" костылями ...

... вотЕСТЬмнение ...

п.с. постоянная потребность в "новых" отчётах - говорит об неУстоявшейся системе и правил Учёта и Управления ... так что ... ? ... вот ...


п.с.2. ВСЁ что меньше 12% - это проценты туда-суда-Нефакт ... увеличение на 50 % - есть вопрос задуматься ... вот если производительность вырастае в разы !!! - тогда есть смысл "смотреть" и изучать ... а так ... вроде все заняты делом а КПД - смешное ... зато пантов-то ... пантов-то ... вотТАКОЕоскорбительноеМнение ...

...
41. Dmitry Afanasyev (afanasko) 29.09.10 09:20
(40).
п.с. постоянная потребность в "новых" отчётах - говорит об неУстоявшейся системе и правил Учёта и Управления ... так что ... ? ... вот ...

Я считаю, что ты неправ, Шёпот. Требования "новых" отчетов -- прямое следствие роста и развития бизнеса. Если в компании пользуются только отчетами, созданными три года назад -- это свидетельствует о том, что с тех пор компания не далеко продвинулась. Это конечно относится не ко всем инструментам. Некоторые не устаревают очень долго, ими можно пользоваться десятилетиями :).

Бизнес -- как живой организм, так же растет, изменяется и когда-нибудь умирает. Если у бизнеса не возникает новых задач, значит он стоит на месте.
42. Игорь Исхаков (Ish_2) 29.09.10 09:31
(40)
штатный отчЁт - уже ничего не стоит ...
просто отчЁт - сделает кто как сможе и будет работать на ... 0...20 % медленне ... и то не факт ... вопрос а судьи кто ? и кто ЧТО знает КАК реализовать ...
отчЁт на СКД - ??? ... крАсивая фишка ... не вижу никакго эффекта ни от её изучения ... ни от её использования ... опытным - это мало помогает ... а для новых - забивает голову "иными" костылями ...


Представленный отчет является демонстрационным. Как его использовать решает читатель.

ВСЁ что меньше 12% - это проценты туда-суда-Нефакт ... увеличение на 50 % - есть вопрос задуматься ... вот если производительность вырастае в разы !!! - тогда есть смысл "смотреть"


Так об этом и толкую.
Выигрыш от использования СКД для больших, сложных перекрестных таблиц : В РАЗЫ .
Ответ Alexk-Is готовится.
43. Александр Шишкин (Шёпот теней) 29.09.10 09:53
(41) ... что я не помню чтоБЫ в Бухгалтерии - менялись отчёты ... ??? ... в принципе СОгласен ... НО!... отчЁт в месяц - возможно ... ))) но ради 12 отчЁтов в год мудрить с СКД ... ? ... можете назвать свою цифру "новых отчЁтов" - динамических компаний ... ? ...

(42) ... в разы ... хм ... ещЁ один вопрос а зачем ... ? важна не только "сама"производительность отчЁта но и количество его вызовов ... например, проведение и перепроведение ВАЖНЕЕ чем раз в день вызвать несколько отчЁтов ( даже пусть в пиковые, отчётные периоды вызывается несколько раз ... и что... ? ... отчет готовится за минуту или за 20 сек - не отчёты ЕСТЬ лимитирующая стадия работы ...)

... хотя в целом производительность в разы - СОгласен ... если Alexk-Is подтвердит ...

... однако, ! ... хотя это будет важно в основном для крупных и очень крупных компаний ... для рядовых - это мёртвому припарка ... повторюсь - лимитирующая стадия работы это не получение отчётов ... !!!

... вот ...

п.с. ускорение отчётов - проще достигуть оптимизацией базы... нужными и точечными данными и их получением (а не тащить всЁ ради не понятной универсальности) ...

... вот ...
44. Артур Аюханов (artbear) 29.09.10 09:57
Лично мое мнение - СКД не увеличивает производительность работы отчетов/запросов, т.к. хороший разработчик в состоянии сам грамотно построить любые запросы, не проигрывающие системе.

СКД ускоряет другое - скорость разработки, удобство разработки и доработки, увеличивает производительность труда программиста.
forsagforsag; hogik; dabu-dabu; Шёпот теней; +4 Ответить 2
45. Александр Шишкин (Шёпот теней) 29.09.10 10:03
... хоти те по-лную оптимизацию ... !!! делайте как Абадонна - прямые запросы к базе ... !!! ... это круто и бысто и оптимизированно и много чего ещё ... а так ... костыль он и есть костыль ... ВОТ ...
46. Александр Шишкин (Шёпот теней) 29.09.10 10:06
(44) ... и увеличивает порог вхождения в 1С ... значит удорожает и усложняет ... со всеми вытекающими отсюда последствиями вот ...

.. мало сделать отчёт ... его надо ещЁ и переделывать ... и ещё не известно кто ЭТО будет делать и когДА... !


... вотМнениевот ...
47. Игорь Исхаков (Ish_2) 29.09.10 10:29
(36) Итак , сравнение быстродействия двух отчетов. Сравниваются :
1. Отчет , прикрепленный к текущей теме (ОборотыСчетаБП1_6.erf)
2. Типовой Отчет конфигурации БП , прикрепленный в (36) и исправленный Alexk-is. Расчет и запись параметров расшифровки удалены из типового отчета.

1с Предприятие 8.1. SQL-вариант. БП 1.6

Настройки для п.1. :См.Рисунок темы третий сверху. Дополнительно :
Отметки у подчеркнутых красным группировок сняты.
У группировок СчетКтКорр и СчетДтКорр установлен тип "Иерархия"
(разворачивать колонки будем только по корр.счетам и корр.субсчетам,
выводим все субконто основного счета)

Настройки для П.2:
Установлены отметки "По субсчетам" и "По корр.субсчетам".
Выводить будем все субконто основного счета.

Для п.1. и п.2. устанавливается один и тот же счет (например счет -группа 62).
и один и тот же период (например, квартал).

По п1. и п.2. запуск осуществляется по 3 раза подряд в отдельных сеансах 1с Предприятия.

Результаты тестирования :
п.1 - 20 сек
п.2. - 37 сек
Проигрыш п.2. в 1.8 раза.

Вопрос : откуда могло взяться соотношение (36) , приведенное Alexk-is :
п.1 - 39 сек
п.2 - 45 сек ?

Предположительный ответ :
Если в настройках п.2 убрать отметку "По субсчетам корр.счетов" ( уменьшаем как минимум в два раза количество колонок) , а настройки п.1 оставляем без изменений то получим :
п.1 - 20 сек
п.2 - 24 сек.
Получается похожее соотношение , как Alexk-is
48. Александр Шишкин (Шёпот теней) 29.09.10 11:13
49. Игорь Исхаков (Ish_2) 29.09.10 11:18
50. Александр Шишкин (Шёпот теней) 29.09.10 11:19
51. Игорь Исхаков (Ish_2) 29.09.10 11:20
52. Александр Шишкин (Шёпот теней) 29.09.10 11:24
(40) ...(51) ... )))

http://infostart.ru/profile/user/15616/photo/album/user_15616/3213/ ... идём сюда и смотрим рисунок ... экономический расчёт ... ))) ... вот ...
53. Александр Медведев (anig99) 29.09.10 11:34
(52) Шепот...прости, но расчет твой устарел... В 1с 8.2 в режиме управляемых форм все делается через СКД...
Плюс не забывай о самообразовании
54. Игорь Исхаков (Ish_2) 29.09.10 11:37
(52) Что только не придумаешь , чтобы не учиться СКД...
55. Александр Шишкин (Шёпот теней) 29.09.10 11:45
(53) ... дык не вопрос ... вопрос "мы не рабы, рабы немы" ...

(54) ... дык зачем учиться не тому ... и за чей счёт ... ??? ... если предприятие "лох" ... то это его проблемы ... пусть вон "бумагу" и "катриджи" экономят ...

... вот ...
56. Игорь Исхаков (Ish_2) 29.09.10 11:49
(55) Ты не увиливай. Не спихивай на дурное предприятие .
Вопрос лично к тебе , как к специалисту : должен ты знать СКД или Нет ?
57. Игорь Исхаков (Ish_2) 29.09.10 12:31
(44) И ты , Артур.. ?
Представленныи отчет для чего ?
Для того чтобы любопытный пользователь сам проделал опыт и убедился СКД - это не "бантик", а прежде все более высокая скорость выполнения сложных отчетов (перекрестных таблиц).

См (47)
58. Александр Шишкин (Шёпот теней) 29.09.10 12:43
(56) ... я бы хотел, как Абадонна ... овладеть прямыми запросами ... а СКД, ваше буду знать только по-необходимости, для работы в 1С ...

... а ещЁ лучше вернуться в "семёрку" а эту "восьмёрку" послать ... причём в очень НЕэтичное место и в очень НЕэстетичной манере ...

... ВОТ ...

... восЬмёрка своими "бантиками" .... уже достигла уровня своей НЕкомпетентности ...

...
59. Игорь Исхаков (Ish_2) 29.09.10 12:49
(58) "Как Абадонна" - это хорошо.
Только вот с "прямыми запросами" ты чего -то недопонял.
Соединения ADO - к базе SQL в 8-ке для стандартных задач учета просто НЕНУЖНЫ.
Ничего не дают и ничего не ускоряют.
60. Александр Шишкин (Шёпот теней) 29.09.10 13:18
(59) ... спорить не буду ... тут мои знАния никакие ... но думается мне, по просмотру исследований Трактора (вроде) преобразования запросов в 1С всЁ таки хромает ... зато порог вхождения в "запросы" минимальный ... вот ...

п.с. при этом мы же знаем что 8 - ка ... это бантики ... хоть и крАААсивые ... однозначно ... !

...
61. Игорь Исхаков (Ish_2) 29.09.10 13:23
(60) У Трактора идёт обсуждение нюансов преобразования строки запроса 1с в строку запроса SQL. Этот познавательный процесс никакого практического значения для стандартных учетных задач не имеет. Придется использовать стандартные запросы и СКД.
Шёпот теней; +1 Ответить 1
62. Александр Шишкин (Шёпот теней) 29.09.10 13:56
(61) ... что я могу тут сказать ... ? ... надо кого-то позвать ... спросить ... ! ... вообщем кто знает ... вот ...
63. Игорь Исхаков (Ish_2) 29.09.10 14:03
(62) Верь мне Шепот. Никого не зови.
64. Александр Шишкин (Шёпот теней) 29.09.10 14:14
(63) ... верю ... но если данные из трЁх разных источников совпадают - ВЕРЮ в тройне ... ))) .. .вот ...
65. Игорь Исхаков (Ish_2) 29.09.10 14:19
66. Александр Рытов (Арчибальд) 29.09.10 15:30
(63) Шепот, не верь ему. Он тебя запутает.
Речь о чем идет (заметь, аватарка гласит "Мы пишем запросы"). О том, что восьмерочный механизм СКД настолько приличен, что восьмерочный же кодинг не оправдывает себя - при изрядных трудозатратах выигрыш весьма невелик. Сравнение с семеркой столь же неуместно, как сравнение Виндов с ДОСом - Ясно жде что в ДОСе тот же функционал на порядок быстрее и на два порядка менее требователен к памяти. Однако ж - прогрессьь...
67. Александр Шишкин (Шёпот теней) 29.09.10 15:46
... я про то жжжж ... 8-ка провльный, с точки зрения экономики, проект ... для 98 % предприятий ...

... вотМнение ...

68. Александр Рытов (Archy52) 29.09.10 15:58
(67) Это смотря чья экономика...
69. Игорь Исхаков (Ish_2) 29.09.10 15:59
(66),(67) Шепот , не верь ему. Он тебя запутает.
Никто здесь "семерку" и не вспоминал и "сравнение с семеркой" притянуто Арчибальдом за уши.
Практичнее думать о себе , а не о провальности 8-ки ," с точки зрения экономики" ...
Практичнее овладевать СКД , а не переживать "о 98% предприятий".
70. Александр Шишкин (Шёпот теней) 29.09.10 16:19
(68) ... если УУ - то конечно же ...
(69) ... дык МЫ и вам и не мешаем ... приноровимся и мы ...
71. Александр Медведев (anig99) 29.09.10 16:45
16 кб памяти хватит всем...
72. Алексей Константинов (alexk-is) 29.09.10 17:03
(47) Нет. Всё не так. Я всё сделал по инструкции.

Переделал отчеты под УПП 1.2.
Результаты:
2. 23,172 сек
6. 11,891 сек
Разница более чем в 2 раза

Из-за чего такое различие по времени выполнения между БП и УПП? Думаю разница в составе данных, попавших в отчет. Соответственно для одного предприятия будет значительная разница, а для другого разницы не будет вообще или она будет не столь значительная.
73. Владимир (hogik) 29.09.10 17:07
(37)
Игорь.
Метаданные в кэше это хорошо. Но если из-за этого "время исполнения отчета существенно меньше"(с), то это говорит об очень плохой реализации алгоритмов работы с метаданными. Сомневаюсь я в этом. Думаю, сильнее влияют на время повторного запуска, именно, сами данные. Про третий запуск можно не рассуждать. Но надо сказать - какой отчет запускается третьим. Т.е. если нет желания "перезагружать систему", то можно запустить несколько раз с чередованием два разных отчета. А по уму - надо запускать три раза каждый отчет с "перезагрузкой системы" перед каждой серией тестов. А потом внимательно (вдумчиво) смотреть на числа.
P.S. Извините меня, что я донимаю Вас этой информацией (вопросами). Но сам провести тесты не могу, т.к. у меня нет компьютера. А было бы интересно посмотреть на результат замеров.
74. Игорь Исхаков (Ish_2) 29.09.10 18:23
(73) Что метаданные не грузятся при запуске Предприятия и подгружаются лишь по мере обращения к ним - это написано в документации. Думаю отыскать это можно.
После первого запуска , второй и последующий запуски отчета одинаковы по времени выполнения - это факт ( и при файловом и SQl- варианте).
Всё остальное - мои рассуждения. Не меньше , но и не больше.
Это я так .. для прояснения ситуации.
75. Игорь Исхаков (Ish_2) 29.09.10 18:36
(72) Я так понимаю , что для УПП ты получил аналогичные результаты тестирования, что и я в (47) , а именно :

Типовой отчет "Обороты счета", в котором для ускорения выключена расшифровка, работает примерно в 2 раза медленнее , чем представленный в текущей теме отчет , использующий СКД.

Теперь о тестировании на БП.
Почему получаем различные результаты ?

Объяснение :
Думаю разница в составе данных, попавших в отчет. Соответственно для одного предприятия будет значительная разница, а для другого разницы не будет вообще или она будет не столь значительная.

- звучит для меня невероятно ( Для счетов в которых есть какие -то обороты ( 5-6 колонок счетов для дебета и кредита) - и строк в отчете не менее 80-100)

Считаю , что в этом случае представленный отчет и для БП должен выиграть в быстродействии как минимум 1.8-2.0 раза.

Без третейского судьи тут никак.

76. Владимир (hogik) 29.09.10 18:41
(74)
Игорь.
Опят о разном говорим. :-(
Подгружаются метаданные - естественно и логично.
Но я предполагаю не значительное влияние этого на первый запуск.
По сравнению с СУБД-шным+ОС-вым кэшированием.
Завяжем и эту тему...
77. Игорь Исхаков (Ish_2) 29.09.10 18:58
(76) Да нет . Об одном и том же.
В (75) лишь разделил свои размышления и факты.
А перезапустить систему перед отчетом нетрудно. После презапуска системы показывает такое же время при первом запуске и при втором как и до перезапуска системы.
78. Владимир (hogik) 29.09.10 19:43
(77)
Ох. О разном... :-(
Вы писали в (37): "при втором запуске время исполнения отчета существенно меньше.". А в (77) - обратное. Завязываю тему. Не буду Вас отвлекать от дел...
79. Игорь Исхаков (Ish_2) 30.09.10 07:40
(78)
В (37) речь шла об одном сеансе 1сПредприятия , в котором последовательно дважды запускался отчет.
В (77) сраниваются по быстродействию :
1. Первый запуск сеанса 1сПредприятия : дважды запускается отчет.
- Выход из сеанса
2. Второй запуск сеанса 1сПредприятия : дважды запускается отчет.

И говорится о том , что в п.1 и в п.2 время исполнения отчетов одинаковое.
80. Алексей Константинов (alexk-is) 30.09.10 08:31
(10) Да и да. Пропорции ~ сохраняются в обоих случаях
81. Игорь Исхаков (Ish_2) 30.09.10 10:37
(80) В скобочках замечу, что при модификации типового отчета "Обороты счета" ты не только в текстах модуля убирал расшифровки , но и оптимизировал типовой код вывода отчета методами описанными в "Заметочках по 8-ке".
Но это даже хорошо ! Стало ясно еще более отчетливо :
как угодно оптимизированный "ручной" кодинг проиграет по быстродействию СКД.
82. Александр Шишкин (Шёпот теней) 30.09.10 11:53
Двадцать лет в «неэффективном СССР» - происходит рост сборов зерна на 33%
Двадцать лет «эффективного рынка» - падение сборов зерна на 20%

... и ещё: средняя оплата труда на земле сейчас в три раза ниже советского колхозного уровня.
(Все цифры даны только по РСФСР, разумеется, и в сравнении с цифрами по РФ).

...

..."Я понимаю, что многим не может нравиться факт, что колхозы в 30-х спустя всего несколько лет превзошли результаты частной формы собственности, причем и итоги и дореволюционные, итоги помещичьего землевладения, и итоги после революционные – итоги землевладения частного, крестьянского, землевладения фермерского типа, уверенно показав преимущества социалистической формы собственности.

История поставила и третий эксперимент – эксперимент 90-х и нулевых, с тем же результатом – чистая победа колхоза над капиталистом.

Но это же факт.
Не тужьтесь опровергнуть, только пукнете и испортите тут воздух, господа.
"....

... многие скажут что не в тему ... но я бы не стал так утверждать ... вспомните закон аналогий ...

... вот ...
83. Игорь Исхаков (Ish_2) 30.09.10 12:12
(82) Давай повернем твой "колхозный трактор" в сторону СКД.
И используя "закон аналогий" получим :

Я понимаю, что многим не может нравиться факт, что отчеты на СКД превзошли по быстродействию "ручной" кодинг"...
Но это же факт.
Не тужьтесь опровергнуть, только пукнете и испортите тут воздух, господа.



Выходит , ты , Шепот ,( по аналогии...) - "за наших " ? За СКД ?
84. Александр Шишкин (Шёпот теней) 30.09.10 12:48
... зачем делить-то сразу ... наши не наши ... ВСЕ наши ... ! ... вот ...

... зачем же рассматривать выгоды "чего либо" без их Издержек ... ? ... ! ...

... нуу.... не окупится "ваше" СКД на наших предприятиях ... следовательно "по отдельности" НАМ хорошо а "всем вместе" будет ПЛОХО ...

... бег по кругу ... как музыка попсы - три ноты в цикле ...

... засим умолкаю ... от своего же ЗАнудства уже тошно стало ... вот ...

п.с. : «Сейчас православие — это основа модернизации. Лично я считаю, что русские компьютеры должны создаваться при русских монастырях: умные молитвы, умное делание, умное монашество. Мы считаем, что православный инновационный центр должен открыться в Сколкове, потому что Церковь — это опора модернизации, а не помеха.»

...

п.с.2 : Замкнутый контур из икон, украшенных монетами, усиливая специфическую активность мозга, может усилить сопротивляемость повышенной солнечной активности и повышению электромагнитного фона


Новая российская наука.

... где-то тут и СКД ... чешется ... вот ...
85. Игорь Исхаков (Ish_2) 30.09.10 13:29
(84) Тебя не сбить с глобальных обобщений :
.. СКД... модернизация... православные инновации...

Хотя атеист , и совсем не русский, но поддержу. С тоской.
86. Владимир (hogik) 30.09.10 16:48
(79)
Игорь.
Эти фразы не несут разного смысла:
"последовательно дважды запускался отчет"
"дважды запускается отчет"
А другие фразы, думаю, несут разный смысл:
"перезапустить систему"
"перезагружать систему"
"выход из сеанса"
87. Игорь Исхаков (Ish_2) 30.09.10 18:29
88. Алексей Константинов (alexk-is) 01.10.10 13:35
(81) Тут такое дело. Есть подозрение, что СКД выигрывает при большом количестве пустых ячеек. В БП пустых и заполненных было ~ поровну, а в УПП пустых было в 2 раза больше.

Насчет оптимизации. Да я отпимизировал существующий код. Но кто сказал, что методика используемая для построения типового отчета является наиболее эффективной? Может проблема здесь? Ведь в типовом отчете данные собираются двумя запросами, а в СКД одним. Уверен, что при достаточной проработке методики формирования отчета можно значительно повысить скорость вывода данных в отчет и без СКД. Например, можно попросить Душелова написать ВК :)
Шёпот теней; +1 Ответить 3
89. Игорь Исхаков (Ish_2) 01.10.10 14:01
(88) Уже что-то !
Придётся проверять так : насоздавать "лишних" операций так , чтобы все колонки дебета и кредита были заполнены и тогда уже сравнить СКД и твой отчет с отключенными расшифровками.

Правда , сразу нужно отметить :
Расшифровки, замедляющие быстродействие типового отчета в 2раза (!), всё равно нужны и отключать их при сравнении некорректно . Ведь в СКД расшифровки -то используются и оптимальная работа с расшифровками - это одно из больших преимуществ СКД перед "ручным" кодингом.
При корректном сравнении даже как угодное оптимальные расчет и запись расшифровок займут время и "кодинг" все равно проиграет в разы.

Мой Прогноз : ВК не спасет , Душелов не спасет ... и никто не спасет .
90. Владимир (hogik) 01.10.10 17:09
91. Игорь Исхаков (Ish_2) 01.10.10 18:46
(90) Владимир, Вы зачем "смущаете своим разумением" неокрепшие умы 1с-ников ?
Нехорошо это.
Тут бы с MS SQL, Oracle, DB2 (реляционных по сути) разобраться хоть как нибудь ,
а нам предлагается как спасение - "Постреляционная СУбд Cashe5" , требующая своего языка доступа к Базе данных (SQL- на свалку, все реляционно ориентированные приложения , стало быть тоже). Вот заживём !
Чем черт не шутит , но что-то с 2003г (время написания статьи) я не слышал чтобы Cashe5 отгрызла хоть какой-то кусочек рынка (для бизнес -приложений) у тех же MS SQL, Oracle, DB2 .
Может подождем пока Cashe5 сдохнет... или завоюет весь мир ?
Тогда и обсудим чем она хороша (плоха) ?
92. Владимир (hogik) 01.10.10 19:39
(91)
Неокрепшие умы могут не окрепнуть, а задубеть.
Вот это, действительно - "Нехорошо".
Я уважаю Ваш "конкретный" (прагматичный) подход к нашим задачам.
Но не видеть (или не знать), что "...использование реляционного подхода не столь эффективно в таких приложениях, как АСУП,..."(с) - это ОЧЕНЬ "Нехорошо".
Разработчики 1С-ов - видят и знают. Но решают проблемы "реляционного подхода" за деньги пользователя (покупателя). А мы публикуем и долго обсуждаем статьи по алгоритмам из двух циклов. А это ОЧЕНЬ грустно...
93. Игорь Исхаков (Ish_2) 01.10.10 19:46
(92) Я тоже , кстати, обратил внимание на эту фразу :
"...использование реляционного подхода не столь эффективно в таких приложениях, как АСУП,..."

Сильно.
Тот самый случай , когда невозможно определить :
То ли очень глупо , то ли очень умно.

А то , что мы обсуждаем алгоритмы из двух циклов... Это правда.
Когда-то давно я взгрустнул познакомившись с бухгалтерскими задачами.
Но потом как-то прошло...
94. Владимир (hogik) 01.10.10 20:04
(93)
Я не говорю про "бухгалтерские задачи" из двух циклов.
Тема моих высказываний: "Проблема перекрестных таблиц ( то бишь таблиц с динамическими колонками) в СУБД обсуждалась где-то в середине 90-х годов"(с)(7).
Т.е., опять, проводим "научные" исследования на пустом месте, когда "Мы пишем запросы!". Нет никакой проблемы с динамическим колонками - два простейших цикла...
95. Игорь Исхаков (Ish_2) 02.10.10 06:46
(94) Мы говорим о разном.
Вы мне - алгоритм из двух циклов не стоит обсуждения.
Я Вам про тему статьи : кодинг из двух циклов по быстодействию уступает встроенному средству платформы под названием СКД.
96. Александр Рытов (Арчибальд) 02.10.10 08:52
(95) Что настройка СКД, что результат ручного кодинга - и то и другое 1С преобразует в СУБД-шный запрос. Твое утверждение сводится к тому, что в случае СКД платформа действует оптимально, а ручные циклы обрабатывает коряво. Вполне возможно, что СКД-шный внутренний язык запросов является тем промежуточным состоянием, к которому приводятся "ручные" запросы - ясное дело, на промежуточные преобразования потребуются дополнительные ресурсы.
То есть вопрос - в реализации платформы на практике. Или - насколько 1С-ные разработчики восприняли теорию, которая упомянута в (94).
97. Игорь Исхаков (Ish_2) 02.10.10 14:02
(96) Код типового отчета "Обороты счета" в БП 1.6 можно условно разделить на два этапа :
- выполнение двух запросов, получение их результатов.
- собственно "ручной" кодинг : цикл, в котором построчно выводятся результаты
запроса в выходной табличный документ (по вашему "Таблица").

Аналог этого отчета на СКД содержит , грубо говоря, те же запросы, а вот обработку результатов запроса и рисование отчета производит внутренними механизмами СКД.

Никакого выигрыша в скорости выполнения запросов ("первый этап") при использовании СКД мы не имеем. Выигрыш имеем за счет реализации "второго этапа" : обработка результатов запроса и рисование отчета.
Никакого своего , "внутреннего" языка запросов СКД не имеет.
А в (94) Владимир говорит о чём -то своём ... далёком и отвлечённом.

P.S. Я изложил упрощенно-грубо , в первом приближении , необходимом для понимания.
98. Игорь Исхаков (Ish_2) 02.10.10 16:30
(88) Так и есть !

При сравнении двух отчетов , отключено разворачивание по Кт. Включено только по Дебету. "Лишними" операциями добились заполнения всех колонок счетов дебета , Получили таблицу 2500 строк - 25 колонок ( из которых полностью заполнены 20 по счетам Дебета).

Результаты :
Твой отчет 12 сек
Мой отчет 10 сек

Вывод : в предельном случае (когда все колонки заполнены на 100% ) отчет с отключенными расшифровками проиграет те самые 20%. ЧТо подтверждает результат , который ты получил ранее.


99. Владимир (hogik) 02.10.10 16:33
(97)
"Владимир говорит о чём -то своём ... далёком и отвлечённом"(с)
Игорь.
Я уже и не знаю о чем говорить. ;-)
Говорю о "теории" про два цикла - мимо.
Предлагаю провести конкретные замеры - мимо.
Предлагают разобраться в сути ускорения - мимо.
И постоянно, с Вашей стороны, "крепкая конкретика", снабженная "качественными" оценками, типа:
"... многократно проиграет в быстродействии."(с)
"... алгоритм , на мой взгляд, для больших таблиц выиграет у любого другого."(с)
"... размер таблиц ... может быть как угодно большим ."(с)
"... таблицы ... могут быть очень большого размера."(с)
"... для как небольших, так и очень больших объемов данных (свыше 120-150 ГБ)."(с)
На мой взгляд это гадание "на кофейной гущи". :-(
Я понимаю, что вы поставлены ("домиком") в условия обязательного использования "1С 8.х" и "запросов". Типа, жизнь заставляет... Но, Вы, как мне показались, пытаетесь осмыслить внутреннее устройство системы, а не тупо жать на кнопки. И это вызывает уважение с моей стороны. И, извините, вызывает желание "подтолкнуть" Вас к более глубокому анализу - зачем, где, когда и почему "Мы пишем запросы!"(с). Я постараюсь больше этого не делать...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа