Ускорение отчета 'Контроль передвижений агентов (онлайн-карты)' от AgentPlus v1.5.2

03.05.18

База данных - HighLoad оптимизация

У пользователей системы AgentPlus (Агент Плюс) отчет 'Контроль передвижений агентов (онлайн-карты)' v1.5.2 вызывает восторг и разочарование одновременно. Восторг – потому, что позволяет увидеть маршрут передвижения пользователя системы с привязкой к карте и дорогам, разочарование – от длительности построения отчета. Отчет по 45 точкам маршрута у меня строится больше минуты. Тестировалось на "Управление торговым Предприятием" 1.2.45.2.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Ускорение отчета 'Контроль передвижений агентов (онлайн-карты)' от AgentPlus.:
.epf 187,29Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

Анализ кода показал, что причиной задержек при построении отчёта является запрос в цикле.

За построение отчета отвечает обработка «кпкКонтрольПередвиженийАгентовОнлайн».

Непосредственно построение отчета начинается с вызова «ДеревоТрековВыбор».

Стек выглядит следующим образом:

ПолучитьДатуДокументаМУ

                ПолучитьДатуДокумента

                СформироватьМаркерыДокумента

…            

                ДеревоТрековВыбор

 

В процедуре «СформироватьМаркерыДокументов» есть цикл по элементам таблицы документов. В цикле вызывается функция ПолучитьОписаниеДокумента, а из нее функция ПолучитьДатуДокументаМУ.

 

Ниже текст функции ПолучитьДатуДокументаМУ

 


Функция ПолучитьДатуДокументаМУ(ТекДок)
                ДатыДокумента = Неопределено;
                
                //получим из регистра дату и время создания документа
                Запрос = Новый Запрос;
                Запрос.Текст = "ВЫБРАТЬ
                               |             кпкСведенияДокумента.ДатаВремяСоздания,
                               |             кпкСведенияДокумента.Период
                               |ИЗ
                               |             РегистрСведений.кпкСведенияДокумента.СрезПоследних КАК кпкСведенияДокумента
                               |ГДЕ
                               |             кпкСведенияДокумента.КПКДокумент = &ТекДокумент";
                Запрос.УстановитьПараметр("ТекДокумент", ТекДок);
                
                Результат = Запрос.Выполнить();
                
                Если Не Результат.Пустой() Тогда
                                Выборка = Результат.Выбрать();
                                Выборка.Следующий();
                                ДатаВМУ = СокрЛП(Выборка.ДатаВремяСоздания);
                                ДатаЗагрузки = СокрЛП(Выборка.Период);
                                ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки);
                КонецЕсли;
                
                Возврат ДатыДокумента;
КонецФункции

Функция возвращает структуру ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки).

 

Есть два способа решения проблемы.

Первый. Годится для не слишком щепетильных, т.к. принимаем допущение, что

ДатаВМУ = ТекДок.Дата и

ДатаЗагрузки = ТекДок.Дата

 

Тогда функция ПолучитьДатуДокументаМУ примет вид
 

Функция ПолучитьДатуДокументаМУ(ТекДок)
                ДатыДокумента = Неопределено;
                ДатаВМУ = ТекДок.Дата; 
                ДатаЗагрузки = ТекДок.Дата;

                ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки);
                
                Возврат ДатыДокумента;
КонецФункции

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

 

Способ Второй.

При втором способе функция ПолучитьДатуДокументаМУ примет вид
 

Функция ПолучитьДатуДокументаМУ2(ТекДок)
                ДатыДокумента = Неопределено;
                
                Выборка = ТабДокументы.Найти(ТекДок,"Документ");
                Если Выборка = Неопределено Тогда
                                Возврат ДатыДокумента;
                КонецЕсли;        
                ДатаВМУ = СокрЛП(Выборка.ДатаСозданияВМУ);
                ДатаЗагрузки = СокрЛП(Выборка.Период);
                ДатыДокумента = Новый Структура("ДатаВМУ, ДатаЗагрузки", ДатаВМУ, ДатаЗагрузки);
                Возврат ДатыДокумента;
КонецФункции

Использовать функцию ПолучитьДатуДокументаМУ без изменения таблицы значений ТабДокументы нельзя.

Обработка со всеми внесенными изменениями в прикрепленном к статье файле. Изменения помечены маркером //Олег.

Агент Плюс Agent Plus Маршрут Карта

См. также

Зарплата Производство готовой продукции (работ, услуг) Учет рабочего времени Рабочее место Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Торговля и склад 7.7 Бытовые услуги, сервис Оптовая торговля, дистрибуция, логистика Электротехника и микроэлектроника Управленческий учет Платные (руб)

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

14800 руб.

01.11.2012    94137    115    1    

117

SALE! 10%

Рабочее место Розничная торговля Обмен с ГосИС Бухгалтер Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Акцизы Платные (руб)

Помощник ЕГАИС для 1С Розница 2.2/2.3 - обновление сопоставлений алкогольных классификаторов, инвентаризация по марке, проверка накладных по check1.fsrar.ru, поиск продукции по акцизке, запрос новых акцизных марок и многое другое!

12000 10800 руб.

05.01.2016    146866    508    700    

227

Производство готовой продукции (работ, услуг) Рабочее место Пользователь Оперативный учет 8.3.14 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Расширение, добавляющее в Вашу УТ 11, КА 2.5 или ERP 2.5 автомобили, марки, модели, нормо-часы. Есть запись на ремонт, документ заказ наряд, вывод ведомости по заказ нарядам, вывод выработки мастеров.

7200 руб.

29.07.2021    17092    28    17    

34

SALE! 15%

Оптовая торговля Рабочее место Создание на основании Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Полнофункциональное расширение для формирования и ведения учета перевозочных документов всех видов (ТН, ТТН, ЭТрН). Печать документов или отправка через ЭПД (Электронный перевозочный документооборот). Поддержка регистрации нескольких перевозок на одну финансовую реализацию (в виде УПД, например), а также одной перевозки на основании нескольких финансовых реализаций. Формирование всех сопроводительных документов из одной отгрузки. Формирование реестра грузосопроводительных документов, доверенности менеджеров для указания ответственных лиц (руководитель, главный бухгалтер, кладовщик) организации для пользователей ИБ. Гибкая настройка функциональности под потребности организации.

2298 1953 руб.

18.04.2017    48612    229    43    

89

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

Подсистема УРС - это инструмент для гибкой настройки интерфейсов пользователей типовых и измененных конфигураций. Создаем рабочие места для любой должности, выводим отчеты и диаграммы, компонуем данные в планировщиках, создаем сценарии действий - без программирования. Встраивается в любую конфигурацию от "Управления торговлей 10.3" (БП, КАА и т.д.) до "Управления производственным предприятием (ERP) 2.0" (УНФ, УТ11 и т.д.) на платформе 8.3

6900 руб.

13.07.2015    31083    4    27    

37
Оставьте свое сообщение