В крупной российской нефтесервисной компании в связи с большим количеством обрабатываемых договоров (сотни тысяч) и обрабатываемых транзакций процессинга (десятки миллионов) возникла необходимость в оптимизации процессов работы. | ||
Процесс содержит несколько шагов: начиная с создания документов "Реализация товаров и услуг" (РТУ) и "Счет-фактура" (СФ, реализационных), заполнения в транзакции ссылки на РТУ, и заканчивая созданием печатных форм с публикацией их в личном кабинете на сайте. | ||
Схема работы процесса ДО ОПТИМИЗАЦИИ включала большое количество выполняемых последовательно блоков, состоящих из создания документов, заполнения в транзакции ссылок на РТУ, создания печатных форм, размещения на сайте в личном кабинете. | ||
Проект по оптимизации внедрялся на платформе "1С:Предприятие 8.2.17". По регламенту на весь процесс должно быть использовано не более 24 часов. | ||
Для оптимизации применили следующие методы |
||
1. Все выборки выполняются один раз перед началом работы процедуры. Далее идет обработка выбранных данных.
2. Обновление транзакции ссылкой на РТУ выполняется путем постинга в пустую таблицу, состоящую из двух полей – ссылка на РТУ и ID транзакции. Перенос ссылок в саму таблицу с транзакциями выполняется после процесса закрытия. Для приема доступа к данным используются компонента ADO, а не стандартные средства 1С. И к следующему закрытию таблица снова пуста.
3. Обработка всего объема в один процесс для используемой версии сервера приложений в принципе невозможна, так как слишком велик для него объем выборок и слишком долго эти выборки собираются. После того, как выборка не завершилась в течение 15 часов, было принято решение распараллелить процесс. Для этого использовали методику разделения пространства с данными, чтобы инициируемые процессы имели множество не пересекающихся друг с другом данных. Ключом для разделения был выбран справочник “Договоры контрагентов”. Перед началом процедуры формируется план, в котором каждый договор закрепляется за конкретным потоком. Количество процессов настраивается. Эмпирически получили правило – не более 5000 договоров на процесс. По времени – из более суток на первый шаг, стало уходить 3-4 часа. |
||
4. Выполнили две оптимизации из рекомендаций 1С в отношении запроса в модуле проведения РТУ, получающего остатки по взаиморасчетам, что позволило значительно сократить время на проведение документов. Например, на проведение 200 тыс. документов теперь требуется 1,5 – 2 часа вместо прежних 5 – 6 часов.
|
||
ПОСЛЕ ОПТИМИЗАЦИИ процесс можно представить следующим образом (около 45 параллельно работающих процессов): |
Таким образом, была осуществлена оптимизация набора процедур, выполняющих процесс обработки результата работы процессинга за определенный период, подготовки и публикации пакетов документов по закрытию периода. По регламенту на весь процесс должно быть использовано не более 24 часов. Каждому документу (РТУ и СФ) в формате pdf создается файл, и публикуется в личном кабинете на сайте. Выполненные работы позволяют значительно сократить время на проведение операций, уменьшить фактор ошибок и сбоев в работе персонала. | ||
В дальнейшем запланирована оптимизация создания публикации учетной формы, как наиболее существенного шага, поскольку он связан с записью файлов на диск. Запись файла на сетевой ресурс из личного кабинета надо вынести в фоновый пост-процесс, чтобы оптимизировать время доступа клиентов к документам за предыдущие несколько отчетных периодов. Планируется оставить только запись mxl документов в базу 1С. Это сократит время работы шага процесса на 5 – 6 часов. | ||
Если есть вопросы по оптимизации процесса работы с большими объемами данных - обращайтесь! |
||
Марьяна Луцишин, разработчик 1С ООО “Кодерлайн” |