Спасибо, kiruha, за советы по оптимизации, посмотрев внимательно и разобравшись с таблицами смог сильно оптимизировать регистры.
Насчет сабжа, предпринял следующее...
По размеру базы, она у нас маленькая, совсем. 4 магазина розничной торговли, один год работы - 100тыс документов. Миграция для удобства настроена на все базы...
Свернув документы по нужным реквизитам, без потери данных, удалось сократить количество документов до 24тыс.
Далее, занялся оптимизацией проведения. Проблема с необходимостью перепроведения в том, что по одной группе товара номенклатура загружается из двух больших прайсов разных поставщиков, и при этом многие позиции дублируются, но с небольшими расхождениями в наименованиях, из за чего создаются дубли. Так как данная номенклатура - DVD-диски, то для правильного ассортимента дубли в обороте недопустимы... А бывает так что каждый дубль уже побывал в обороте, соответственно - замена значения + нарушение последовательности при этом.
Без оптимизации, стандартными средствами 1с, перепроведение 24тыс доков занимало минут 30-40. Но основная проблема не в этом, а в том что итоговая выгрузка содержала около 4 мегабайт и загружалась на компьютерах на местах до часа, плюс получение большого файла по небыстрому интернету.
В каждом модуле проведения вместо "ДвижениеПриходВыполнить" и записи в регистр поменял на "НоваяСтрока()" в глобальной таблице для данного регистра. После формирования всех таблиц отправлял их в функцию для проверки - изменились ли движения документа. Если не изменились, то ничего не делаем, в противном случае в цикле для каждой таблице записываем движения документа.
А в обработке проведения РегистрацияИзменений(0) перед проведением, и если движения изменились, то потом делаем Записать(), чтобы документ попал в выгрузку.
Таким образом, полное перепроведение начало занимать ровно 5 минут с затратами на 1 документ 0,01 секунды. В выгрузки попадают только изменившиеся документы, а их очень немного при замене дублей.
Жаль, что подобную схему 1с не реализовала на уровне движка...
|