Методика оптимизации программного кода 1С: проведение документов

30.03.19

Разработка - Инструментарий разработчика

Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С. Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия. К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Методика оптимизации программного кода 1С - Обычные формы
.dt 108,29Kb
10
10 Скачать (1 SM) Купить за 1 850 руб.
Методика оптимизации программного кода 1С - Управляемые формы
.dt 107,82Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

Публикация предназначена в первую очередь для программистов, ведущих разработку ПО в крупных информационных системах с массивным потоком обрабатываемой информации и большим количеством пользователей.
Я изучаю вопросы оптимизации более 15 лет, за это время участвовал и руководил проектами оптимизации информационных систем на базе различных конфигураций 1С практически во всех областях учета. На мой взгляд, первопричина зависаний и плохой работы программы 1С - некачественный программный код модулей этой самой 1С. Если у вас проблемы с производительностью системы, вы можете устанавливать супер современное оборудование, тратить месяцы на обучение продвинутых пользователей, пробовать любые тонкие настройки ИТ-техники - без оптимизации программного кода, рано или поздно, вы столкнетесь с теми же проблемами производительности, а зачастую с более серьезными.

Поэтому данная статья посвящена исключительно программной оптимизации. 

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

Во-вторых, при оценке программного кода необходимо руководствоваться здравым смыслом и не рассматривать его исключительно через призму рекомендаций 1С. В крупных информационных системах действуют свои законы и правила работы с данными. Очень часто, следуя рекомендациям 1С, мы достигаем противоположного эффекта. Для примера - использование временных таблиц. Из личного опыта: в 90% случаев причина зависаний и отказов 1С в клиент-серверном режиме - бездумное и необоснованное использование команды "Поместить" при построении запросов к базе данных. 

В рамках этой публикации хочу остановиться на одном из самых узких мест с точки зрения производительности - обработке записи/проведения документов. Ниже представлена многократно проверенная методика оптимизации модулей проведения. Описанные методы и объекты помещены в небольшую конфигурацию, выгрузка демонстрационной базы во вложении.
Используемые в публикации скриншоты созданы из вложенной демонстрационной базы.     

Рекомендую на этапе разработки использовать тестовую копию рабочей базы с тем же режимом работы (файл/сервер). Для приближения условий тестирования в тестовой базе к реальным условиям работы, в предлагаемой методике реализована возможность запуска нагрузочных сессий для имитации рабочего режима.

I. Подготовка конфигурации.

Выгружаем конфигурацию из демонстрационной базы и добавляем из нее в оптимизируемую конфигурацию новые объекты :
 - справочник "Дополнительные константы" для хранения настроек;
 - общий модуль "МодульОптимизация" с сервисными функциями и процедурами; 
 - параметр сеанса "ВклОптимизации" для переключения режима использования модулей (исходных/оптимизированных). Добавляем в модуль сеанса его  инициализацию; 
 - регистр "ОтложенноеПроведениеДокументов" для формирования очереди отложенного проведения документов. Используется для исключения конфликтов блокировок.
 - обработка "Регламент" для запуска регламентных заданий в файловом режиме работы (демонстрация отложенного проведения).
 - обработка "ТестПроведения" для анализа результатов оптимизации.
 - обработка "ТестоваяНагрузка" для дополнительной нагрузки системы во время теста.
Не забываем добавить права на новые объекты в общедоступную роль.

Подсистема реализует следующие возможности:

  1. Автоматический запуск указанного количества нагрузочных сессий для приближения условий теста в тестовой базе к реальным условиям работы.
  2. Включение/выключение использования оптимизированного кода "на лету" в режиме предприятия;
  3. Включение/выключение использования оптимизированного кода только для выбранных пользователей;
  4. Включение/выключение использования оптимизированного кода только для выбранных функций и процедур оптимизируемых модулей;
  5. Включение режима отложенного проведения документов. При этом выбранные документы выстраиваются в очередь и проводятся регламентом на сервере. Исключается длительное ожидание проведения документа пользователем. Исключаются блокировки за счет последовательного проведения.
  6. Автоматическая сверка движений документов, проведенных с вкл/выкл режимом оптимизации.

II. Определение проблемных зон кода 

1. Информацию о проблемах при проведении получаем от наших пользователей - они предоставляют ее в избытке.
2. Выбираем объект, работа которого наиболее критична для бизнеса.
3. В конфигураторе открываем модуль формы обработки "ТестПроведения".
4. Устанавливаем точки останова в процедуре "ВыполнитьТест" до и после основного цикла тестового проведения (в исходной обработке для обычных форм №стр 341 и 444).


5. Запускаем 1С в режиме отладки. 
- Открываем в сессии отладки обработку "ВыполнитьТест".


- Выбираем из списка выбора вид тестируемого документа.
- Устанавливаем количество тестовых проведений. Параметр используется для получения более точных средних показателей.
- Выбираем способ отбора тестируемых объектов: проведение выбранного документа или проведение выборки за период.


- Выполняем команду "Выполнить тестирование".

6. При остановке на первой точке останова включаем режим замера производительности и продолжаем отладку:

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

8. Продолжаем отладку. После завершения теста в окне сообщений отобразится результат замеров с временными показателями. Собственно уменьшение этих показателей и является нашей целью:

III. Анализ и исправление проблемных зон 
1. Переходим к найденным участкам кода, анализируем на возможность оптимизации. О методах оптимизации кода статей множество, поэтому кратко, на что обращаем внимание:
 - многократное выполнение одинаковых запросов к БД( к примеру, в цикле), с пониманием того, что получение через точку свойств ссылочных объектов, это так же запросы к БД;
 - Использование в тексте запросов инструкции "Поместить". Если есть возможность построить качественный запрос без использования временных таблиц, обязательно используйте эту возможность. Темповая база - это самое узкое место в массивных информационных системах. Проведение через нее потоков данных должно быть серьезно обосновано.
 - уровень использования принудительного кеширования для значений, часто используемых в коде (к примеру, ссылок на организацию, статью движения, номенклатуру и пр.). Методов кеширования множество - хранение этих значений в локальных или глобальных переменных типа таблица или структура, подключение функций общих модулей с повторным использованием значений и пр.

2. Если найден сомнительный код и появились идеи по его исправлению, добавляем в общий модуль "МодульОптимизация" копию найденой процедуры(функции) с именем, содержащим префикс <Вид оптимизируемого документа>. Объект документа передаем в параметре.


3. Оптимизируем код в новой процедуре(функции).
4. Добавляем в начало исходной процедуры(функции) переключение по значениям параметра сеанса на новую процедуру(функцию)
5. Повторяем алгоритм, описанный в п.II, но перед запуском команды "Выполнить тестирование" меняем настройки режима тестирования:
устанавливаем флаги "Автоматическое тестирование кода до/после оптимизации" и "Сверка проводок, сформированных до и после включения режима оптимизации":

6. После завершения теста в окне сообщений отобразится результат ваших стараний - показатели до и после использования оптимизированного кода. 

IV. Выполняем алгоритмы II и III до тех пор, пока не будут ликвидированы критические проблемы производительности.

V. Если достичь желаемого результата не удается и проведение все равно занимает неприемлемо много времени, перенесите функционал проведения на сервер , используя алгоритм отложенного проведения. Упрощенная схема подобного алгоритма реализована в приложенной демонстрационной базе.


Центральным объектом метода оптимизации является обработка "ТестПроведения". Описание настроек:

 - "Количество тестовых попыток записи/проведения документов" определяет количество перепроведений выбранного документа в режиме темта по 1 документу. В режиме теста по выборке за период параметр определяет количество отбираемых документов. Особенность теста по выборке - при повторном тестировании при формировании выборки исключаются документы, участвовавшие в предыдущих тестах.
 - Флаг "Оптимизация включена для текущего пользователя" включает режим использования оптимизированных модулей для текещего пользователя.
 - Флаг "Оптимизация включена для всех пользователей" включает режим использования оптимизированных модулей для всех пользователей.
 - Флаг "Автоматическое тестирование кода до/после оптимизации" включает режим тестирования с  автоматическим переключением использования оптимизированных модулей. При этом объекты теста перепроводятся дважды: с использованием исходного кода и с использованием оптимизированных модулей;    
 - Флаг "Сверка проводок, сформированных до и после включения режима оптимизации" включает режим сверки проводок документа, сформированных оптимизированным и не оптимизированным кодом;
 - Флаг "Перезаписывать только проведенные" - для тестирования будут отбираться только проведенные документы;
 - Флаг "Режим записи без проведения" - при тестировании документы будут записываться без проведения;
 - Флаг "Автозапуск нагрузочных сессий" - перед началом тестирования будут запущены нагрузочные сессии 1С. После окончания теста нагрузочные сессии будут автоматически закрыты;
 - "Каталог сохранения лога тестирования" определяет путь к каталогу, в котором автоматически сохранится результат теста;
-  Команда "Выполнить тестовое проведение всех документов периода" запускает пакетное перепроведение всех документов выбранного периода. При этом документы перепроводятся партиями по 10, поочередно и в обычном режиме и в режиме оптимизации. Команда предназначена для анализа разультата оптимизации и сверки проводок в потоке. 
 - Флаг "Выполнить тест процедуры" - при тестировании будет выполнятся только код указанной процедуры;

Настройки нагрузочных сессий:
 - "Количество нагрузочных сессий" - количество сессий, которые будут запущены автоматически;
 - "Месяц отбора документов для нагрузки" - определение месяца, в пределах которого будут отбираться документы для перепроведения в нагрузочных сессиях;

VI. Запуск режима оптимизации для рабочей базы.

Перед включением режима оптимизации для всех пользователей рабочей базы рекомендую включить оптимизацию для 1-2х пользователей, которые особенно нагружены и недовольны зависаниями и сбоями. Во-первых это даст объективную оценку результата, во-вторых - это дополнительный пользовательский тест алгоритмов, которые в результате проведения оптимизации кода могут существенно отличаться от исходных. Как правило, достаточно эксплуатировать базу в таком режиме 3-5 дней, после чего можно включить режим оптимизации для всех.

Включение и выключение режима оптимизации производится с помощью предопределенного элемента "ВключениеОптимизации" справочника "ДопКонстанты".

Включение и выключение режима для всех пользователей производится установкой поля "Значение" элемента "ВключениеОптимизации" в "Истина" или "Ложь" соответственно. Для этого можно использовать флаг "Оптимизация включена для всех пользователей" в обработке ТестПроведения.

Для включения оптимизированных обработчиков только для конкретного пользователя необходимо добавить в табличную часть "Значения" элемента "ВключениеОптимизации" строку, поместив в поле "Ключ" код пользователя, а в поле "Значение" - значение "Истина". 

Для включения/выключения использования определенной оптимизированной процедуры(функции), необходимо добавить в табличную часть "Значения" элемента "ВключениеОптимизации" строку, поместив в поле "Ключ" имя этой процедуры, а в поле "Значение" - значение "Истина" или "Ложь" соответственно. 

Все эти настройки реализованы в тестовой демонстрационной базе.

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

В завершение. 
Процесс оптимизации чужого кода - занятие длительное, кропотливое и существенно отличающееся от обычного программного творчества, которым нам, программистам, приходится заниматься. Это бесконечный анализ, поиск новых решений, их реализация, и далеко не каждое решение оказывается удачным. Несмотря на существенный опыт в этой области, на ощутимую оптимизацию конфигурации у меня уходило порой до нескольких месяцев. При этом многие типовые модули приходилось переписывать заново, полностью меняя логику исходных алгоритмов. Но результат этой работы - стабильная рабочая система, в которой сбои и зависания - исключительная редкость. Поэтому, если ваша программа 1С работает не так быстро, как хотелось бы ее пользователям - проведите ревизию программного кода и оптимизируйте его, оно того стоит.

анализ производительность оптимизация проведение документов

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    151626    833    397    

841

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    20363    59    42    

106

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

OneRPA - платформа роботизации рутинных операций, в основе которой лежит платформа 1С:Предприятие. Данная платформа позволяет использовать современные технологии роботизации, не теряя при этом наработки, которые были созданы в ходе автоматизации. При этом платформа роботизации сохраняет все преимущества платформы 1С: гибкость, кроссплатформенность, мобильный и Web доступ, простоту расширения. Ну и конечно же роботы создаются и сопровождаются простыми специалистами 1С, при этом не обязательно программистами. Self hosted версия

300000 руб.

03.03.2021    14180    12    27    

36

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    13999    36    7    

69

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Платформа 1С v8.3 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

6900 руб.

20.08.2024    3854    22    6    

36

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    9093    33    10    

56

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

4800 3840 руб.

14.01.2013    185409    1127    0    

899

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    16744    6    29    

42
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vandalsvq 1585 19.03.19 12:02 Сейчас в теме
(0) правда и ДокументОбъект.Автор.Код тоже не самое оптимальное решение, в таком случае рекомендуется запросом получать значение конкретного поля. А то ведь обращение ДокументОбъект.Автор.(ЛюбойРеквизит) приведет к полному чтению данных ссылки "Автор" и помещению в память на какое-то время
BenDigget; Alex_vk; w.r.; CyberCerber; mysm; user-z99999; wowik; +7 Ответить
17. dmitrydemenew 645 19.03.19 14:36 Сейчас в теме
(1)Согласен, с точки зрения правильного кода - да, запрос более оптимальное решение. Еще более оптимальное решение - получение этого параметра, к примеру, функцией модуля с повторным использованием возвращаемых значений. Но в рамках демо-примера ни то ни другое не окажет существенного влияния на производительность, т.к. параметр находится за рамками проблемной зоны кода, за границей цикла. Код в примере - всего лишь тестовая нагрузка, не более.
46. w.r. 650 22.03.19 07:50 Сейчас в теме
(17)
(1)Согласен, с точки зрения правильного кода - да, запрос более оптимальное решение. Еще более оптимальное решение - получение этого параметра, к примеру, функцией модуля с повторным использованием возвращаемых значений. Но в рамках демо-примера ни то ни другое не окажет существенного влияния на производительность, т.к. параметр находится за рамками проблемной зоны кода, за границей цикла. Код в примере - всего лишь тестовая нагрузка, не более.

С модлями с повторным использованием лучше не играться. Если реквизит код или номер документа - еще можно использовать и то с опаской. Если это любой другой реквизит, который с высокой вероятностью может быть исправлен пользователем во время сеанса - то будут возвращаться устаревшие данные. Поэтому лучше всего - это запрос конкретных реквизитов
Aggressorak; for_sale; user811769; pm74; +4 Ответить
2. capitan 2490 19.03.19 12:11 Сейчас в теме
Очередная статья и очередной велосипед )
Без обид, методика интересная и имеет право на жизнь.

На мой взгляд, первопричина зависаний и плохой работы программы 1С - неправильное проектирование информационной системы, а потом уже некачественный программный код модулей этой самой 1С.
Оптимизировать программный код можно до опупения, но как правило в 90% есть решение выноса части функционала например на нерабочее время и т.п. в том числе и железячные.
Я конечно 15 лет не изучаю вопросы оптимизации, но загнав tempdb на RAM диск или на SSD если не помещается вы в разы ускорите вашу ситуацию
Поэтому (пишется вместе) в отрыве от реальных событий сложно сказать про данную методику, тем более она на обычных формах.
Alex_vk; Evil Beaver; PLAstic; Идальго; Irwin; fancy; wowik; +7 Ответить
3. user-z99999 70 19.03.19 12:35 Сейчас в теме
(2)
Складывается впечатление, что вы стараетесь кого-то обидеть своими комментариями.
Я конечно 15 лет не изучаю вопросы оптимизации, но загнав tempdb на RAM диск или на SSD если не помещается вы в разы ускорите вашу ситуацию

Очень мощный сервер может спрятать недостаток опыта плохого программиста, иногда.
bugagashenka; CyberCerber; oleg-x; RustIG; +4 Ответить
8. capitan 2490 19.03.19 13:15 Сейчас в теме
(3)Я же написал - без обид.
И обидеть никого не хочу.
Просто мне например не хватает информации из публикации, а заявление что tempdb - зло я не принимаю.
Если не слишком удачно скрестить виртуальные таблицы то у вас оптимизатор БД выберет сканирование таблиц, что на базе 500 Гб будет фиаско.
Отсюда tempdb и вырос в 1С и во всех языках даже чистом SQL он есть
GOshaSaveiko; bulpi; GreenDragon; wowik; pavlov_dv; Vladimir Litvinenko; +6 Ответить
9. dmitrydemenew 645 19.03.19 13:37 Сейчас в теме
(8) Основные факторы, определяющие мое отношение к этой проблеме таковы:
1. Реально наблюдаемое огромное количество трудоемких физических операций с жестким диском, в разы превышающих число операций с БД хранения и вызванных обработкой временных данных (обоснование во вложении).
2. В результате выполнения этих трудоемких операций, что вполне логично при их критическом увеличении, "зависает" 1С и пользователи программы ощущают существенное неудобство.
3. Я, как специалист, отвечающий за отсутствие этого неудобства, недоволен источником этих неудобств, и был бы рад, если бы использование этого инструмента (ВТ) было всегда технически обоснованным.

Это исключительно мое личное мнение и я его никому не навязываю.
Прошу всех не обсуждать и не поднимать тему использования ВТ в рамках этой публикации.
Прикрепленные файлы:
14. capitan 2490 19.03.19 14:21 Сейчас в теме
(9)дело в том, что скорость работы 1С при правильном написании кода не зависит от размера базы, до тех пор пока не начинается сканирование таблиц разумеется.
В идеале 2 Гб и 2 Тб базы должны вам информацию с регистра остатков например поднять с одинаковой скоростью тем более с SSD
И если этого не происходит, то ни фига это не во ... таблицах дело
В принципе в ... таблице откуда взяться такому большому объему ? если вы предварительно фильтры накладываете разумеется
Т.е. надо брать профайлер и долго курить ваши запросы
Тогда может и не надо будет так скрупулезно замерять результат оптимизации - вы его услышите по крикам ура и брызгам шампанского из бухгалтерии )
ivv1970; PLAstic; +2 Ответить
62. dmurk 27.06.19 10:46 Сейчас в теме
(14) Не согласен с вами. Зависимость есть, хотя и нелинейная

1. Каждое увеличение размера индекса в два раза добавляет 1 шаг к поиску строки в бинарном индексе, что частично нивелируется статистикой
2. Увеличение размера индексов повышает скорость устаревания статистики после выполнения операции UPDATE STATISTICS
3. Ваше утверждение упирается в невозможность размещения индексов в ОЗУ после определенного объема базы
66. capitan 2490 27.06.19 11:07 Сейчас в теме
(62)А вы посчитайте эту нелинейность.
Индекс - это бинарное дерево, насколько оно вырастет при увеличении данных в 2 раза - на 1 шаг
Нормально построенный индекс - он небольшого размера, поэтому индексы и появились.
Т.е. если у вас индекс растет такими же темпами как и данные - у вас неправильные индексы
67. dmurk 27.06.19 12:15 Сейчас в теме
(66) Безусловно условно одинаковая производительность СУБД сохраняется какое-то время, но это не значит что так бдет на любом объеме данных
33. GreenDragon 20.03.19 17:47 Сейчас в теме
(9) Судя по вашему скрину, время ответа по вашим выделенным строкам 12 и 14 мс. Вы где-то увидели проблему? То, что длина очереди 5, практически ни о чём не говорит.

Процитирую статью с sqlcom.ru

Правило, по которому глубина очереди не должна для одного диска превышать 2 (и другие сопутствующие признаки) не соотносятся напрямую с глубиной очереди, определённой по счётчикам производительности операционной системы. Таким образом, получило распространение несколько иное правило, гласящие, что задержки при обращении к диску не должны превышать примерно 10 – 20 ms, что было вычислено из прежнего правила глубины очереди 2 на диск (вероятно, для дисков с 7200/10000 об/мин), причём, без учёта описанных выше дополнительных признаков.
34. dmitrydemenew 645 20.03.19 17:51 Сейчас в теме
(33)Вот только длина очереди не 5, а 50...
38. asved.ru 36 21.03.19 08:13 Сейчас в теме
(9)
Прошу всех не обсуждать и не поднимать тему использования ВТ в рамках этой публикации.


В таком случае не следовало рекомендовать отказ от использования временных таблиц. Сейчас же получается, что Вы даете откровенно вредную рекомендацию и просите ее не обсуждать. В джентльменском обществе за такое канделябром бьют :)
Somebody1; Wdivine; PLAstic; +3 1 Ответить
39. dmitrydemenew 645 21.03.19 08:21 Сейчас в теме
(38)В публикации нет рекомендаций отказа от временных таблиц, есть лишь рекомендация использовать этот инструмент обдумано и технически обосновано.
41. TODD22 19 21.03.19 10:12 Сейчас в теме
(39)
есть лишь рекомендация использовать этот инструмент обдумано и технически обосновано.

Но про техническое обоснование ни слова... про обдуманность то же...
43. dmitrydemenew 645 21.03.19 10:35 Сейчас в теме
(41) Повторюсь: предложенная методика дет возможность измерить обоснованность (с точки зрения производительности) использования любых способов построения программного кода в цифрах. Все мои выводы основаны исключительно на результатах этих измерений в информационных системах, которые мне приходилось оптимизировать.
64. dmurk 27.06.19 10:58 Сейчас в теме
(43) Дмитрий, дам совет.
- Не рассматривайте время в миллисекундах, получаемое средствами 1С как реальный показатель. На самом деле, существует дискретный шаг, внутри которого время выполнения в миллисекундах 1С не измеряет. Например, 56 миллисекунд. От встроенного таймера 1С вы вряд ли получите значение 0.008 секунды, так как данный показатель будет округлен вниз, до нуля, а, соответственно, значения близкие к первой ступени дискретности округляются вверх, завышая время измерения. Соответственно, чтение цифр в вашем примере - "минимальное время", "максимальное время" весьма условно. Я пробовал добиться более высокой точности измерений, изменяя настройку в БИОС High Precision Timer, но на 1С она не влияет, только на операционку. Следовательно, как минимум, требуется внешняя компонента замера таймингов, чтобы на подобные цифры обращать внимание.
- Кроме того, необходимо учитывать важность количества потоков в кластере 1С - достаточно просто проанализировать, крутится ваш тестовый стенд в изолированном потоке, или совместно с вашим тестом обрабатываются дополнительные. Серверный процесс в кластере поочередно исполняет команды из нескольких клиентских соединений, которые находятся на обслуживании у этого процесса, что вносит дополнительный разброс измерений
44. starik-2005 3080 21.03.19 10:45 Сейчас в теме
(41) так статья не ставит цель рассказать, что такое обоснованность и обдуманность - она для этого по формату не пройдет на сайт, ибо модератор не сможет дочитать произведение, в полной мере раскрывающее вышеописанное, до конца. Есть совершенный код Макконнелла, есть труды Дейкстры, Вирта, Кнута - не нужно тут про обоснованность и обдуманность, ибо читающие должны быть с приведенными литературными произведениями как минимум ознакомлены.

Другое дело, что автор статьи не привел список литературы, которая могла бы помочь обосновать и обдумать. В те времена, когда пионеры были большими, пруфы даже в школьных докладах были. Но в российской действительности указать ссылки на дополнительные или используемые материалы редко кто способен (видимо, кризис высшего образования), поэтому я современную русскую литературу по бизнесу и прочему стараюсь не читать.
71. strelec13 21 01.07.19 14:35 Сейчас в теме
(44)
я современную русскую литературу по бизнесу и прочему стараюсь не читать.

Надеюсь хотя бы русскую старую или советскую литературу по бизнесу читаете, если современную российскую избегаете. Есть большая перспектива не читать современную литературу по бизнесу из других стран, начиная со стран Африки, а не только российскую.
72. starik-2005 3080 01.07.19 14:51 Сейчас в теме
(71)
Надеюсь хотя бы русскую старую или советскую литературу по бизнесу читаете
А с чем связана Ваша "надежда"? Советская литература по "бизнесу" - это какая? Ну и старая, собственно, тоже... Про Остапа Бендера что-ли? )))

Я читаю западную литературу (если говорить о бизнесе и экономике). Она в данном вопросе куда качественнее. Из старой Адама Смита, Карла Маркса, Фридриха Энгельса, Эриха Фромма (не совсем о бизнесе, но тоже не зря написано) ну и многих других. Из современных тоже хватает талантливых авторов, если на вскидку, то, например, Джон Нэш, Теодор Шульц, - но это, конечно, нобелевские лауреаты. А из российского если только диссертации докторские по экономике читать, которые не являются плагиатом. Кто там у нас в РФ получил какую-нить престижную мировую премию по экономике за последнее время? Никто? Как жаль...
73. strelec13 21 01.07.19 17:23 Сейчас в теме
(72)
Советская литература по "бизнесу" - это какая? Ну и старая, собственно, тоже... Про Остапа Бендера что-ли? )))

Спасибо за идею. Надо будет почитать советскую или старую литературу про бизнес в лице Остапа Бендера. На западе поучится у наших Остапов ...
74. starik-2005 3080 01.07.19 17:36 Сейчас в теме
(73)
На западе поучится у наших Остапов
Мне, вот, в целом ответ не ясен. Кто "поучится" у наших Остапов на западе? Или имелось ввиду "поучиться у наших Остапов на Западе", т.е. поехать на Запад (в соответствующие страны, поэтому с большой буквы) и там взять Ильфа и Петрова, чтобы поучиться бизнесу? С какой целью?
75. strelec13 21 01.07.19 17:40 Сейчас в теме
(74)
поучиться

Подучу грамматику, чтобы потом Вам был ответ ясен.
76. starik-2005 3080 01.07.19 17:42 Сейчас в теме
(75)
чтобы потом Вам был ответ ясен
Тогда зачем сейчас его писать? Ведь можно потом это сделать! Кстати, с такими мыслями можно и самому написать что-нибудь про бизнес, чтобы за державу не было так обидно.Как Вы считаете, сможете? ;)
77. strelec13 21 01.07.19 17:47 Сейчас в теме
(76)
Как Вы считаете, сможете? ;)

Без ваших западных знаний и без нобелевского опыта нет. Разве что подглядеть ваши статьи со сносками на приличную литературу, если есть. Как Вы считаете? Глядишь и обоим нам не будет обидно за державу.
78. starik-2005 3080 01.07.19 18:32 Сейчас в теме
(77) предлагаете в соавторы? А тема какая? Есть уже план публикации?
82. strelec13 21 01.07.19 23:03 Сейчас в теме
(78)это вопрос ко мне чайнику? А Вам слабо? Знающему и опытному любитедю читать западную литературу по бизнесу. Вы меня разочаровываете. Я уже было поверил, что и в заправду разбираетесь в литературной теме о бизнесе. А Вы надеетесь и спрашиваете у чайника. Видать я не по адресу написал. Надеюсь у Вас хватит профессиональной гордости. Не связываться больше с неграмотный неучем.
83. starik-2005 3080 02.07.19 08:46 Сейчас в теме
(82) т.е. вот так сразу при первой сложности в кусты? Вам должно быть стыдно)))
bugagashenka; Aggressorak; acanta; +3 Ответить
85. bugagashenka 203 19.05.21 07:09 Сейчас в теме
(83)Ветка на пять с плюсом =)
81. acanta 01.07.19 20:52 Сейчас в теме
Китайцы строят чайна-тауны в любом городе, а Остап раз убит подельником, два ограблен на границе. И вся история.
Красные приходят - грабят, белые приходят - грабят.
Может китайцы просто не жалуются, в отличие от индейцев ( они конечно в курсе что их проблемы шерифов не волнуют, но вот весь мир например, сочувствует...)
63. dmurk 27.06.19 10:48 Сейчас в теме
(38) Это зависит от того, кто был на прикупе ))
5. dmitrydemenew 645 19.03.19 12:40 Сейчас в теме
(2)На моем текущем месте работы не только tempdb, но и все рабочие базы расположены на SSD. Напоминаю, что все мои рассуждения и выводы относятся исключительно к крупным и высоконагруженным информационным системам. Лично мне сейчас приходится работать с базами, средний размер которых более 500 ГБ и расположены они на топовом серверном оборудовании.
"Поэтому" исправил, действительно глаза режет, спасибо. Представленная методика не зависит от режима запуска 1С. Во вложении демки для вариантов запуска как в режиме управляемых, так и обычных форм.
4. user-z99999 70 19.03.19 12:36 Сейчас в теме
Автор молодец, почти воспроизвел APDEX "Оценка производительности" из БСП.
PLAstic; Irwin; A_Max; +3 Ответить
6. VmvLer 19.03.19 12:58 Сейчас в теме
практическая ценность тестов в каких-то демо-базах сомнительна.

я не призываю светить тут учетные данные баз от 500 гб., но только выводов по результатам
тестирования недостаточно. Необходимы визуальные результаты(статистика) тестов именно по таким базам.
7. dmitrydemenew 645 19.03.19 13:13 Сейчас в теме
(6)Практическая ценность этих тестов не сомнительна - она отсутствует. Эти демо-базы только для того, чтобы перед принятием решения, использовать или нет описанную методику в рабочем режиме, опробовать ее в тесте и предварительно оценить результат ее работы.
10. user-z99999 70 19.03.19 13:58 Сейчас в теме
(7)
Может следующая статья будет про ошибки (время выполнения) в запросах 1с, оптимизация ?
Т.е. как было и как исправили. Например, самые частые ошибки.
11. dmitrydemenew 645 19.03.19 14:05 Сейчас в теме
12. capitan 2490 19.03.19 14:10 Сейчас в теме
(10)А вы бы не хотели то же самое почитать на ИТС ?
Так сказать из первоисточника
13. user-z99999 70 19.03.19 14:17 Сейчас в теме
(12)
Первоисточник -это хорошо.
Просто любопытно, какие ошибки самые частые у программистов 1с.

Например, ИТС рекомендует делать индексы на временные таблицы, а по факту - это замедляет работу запроса.
На ИТС не показано во что превращается запрос 1с на MS SQL сервере, когда поля составные.
Вот и хочется в жанре ужасы почитать ))

Ещё,
фирма 1с придумала объектную модель обращения к данным, чтобы программисты 1с использовали её, а не запросы.
Т.е. чтобы 1с работала не слишком быстро ))
ivv1970; alest; bulpi; sergathome; +4 Ответить
47. bugagashenka 203 05.05.19 09:59 Сейчас в теме
(15)

При написании запросов не следует использовать соединения с подзапросами. Следует соединять друг с другом только объекты метаданных или временные таблицы. Если запрос использует соединения с подзапросами, то его следует переписать с использованием временных таблиц.


кэп, а Вы пробовали загнать несколько миллионов записей во временную таблицу? Или не так, а что будет, если сделать соединение с подзапросом, где на одном из уровней будет таблица данных? Что в таком случае покажет план запроса? Вот долго я ломал голову, а с чего это вендор, у которого есть экзамен Эксперт по технологическим вопросам такие советы дает. Оказалось просто. Постгре не умеет работать с подзапросами, потому и MS SQL досталось на орехи.

Временные таблицы не зло, это умеренное зло, если в конкретно данном случае, в конкретно данной задаче они обоснованы и производительнее, чем подзапрос.
51. capitan 2490 05.05.19 12:22 Сейчас в теме
(47)Честно скажу я с трудом могу представить задачу в которой нужно загнать несколько миллионов записей во временную таблицу.
План запроса вероятно покажет фулл скан с таблицей из которой у вас во временную с отборами набралось несколько миллионов записей
Не понял вопроса.
Что касается рекомендации - она намного раньше дружбы с постгри появилась.
Да и при таком масштабе задач опять же только по моему мнению уже не до экономии на лицензиях
53. bugagashenka 203 05.05.19 14:54 Сейчас в теме
(51)Элементарно, Ватсон, продажи за месяц в нескольких разрезах дают огромный поток данных. И, если обороты загнать во временную, то пользовательский кеш сразу выталкивается наружу.

Вопрос был в том, что Вы лично смотрели, как ведет высоконагруженная система с запросом с временной таблицей и подзапросом?

По поводу рекомендации, да, раньше, но и MS SQL раньше не очень дружил с подзапросами
56. capitan 2490 06.05.19 09:53 Сейчас в теме
(53)Я что то начал терять нить вашего возмущения.
Вы постом раньше были за подзапросы, а в этом посте вроде против.
Миллиона записей о продажах за месяц у меня нет
16. capitan 2490 19.03.19 14:28 Сейчас в теме
(13)И тут Остапа понесло...
Ещё, фирма 1с придумала язык 1С чтобы программисты 1с использовали его, а не ассемблер )
18. dmitrydemenew 645 19.03.19 15:28 Сейчас в теме
(16) Я считаю платформу 1С - лучшей средой разработки. А язык 1С - лучшим для решения задач по автоматизации любых процессов, и пока что не встречал ни одной задачи, которую бы нельзя было решить быстро, удобно и качественно доступными в 1С средствами .
20. user1180228 19.03.19 16:36 Сейчас в теме
(18) Изучаю 1С почти год, до этого был опыт в других языках. Насчет быстро и удобно, это не совсем правда. Нет наследования и классов, без чего практически линейное программирование в 1с. А это прошлый век!
30. A_Max 20 20.03.19 09:54 Сейчас в теме
(20) Всё как обычно 80/20 (А в нашем случае я думаю выйдет даже 90/10). Т.е. для реализации подавляющего большинства задач мощь ООП с наследованием и полиморфизмами не нужны. И, мало этого, при их наличии провоцировало бы неокрепшии умы на творческие экзерцисы которые было бы нетривиально сопровождать.

Частенько задумываюсь, что хотелось бы иметь полноценные свойства объектов с обработчиками get/set. Но опять таки это плюшки и "синтаксический сахар".
48. bugagashenka 203 05.05.19 10:03 Сейчас в теме
(20) Вы тут лукавите, классы есть, достаточно взглянуть на дерево метаданных.
Про наследование. А для чего оно здесь? Что Вы собираетесь наследовать и для чего?
Плохо Вы изучаете 1С, если до сих пор не поняли, что этот "прошлый век" выполняет функции автоматизации бизнеса, и справляется в этом очень даже хорошо. И без наследования и смс.

Вот банальный пример. Нужно написать небольшую автоматизацию, скажем, киоска.
Даны два ЯП - 1С и любой тру на Ваш выбор. Как Вы думаете, кто быстрее автоматизирует киоск, тру или "парапрограммист" 1С? Ответ очевиден, и микроскопом можно гвоздь забить, но зачем?
biimmap; vovan_victory; +2 Ответить
50. acanta 05.05.19 11:07 Сейчас в теме
(48) итак мы вернулись к тому с чего начали. Конкуренция за автоматизацию киосков это хорошо.
Вроде как раньше узким местом была стоимость компьютера с 256 мб памяти. Сегодня- наличие мобильной связи на телефоне с 5 Гб оперативки.
52. bugagashenka 203 05.05.19 14:54 Сейчас в теме
(50) Я совсем не понял, что Вы хотели этим сказать
57. user1180228 07.05.19 08:25 Сейчас в теме
(48) Быстрее всего я напишу на BSScript, похожая на 1С система, только в разы продвинутая. 1С - это что? - Готовые объекты, которые заточены на выполнение каких то стандартных операций. Как только отступление - танцы с бубнами и никакой оптимизации. Да много COM приложений. А без COM и ни туды и ни сюды... Хотите нормальный функционал - пишите COM, а это очень увеличивает время разработки. 1С есть куда развиваться.

По поводу бизнеса также не согласен, бизнес стонет от "тормозов" 1C.
58. bugagashenka 203 07.05.19 09:53 Сейчас в теме
(57)Ок, давайте представим, что Вы сделали свою шикарную систему автоматизации киоска. Все работает отлично и гораздо быстрее, чем 1С. И вот, в один прекрасный момент у Вашего заказчика наступил момент, когда бизнес вырос с этапа счетов до калькулятора. Вы будете пару месяцев дорабатывать свою систему и даже что то получится на выходе. Не ERP, конечно, но уже и не эксель. И тут Вы поняли, что жизнь проживается зря, а внутри рвется художник, и вообще, программирование для других, Ваше же дело жизни - руководить. Скажем, менеджером проектов где-нибудь в Италии, на берегу моря. И что делать Вашему заказчику? Правильно. Искать специалистов. Но, как Вы думаете, легко ему это будет сделать? Нет. Легко масштабировать свою систему? Тоже нет. Если из УТ можно довольно просто эволюционировать в комплексную, а там в ERP, то Вашими усилиями будет убита сама идея автоматизировать бизнес, который, к слову, далеко не глупый и выбирает 1С не просто, что где-то слышал, а как возможность сделать свою систему, при этом без слишком высоких трудозатрат на поиски программиста. Это так, лирика.

По поводу отступлений. А бизнесу оно надо? Я успел поработать с огромным количеством компаний и, представьте себе, только пару раз требовалось изобрести что то этакое, но и тем же комом решалось. И то, потому что другие приложения чаще всего не дают апи для работы из вне.

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

Да, 1С есть куда развиваться, ИЧСХ она и делает.
alex_art; +1 Ответить
59. starik-2005 3080 07.05.19 10:00 Сейчас в теме
(58)
Правильно. Искать специалистов. Но, как Вы думаете, легко ему это будет сделать? Нет. Легко масштабировать свою систему? Тоже нет.
Вот! Золотые слова. Поэтому берете астрального питонщика или PHP-шника и не мучаетесь всякими БССкриптами или чем-там-еще. И никакого 1С, никаких лицензий, дешевые разработчики, которых в западном индостане девать некуда, масштабируемость отличная - хоть киоск, хоть фэйсбук (на пентиуме 1-м даже), ...
60. bugagashenka 203 07.05.19 11:55 Сейчас в теме
(59)PHPшники ох как дорого стоят хорошие)
61. starik-2005 3080 07.05.19 13:31 Сейчас в теме
(60)
PHPшники ох как дорого стоят хорошие)
Индусы? Да они за тарелку супа готовы душу продать! )))
69. muskul 28.06.19 07:41 Сейчас в теме
(61)судя по типовым решениям они сейчас 1с и пилят
Aggressorak; +1 Ответить
79. dachnik 26 01.07.19 19:28 Сейчас в теме
(61)мне кажется, индусы уже давно подороже отечественных быдло-кодеров будут...
80. starik-2005 3080 01.07.19 20:10 Сейчас в теме
(79) индусы бывают разные. Не стоит путать брахмана и биндера кнопки "ок"...
28. GreenDragon 20.03.19 09:49 Сейчас в теме
(16) И на что только люди не пойдут, чтобы не набирать машинный код сразу...
ivv1970; dock; bulpi; capitan; acanta; +5 Ответить
32. capitan 2490 20.03.19 17:07 Сейчас в теме
(28)Это еще что. На что люди пошли чтобы безгранично коннектиться посредством блюпуп и вифи.
А как хорошо было раньше.

Один пpогpаммеp пpишел в гости к дpугому. Сидят, пиво попивают. Тут на кухню заваливает огpомный сеpый котяpа.
- Это мой кот. Зовут Модем.
- Почему Модем?
- Смотpи. - беpет веник, тычет в кота. - Модем! Коннект!
(Кот): - Шшшшшшшшш...
70. Артано 786 30.06.19 12:48 Сейчас в теме
(32) Зухелем кота звали.
65. dmurk 27.06.19 11:02 Сейчас в теме
(13) Индексация временных таблиц замедляет работу запроса:
- ровно настолько, насколько неправильно выбрана модель использования оборудования
- ровно настолько, насколько вы зря решили использовать индексы

Если, например, разместить tempdb на USB флэшке с интерфейсом USB 1.1, то безусловно индексирование ВТ не нужно никогда ))
19. VmvLer 19.03.19 16:23 Сейчас в теме
1. возьмите свою базу в 500 гиг
2. напишите отчет где есть интенсивное обращение к многим оборотным регистрам, регистрам сведений и пр. с количеством записей в таблицах 100-500КК.
3. Напишите вариант отчета из пункта 2 с грамотным использованием ВТ в фильтрах виртуальных таблиц
3.1. Предложите, чтобы 100 пользователей единовременно в течение часа формировали отчет из п.3 с одним и тем же набором "жирных" фильтров
3.2. Соберите статистику по "загрузке" дисков, памяти, процессора, замеры времени сколько работал SQL и сколько сервер приложений 1С "жевал" то, что отдал SQL и пр.
4. Напишите вариант отчета из пункта 2 БЕЗ использования ВТ
4.1. Предложите, чтобы 100 пользователей единовременно в течение другого часа формировали отчет из п.4 с одним и тем же набором "жирных" фильтров как в. 3.
4.2. Соберите статистику по "загрузке" дисков, памяти, процессора замеры времени сколько работал SQL и сколько сервер приложений 1С "жевал" то, что отдал SQL и пр.
5. Сделайте сравнительный анализ п.3.2 - 4.2.

Только после сверки можно делать выводы и пенять на код.
21. user1180228 19.03.19 16:54 Сейчас в теме
(19) Тема интересная но так "просто" не решаемая. Для оценки производительности нужно собирать стенд и там проводить исследование производительности. Я так понял, что никто этого еще не делал.
Согласен с автором статьи, что неоптимизированный код влияет на производительность.
22. dmitrydemenew 645 19.03.19 17:10 Сейчас в теме
(19)предложенная методика как раз содержит инструменты, позволяющие выполнить Ваш алгоритм без издевательств над нашими пользователями - достаточно запустить необходимое количество нагрузочных сессий с выполнением необходимых алгоритмов. Предлагаю Вам воспользоваться предложенными инструментами и поделиться результатами исследований - это будет лучшим доказательством Вашей правоты.
23. starik-2005 3080 19.03.19 21:58 Сейчас в теме
Результат = СтрШаблон("%1%2%3%4%5", Результат, СокрЛП(КодАвтора), Лев(КодАвтора,1), Сред(КодАвтора, 2, 1), Прав(КодАвтора,1));
A_Max; metmetmet; +2 Ответить
26. PerlAmutor 130 20.03.19 07:10 Сейчас в теме
(23) Тогда уж:

КодАвтора = СокрЛП(ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(ДокументОбъект.Автор, "Код"));
Шаблон = "%1%2%3%4%5";
ЛевКодАвтора = Лев(КодАвтора);
СредКодАвтора = Сред(КодАвтора, 2, 1);
ПравКодАвтора = Прав(КодАвтора, 1);
Для а = 1 По 1000 Цикл
    Результат = СтрШаблон(Шаблон, Результат, КодАвтора, ЛевКодАвтора, СредКодАвтора, ПравКодАвтора);
КонецЦикла;
Показать
29. starik-2005 3080 20.03.19 09:50 Сейчас в теме
(26) сам код как я понял у автора демонстрационный. Правильнокодавтора (или что иное) брать из результата запроса, а не из ссылки. Здесь автор не учел, что платформа ссылки кеширует. То, что он называет здесь оптимизацией - это просто придуманная проблема, которая красиво отобразилась в топе длительных операций. Статья о том, как искать проблему, а не о том, как ее решать. Ценность данного произведения отсюда ИМХО мала предельно
insurgut; +1 Ответить
45. TODD22 19 21.03.19 11:51 Сейчас в теме
(29)
Статья о том, как искать проблему, а не о том, как ее решать.

Как пользоваться замером производительности.
42. starik-2005 3080 21.03.19 10:33 Сейчас в теме
(26) тогда уж:
КодАвтора = СокрЛП(ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(ДокументОбъект.Автор, "Код"));
ЛевКодАвтора = Лев(КодАвтора);
СредКодАвтора = Сред(КодАвтора, 2, 1);
ПравКодАвтора = Прав(КодАвтора, 1);
ИтогоКодАвтора = СтрШаблон("%1%2%3%4", КодАвтора, ЛевКодАвтора, СредКодАвтора, ПравКодАвтора);
Для а = 1 По 1000 Цикл
    Результат = СтрШаблон("%1%2", Результат, ИтогоКодАвтора);
КонецЦикла;
31. A_Max 20 20.03.19 09:56 Сейчас в теме
(23) Да вообще когда уже полноценную форматную строку сделают printf :(
24. 3vs 20.03.19 06:50 Сейчас в теме
"К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033)."

А БП3 уже требует платформы
"Внимание! Текущая версия конфигурации "Бухгалтерия предприятия" предназначена для использования с версией технологической платформы 1С:Предприятие 8 не ниже 8.3.12.1685."
Не подустарела информация?

И, не пора ли уже предложить 1С добавить поддержку в сервере СУБД в оперативной памяти, таких как СУБД для данных в оперативной памяти, обеспечивающие их сохранность: Redis, Aerospike, Tarantool?
А то, с каждым обновлением платформы, базы работают всё медленней...
25. dmitrydemenew 645 20.03.19 07:03 Сейчас в теме
(24) В публикации описана методика, которую можно применить в любой конфигурации на любой платформе 1С V8.x.
27. 3vs 20.03.19 08:26 Сейчас в теме
35. Serg O. 294 20.03.19 23:29 Сейчас в теме
во многих конфигурациях - есть обработка "Групповая обработка справочников и документов"
простейшее "нагрузочное" тестирование можно аналогично сделать...

однако, это "чистое" движение (проведение) - не открывая формы документа !? и не возвращаясь в список документов... в котором может быть куча подзапросов и "авторасчетов", расцветки и т.п.

стандартный замер - прекрасная вещь
и в дополнение к нему можно использовать УниверсальныеПодборИОбработкаОбъектов.epf
с диска ИТС - в ней кроме отборов можно делать "произвольный алгоритм"... в том числе открывать и закрывать формы... и что угодно делать кроме этого

******* автору для его разработки (увидел в листинге) *****
1) Таймер() - скорее всего какая-то "своя" функция... лучше заменить на 1С-кую ТекущаяУниверсальнаяДатаВМиллисекундах() - даже в 8.2 есть (с 8.2.19.83 версии точно)

2) вывод...из просто сообщить()... лучше сделать запись в текстовую переменную
а потом её можно и сообщить() и в Текстовый / HTML-Файл (для красоты)... сохранять

3) хорошо оформлена статья, спасибо, удобно читать было
+
36. itmind 308 21.03.19 07:03 Сейчас в теме
Очередная статья, в которой говорится, что временные таблицы - зло. Но у меня другой пример.
Штатный отчет Валовая прибыль из УПП 1.3 (УТ 10.3). Простой запрос, где левым соединением выборка из таблицы себестоимости.
Вставляем этот запрос в СКД один в один, запускаем на базе > 600Гб и получаем зависания на 2-3 часа (при этом иногда выполняется быстро, за несколько секунд). При этом сам запрос, не в СКД, выполняется очень быстро.
Переписываем запрос в СКД на временные таблицы и все работает быстро, никаких зависаний. Предполагаю, что оптимизатор SQL лучше работает на временных таблицах.
Исходя из данной проблемы можно сказать, что вложенные запросы в соединениях еще большее зло, чем временные таблицы.
37. dmitrydemenew 645 21.03.19 07:50 Сейчас в теме
(36)В этой статье нет ни слова о том, что ВТ - зло. Единственное назначение публикации - описание одного из множества способов анализа и оценки оптимизации программного кода модулей проведения документов. С помощью предложенной методики вы можете сами объективно оценить ту роль (позитивную или негативную), которую играет использование ВТ в проблемных местах Вашей информационной системы.
55. dmurk 05.05.19 17:53 Сейчас в теме
(37) И вообще, индексация временных таблиц творит чудеса ))
40. ELInfinito 21.03.19 08:28 Сейчас в теме
(36) Запрос в СКД может работать иначе, чем исполнение в консоли запросов или просто кодом.
Причина проста - СКД трансформирует запрос по неким своим принципам и на сервер улетает совсем не то, что написали вы в наборе/наборах данных .
Далеко не факт, что применение временных таблиц поможет...но я не говорю, что это зло ) В контексте 1С их здравое применение решает. Если временные таблицы применяет неофит, натыкивая их везде где надо и не надо. да еще и индексируя все подряд...это конечно зло )
49. bugagashenka 203 05.05.19 10:09 Сейчас в теме
(36) а этот запрос Вы берете прямо из СКД, который она сама развернула или то, что пишете в конструкторе?
СКД иногда пихает отборы так криво, что образуются дополнительные соединения с таблицами, отсюда и просадка.
68. vovan_victory 65 27.06.19 12:36 Сейчас в теме
(36)
получаем зависания на 2-3 часа (при этом иногда выполняется быстро, за несколько секунд).

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

(36)
Переписываем запрос в СКД на временные таблицы и все работает быстро, никаких зависаний.

ожидаемое поведение системы. Отказались от динамического списка в пользу конкретного набора данных, и , "результат, так сказать, на лице"
54. dmurk 05.05.19 17:50 Сейчас в теме
На текущем этапе развития (для меня) статья не актуальна. Пару замечаний
- Получение в коде временных отметок имеет крайне высокую гранулярность, на моем тестовом сервере это 43 миллисекунды, что делает неэффективным подобный механизм на измерениях оптимизированных запросов
- Погрешность отклонения в замерах производительности может составлять 200 миллисекунд
- Параллельные способы выполнения кода в кластере 1С могут не только снижать скорость выполнения отдельных строк кода, но и повышать скорость обмена данными между модулями объектов и общими модулями
Всем успехов!
84. biimmap 2005 22.03.21 10:36 Сейчас в теме
В целом поделка полезная, хоть и узконаправленная (только проведение).

Единственное где не согласен так это с созданием временных таблиц. понятно, что не всегда их правильно используют, но в моей практики от зависаний избавлялся путем индексирования и контролем индексов в связях. Также важно правильно обрабатывать результат запроса. А это как раз и описано в рекомендациях 1С, т.е. в стандартах разработки. Призывать их не использовать явно неверное решение!
Оставьте свое сообщение