Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Пытаюсь ускорить формирование отчета. Простым "вылизыванием" кода смог ускорить формирование с 20 минут до 10. Единственное, что осталось улучшить - запросы. Позавчера начала изучать прямые запросы, но нужной информации так и не нашел... Суть: Есть запрос вида Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. переделал на прямой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Запрос отрабатываеться нормально... теперь вопрос: как переделать следующие строки: Код: sql 1. 2. 3. 4. 5. 6. 7. Буду благодарен за любую информацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 09:55 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Запрос быстрый? Сколько секунд? Я бы через оборотный регистр сделал. А обход по по группировкам - сколько времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 12:11 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Запрос на 1С формируется порядка 5 минут (период последние 90-о дней) Соответственно прямой запрос формируется намного шустрее, НО если убирать группировку будет слишком много ненужных промежуточных, постоянно посторяющихся космитических операций для покупателей.... Вид отчета на выходе что то типа: Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 13:30 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
NiWay, добавь в конфигурацию оборотный регистр. Покупатель документ сумма. Будет гораздо шустрее все делаться. Да и итоги там уже расчитаны. А обход по по группировкам - сколько времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 13:34 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Сейчас весь отчет формируется за 30 секунд... Основная нагрузка идет именно запросы (тот что я показал обработка 5 минут, плюс еще один запрос к регистрам - 4 минуты)... вот их бы убрать :( Что никаких вариантов больше нет - не ломая конфигуратор... (может при использовании прямых запросов у CPP какой нить аналог есть команде Группировка(1)?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 16:04 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
НЕПОНЯТНО. Что вы подразумеваете под "запросом" - Выборка из запроса или Запрос.Выполнить? Если первое - то как вариант выгрузка в тз. Если второе - то быстрее чем прямой запрос можно сделать только если будет отдельная таблица с данными результатами. (оборотный регистр) И кстати непонятно база большая? Сколько строк получается в результате вашего запроса? Может проблема совершенно в другом? (железо память и тд?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 16:40 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Поз запросом я имею ввиду: Код: sql 1. ... Там если с отдельным запросом - слишком много переделывать... не очень охото... там столько накручено что мозг кипит от одного только вида (единственное что понял, когда читал - его писали несколько программистов...) В результате запроса выдается порядка 25 000 документов (строк)... База 25 Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 19:46 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
P.S. Забыл упомянуть... пробовал через код: Код: plsql 1. Выдает ошибку... не могу понять, почему :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 20:55 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
NiWay, глупый вопрос - а кому-то нужен отчет с 25т строк? Пологаю что нужен с отбором по контрагенту и все. А если это делается за приемлимое время в текущей базе, то плевать что отчет по всем формируется 10 минут. А сделать новый регистр - не понимая даже сложности всего навороченного - легко. 1. Смотрю все документы что двигают этот регистр. 2. В обработке проведения этих документов - читаю все записи в регистр и записываю в мой. Правда встанет проблема с данными предыдуших итогов - можно ли их перезаписать... Но тут вариант - создать свой документ - с движением только по моему новому регистру и насоздавать этих документов от рождества Христова. ps А прямой запрос - сколько времени выполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 21:01 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Программист 1сNiWay, глупый вопрос - а кому-то нужен отчет с 25т строк? Пологаю что нужен с отбором по контрагенту и все. А если это делается за приемлимое время в текущей базе, то плевать что отчет по всем формируется 10 минут. А сделать новый регистр - не понимая даже сложности всего навороченного - легко. 1. Смотрю все документы что двигают этот регистр. 2. В обработке проведения этих документов - читаю все записи в регистр и записываю в мой. Правда встанет проблема с данными предыдуших итогов - можно ли их перезаписать... Но тут вариант - создать свой документ - с движением только по моему новому регистру и насоздавать этих документов от рождества Христова. ps А прямой запрос - сколько времени выполняется? отчет 25т. строк нужен экономистам... грубо говоря он выводит дебеторскую задолжность с учетом просроченного долга (месяц назад сколько покупатель должен был, два месяца, три) чтобы видеть это счастье в динамике... На прямом запросе этот запрос формируется 5 секунд (разница как бы 4 минуты 55 секунд, даже по скромным посчетам) Эта конфа настолько корява, что не хотелось бы ее менять... Проблема заключается в том, что при формировании этого отчета весь офис курит бамбук пока он не сформируется.... вот и задумался о том, как можно сократить этот интервал либо совсем его выкинуть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 21:09 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
NiWay, ок тогда простая идея. насколько я помню выполнить прямой запрос - возвращает ТЗ. Эту тз сортируем по контрагент.наименование и док.датадок. Дальше перебираем строчки ТЗ и выводим в отчет. (Чуть логику только вывода строк меняем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 21:34 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Программист 1сNiWay, ок тогда простая идея. насколько я помню выполнить прямой запрос - возвращает ТЗ. Эту тз сортируем по контрагент.наименование и док.датадок. Дальше перебираем строчки ТЗ и выводим в отчет. (Чуть логику только вывода строк меняем) К сожалению не чуть логику и вывод строк.... а мозг на полную парсим код и разбираемся что куда выводиться.... почему тот или иной контрагент в одну отчетность должен попадать, а во вторую нет (он то покупатель, то поставщик.... и соответственно долг считается по разному.... Если аналога нету - значит весь запрос переделывать.... Ну ладно - все равно спасибо за помощь.... ближе к понедельнику скажу результат - удалось мне или нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 21:38 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
NiWay, По запросу. Выбирайте по регистру а не по документам. По группировкам. Используйте индексированную таблицу. По тому что все нервно курят. Это проблема движка 1С. Или поднимайте ночной бекап в отдельную базу (для аналитиков), или юзайте OLAP (если уж нужна такая подробная динамика). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 22:03 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Забыл добавить. Если решите использовать OLAP то даже непытайтесь строить локальные кубы. При таком объеме невзлетит - проверено лично. Поэтому придется ставить полноценный MSAS. Вопрос стоимости лицензий я неподнимаю, т.к. вопрос был о путях решения конкретной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2012, 22:06 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, но вы нифига не вылизали код.. Обход результатов выборки у вас тормозит, т.к. В заиросе вы получаете не данняе для отчета, а только ссылки на них. Даные вы получаете при обходе выборки. Как поправить- пояснить? Провеюенный документ не может быть помечен на удаление.. Запрос 1С возвращает данные через дбф таблицу в директории временных файлов 1С. 1С++ через датасет.. Рам диск помогает. ЗЫ Такие отчеты надо строить не в кубах, а во внерабочее время и отдавать пользователю уже экселевский файл.. ЗЗЫ За гуру стыдно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2012, 10:53 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
AHDP, тоесть в 7 sql запрос возвращается в дбф файл, хранщийся во временный файлах 1с? Хм хотя наверное ты прав. NiWay - приведи всю логику расчета поставщика и покупателя. Будет видно - можно ли все в запрос кинуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2012, 11:29 |
|
||
|
Оптимизация формирования отчета
|
|||
|---|---|---|---|
|
#18+
Программист 1с, Насколько помнью неиспользоватьsql() на это не влияет. Всю логику перетаскивать может и не надо, а вот вытащить значения для ее реализации и построения отчета нужно. И отсортировать. Например показать контрагентов у которых задолженность привышала 5%от оборота за анализируемый месяц в течении 5 рабочих юней и при этом была больше 1000 рублей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2012, 17:06 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=37977113&tid=1520197]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
46ms |
get topic data: |
61ms |
get forum data: |
2ms |
get page messages: |
97ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 258ms |

| 0 / 0 |
