Приемы, методы разработки и тестирования.
OCS Distribution
Ведущий программист 1С
Разработкой на 1С занимаюсь более 25 лет.
Начинал с версии 7.0, прошел весь путь до 8.3 (через 7.5, 7.7, 8.0, 8.1, 8.2).
На 7.5 мне даже довелось самому сделать первый партионный учёт, даже раньше самой фирмы 1С. Под это пришлось писать свою БД через внешнюю компоненту на С++. Использовал теорию двоичных (бинарных) деревьев.
Полученный тогда опыт до сих пор помогает мне интуитивно понимать принципы выборки данных в современных реляционных базах данных,
и принципы блокировок данных. Поэтому, задачки по оптимизации запросов к базе данных – мои любимые :) и достаточно часто – успешные.
Был опыт работы с различными конфигурациями: УТ, КА, УПП (ERP), с Бухгалтерией 3.0, 1.6, и даже с ЗУП.
Показать полностью...
Начинал с версии 7.0, прошел весь путь до 8.3 (через 7.5, 7.7, 8.0, 8.1, 8.2).
На 7.5 мне даже довелось самому сделать первый партионный учёт, даже раньше самой фирмы 1С. Под это пришлось писать свою БД через внешнюю компоненту на С++. Использовал теорию двоичных (бинарных) деревьев.
Полученный тогда опыт до сих пор помогает мне интуитивно понимать принципы выборки данных в современных реляционных базах данных,
и принципы блокировок данных. Поэтому, задачки по оптимизации запросов к базе данных – мои любимые :) и достаточно часто – успешные.
Был опыт работы с различными конфигурациями: УТ, КА, УПП (ERP), с Бухгалтерией 3.0, 1.6, и даже с ЗУП.
«Методы ускорения группового проведения документов. Многопоточность. Проводим документы параллельно там, где требуется строго последовательно» (114)
Кажется, мы посягнули на "святое", пытаясь восстанавливать последовательность проведения документов
в несколько параллельных потоков, но нет! Если разобраться детально, открывается много интересных возможностей.
Я расскажу про наш опыт: как ничего не сломать и при этом не стоять в одной очереди.
Детально на примере рассмотрим части кода, что от чего зависит, что делать нельзя, а что вполне можно и почему.
Несколько примеров от простого к сложному на основе нашего реального кейса.
Что делать, когда зависимость всё же есть, и она мешает нашей параллельной обработке.
Компилируем план проведения документов, что в какой поток попадёт.
Доказательный подход: Анализируем и убеждаемся в том, результат проведения каких документов не влияет друг на друга,
и запускаем их в параллельные потоки.
Координация разных потоков. Когда приходится остановиться, и подождать соседа.
Как мы организовали систему семафоров между потоками.
Неприятные сюрпризы. Стабильность. С чем мы столкнулись и как ловко обошли проблемы.
Итоги:
в нашем случае удалось сократить время закрытия месяца с 24 часов до 7.
это ускорение на 70%, высвободили 17 часов.
Так, бухгалтера смогли снова запускать проведение на ночь и с утра продолжать работу.
в несколько параллельных потоков, но нет! Если разобраться детально, открывается много интересных возможностей.
Я расскажу про наш опыт: как ничего не сломать и при этом не стоять в одной очереди.
Детально на примере рассмотрим части кода, что от чего зависит, что делать нельзя, а что вполне можно и почему.
Несколько примеров от простого к сложному на основе нашего реального кейса.
Что делать, когда зависимость всё же есть, и она мешает нашей параллельной обработке.
Компилируем план проведения документов, что в какой поток попадёт.
Доказательный подход: Анализируем и убеждаемся в том, результат проведения каких документов не влияет друг на друга,
и запускаем их в параллельные потоки.
Координация разных потоков. Когда приходится остановиться, и подождать соседа.
Как мы организовали систему семафоров между потоками.
Неприятные сюрпризы. Стабильность. С чем мы столкнулись и как ловко обошли проблемы.
Итоги:
в нашем случае удалось сократить время закрытия месяца с 24 часов до 7.
это ускорение на 70%, высвободили 17 часов.
Так, бухгалтера смогли снова запускать проведение на ночь и с утра продолжать работу.
12 Октября 14:10-14:50
Зал: Большой зал
Уровень сложности доклада - Экспертам
Для просмотра комментариев необходимо авторизоваться
Внимание! У вас нет прав на просмотр топика