Добрый вечер.
В Управлении Торговлей 10.3 есть документ Отчет о розничных продажах. В Модуле документа находится обработчик "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров()". При проведении документа, обработчик отрабатывается относительно долгое время (1 документ = 17 сек), (100 доков = 1700 сек и тд), при перепроведении документов возникает хаос...
можно ли как то оптимизировать данный процесс движения по партиям ? никто не сталкивался с такой проблемой ?
В Управлении Торговлей 10.3 есть документ Отчет о розничных продажах. В Модуле документа находится обработчик "УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров()". При проведении документа, обработчик отрабатывается относительно долгое время (1 документ = 17 сек), (100 доков = 1700 сек и тд), при перепроведении документов возникает хаос...
можно ли как то оптимизировать данный процесс движения по партиям ? никто не сталкивался с такой проблемой ?
По теме из базы знаний
- Пара советов по поиску работы
- 1С:Расширенная корпоративная лицензия (1С:РКЛ)
- Оптимизация и доработка отчетов СКД: от типовых вариантов к практическим решениям
- Sellmonitor - сервис аналитики и продвижения товаров на Wildberries, Ozon и других маркетплейсах: цена от 7 990 руб.
- YAxUnit: Новые возможности для эффективного тестирования в 1С
Найденные решения
Данная ситуация стандартная в запросе который формирует таблицу партий есть неоптимальные вещи, которые требуют допилки. Сталкивался с таким в УТ 10.3, УПП - запрос один и тот же. После доработки запроса будет летать. Все регламентные операции типо индексирований тут бессильны. Часто при большом количестве пользователей вылетают ошибки транзацкций
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)текст типовой, происходит движения по регистрам партии
вот текст:
вот текст:
// Процедура-вход для всех документов. Проводит переданный документ по учету партий товаров
//
// Параметры
// ОбрабатываемыйДокумент - проводимый документ
//
Процедура ДвижениеПартийТоваров(ОбрабатываемыйДокумент, ТаблицаСписания = Неопределено,
КоличествоСтрокВДокументе = 0, Упр = Истина,
Бух = Истина, Нал = Истина,
Останавливаться = Ложь, ПроведениеОстановлено = Ложь,
ДокументМоментВремени = Неопределено, СписаниеВыполняетсяОбработкой = Ложь,
СтруктураНаборовЗаписей = Неопределено) Экспорт
// Если не переданы строки документа, выбираем из базы.
Если ТаблицаСписания = Неопределено Тогда
// Таблица строк документов списания
ТаблицаСписания = ПолучитьТаблицуСтрокДокументов(ОбрабатываемыйДокумент, Упр, Бух, Нал);
КонецЕсли;
КоличествоСтрокВДокументе = ТаблицаСписания.Количество();
СтруктураПараметров = Новый Структура;
СтруктураДата = Новый Структура("Дата");
ПолучитьРеквизитыОбъекта(ОбрабатываемыйДокумент, СтруктураДата);
Если ДокументМоментВремени = Неопределено Тогда
ДокументМоментВремени = Новый МоментВремени(СтруктураДата.Дата, ОбрабатываемыйДокумент);
КонецЕсли;
СтруктураПараметров.Вставить("УчетнаяПолитика", ПолучитьУчетнуюПолитику(ДокументМоментВремени));
Если КоличествоСтрокВДокументе > 0 Тогда
СтруктураПараметров.Вставить("ТекстСообщений", "");
СтруктураПараметров.Вставить("Отказ", Ложь);
СтруктураПараметров.Вставить("ЕстьСтрокиОтражатьВУправленческомУчете", ТаблицаСписания.Найти(Истина, "ОтражатьВУправленческомУчете")<>Неопределено);
СтруктураПараметров.Вставить("ЕстьСтрокиОтражатьВБухгалтерскомУчете", ТаблицаСписания.Найти(Истина, "ОтражатьВБухгалтерскомУчете")<>Неопределено);
СтруктураПараметров.Вставить("ЕстьСтрокиОтражатьВНалоговомУчете", ТаблицаСписания.Найти(Истина, "ОтражатьВНалоговомУчете")<>Неопределено);
СтруктураПараметров.Вставить("ВестиПартионныйУчетПоСкладам", УчетнаяПолитика("ВестиПартионныйУчетПоСкладам","Упр",,СтруктураПараметров));
Если НЕ СтруктураПараметров.ЕстьСтрокиОтражатьВУправленческомУчете Тогда
Возврат;
КонецЕсли;
Если СтруктураНаборовЗаписей = Неопределено Тогда
// Движения - наборы записей по регистрам
СоздатьНаборыЗаписей(СтруктураПараметров);
Иначе
Для каждого Элемент Из СтруктураНаборовЗаписей Цикл
СтруктураПараметров.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЦикла;
КонецЕсли;
ПодготовитьТаблицуСписания(СтруктураПараметров, ТаблицаСписания, Упр, Бух, Нал);
Сообщить(ТаблицаСписания.Количество());
Строка0 = ТаблицаСписания[0];
Если НЕ ЗначениеЗаполнено(Строка0.Регистратор) Тогда
ТаблицаСписания.ЗаполнитьЗначения(ОбрабатываемыйДокумент, "Регистратор");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Строка0.Период) Тогда
ТаблицаСписания.ЗаполнитьЗначения(СтруктураДата.Дата, "Период");
КонецЕсли;
ВыполнитьСписание(СтруктураПараметров, ТаблицаСписания, ДокументМоментВремени, Останавливаться, ПроведениеОстановлено);
КонецЕсли;
// Сдвиг границы последовательности осуществляется только при онлайновом списании партий
// либо из обработки проведение по партиям.
ЗакрытиеЗаказовПокупателей = ТипЗнч(ОбрабатываемыйДокумент) = Тип("ДокументСсылка.ЗакрытиеЗаказовПокупателей");
Если СписаниеВыполняетсяОбработкой Или СтруктураПараметров.УчетнаяПолитика[0].СписыватьПартииПриПроведенииДокументовУпр Тогда
Если Упр Тогда
СдвигатьГраницу = ОпределитьНеобходимостьСдвигаГраницы(ДокументМоментВремени,"Упр");
Если СдвигатьГраницу Тогда
Последовательности.ПартионныйУчет.УстановитьГраницу(ДокументМоментВремени);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ДвижениеПартийТоваров()
Показать
1. Вариант самый простой, делать списание партий не при проведении документов, а регламентно по ночам (галочка в настройках)
2. Вариант второй, включать замер, искать длительные запросы, оптимизировать их. Возможно, итоги не рассчитаны, либо статистика тухлая, тут уже надо план запроса смотреть
2. Вариант второй, включать замер, искать длительные запросы, оптимизировать их. Возможно, итоги не рассчитаны, либо статистика тухлая, тут уже надо план запроса смотреть
(8)
Это получается, при регламентных операциях, если пользователь внесет поправки задним числом - при проведении это не учтётся ?)
Вариант самый простой, делать списание партий не при проведении документов, а регламентно по ночам (галочка в настройках)
Это получается, при регламентных операциях, если пользователь внесет поправки задним числом - при проведении это не учтётся ?)
(10) Должна быть настройка Списывать партии при проведении документов и обработка Проведение по партиям.
Если галку снимаем, по регистру ПартииТоваровНаСкладах движения не делаются, их надо будет делать этой обработкой, сама она запускаться не будет, но можно написать регламентное, которое будет ее вызывать
По поводу задним числом, будут проводиться документы по всей последовательности, т.е залезли в прошлый месяц, то документы с прошлого месяца
Если галку снимаем, по регистру ПартииТоваровНаСкладах движения не делаются, их надо будет делать этой обработкой, сама она запускаться не будет, но можно написать регламентное, которое будет ее вызывать
По поводу задним числом, будут проводиться документы по всей последовательности, т.е залезли в прошлый месяц, то документы с прошлого месяца
1. Сделать реструктуризацию.
2. Пересчитать итоги.
Если скульная база, то произвести реструктуризацию ИБ через ТиИ, запустить на SQL регламенты, рекомендованные 1С (index rebuild, statistic update). Сделать ежедневный регламент обновления статистики и reindex, раз в неделю - index rebuild.
Если база файловая, то сделать все через ТиИ - там есть пересчет итогов.
2. Пересчитать итоги.
Если скульная база, то произвести реструктуризацию ИБ через ТиИ, запустить на SQL регламенты, рекомендованные 1С (index rebuild, statistic update). Сделать ежедневный регламент обновления статистики и reindex, раз в неделю - index rebuild.
Если база файловая, то сделать все через ТиИ - там есть пересчет итогов.
Еще бывают тормоза при использовании обмена данными. При пересчете возможно именно на участке регистрации в обмене данными жуткие тормоза.
Данная ситуация стандартная в запросе который формирует таблицу партий есть неоптимальные вещи, которые требуют допилки. Сталкивался с таким в УТ 10.3, УПП - запрос один и тот же. После доработки запроса будет летать. Все регламентные операции типо индексирований тут бессильны. Часто при большом количестве пользователей вылетают ошибки транзацкций
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
