| 
    
            
         
         | 
    
  | 
Проведение группы документов | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        sqr4    
     06.08.14 
            ✎
    14:55 
 | 
         
        &НаСервере
 
        Процедура ПодготовитьНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СписокЗаказов.Заказ |ПОМЕСТИТЬ ЗаказыСписок |ИЗ | &СписокЗаказов КАК СписокЗаказов |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДополнительныеСведения.Свойство КАК Свойство, | ДополнительныеСведения.Значение, | ДополнительныеСведения.Объект |ПОМЕСТИТЬ СписокСвойств |ИЗ | РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения |ГДЕ | ДополнительныеСведения.Свойство = &Свойство |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗаказыСписок.Заказ, | СписокСвойств.Значение, | ЕСТЬNULL(СписокСвойств.Свойство, &Свойство) КАК Свойство |ИЗ | ЗаказыСписок КАК ЗаказыСписок | ЛЕВОЕ СОЕДИНЕНИЕ СписокСвойств КАК СписокСвойств | ПО ЗаказыСписок.Заказ = СписокСвойств.Объект"; Запрос.УстановитьПараметр("СписокЗаказов",ДанныеФормыВЗначение(ЗаказыСписок, Тип("ТаблицаЗначений"))); Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Время отгрузки")); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Проводить = Ложь; ОбъектЗаказ = Результат.Заказ.ПолучитьОбъект(); Если ЗаполнитьДатуОтгрузки Тогда Если ЗначениеЗаполнено(Результат.Значение) Тогда ДатаСтрокой = СокрЛП(Результат.Значение); Попытка ДатаОтгрузки = Дата(Лев(ДатаСтрокой,4)+Сред(ДатаСтрокой,6,2)+Сред(ДатаСтрокой,9,2)+Сред(ДатаСтрокой,12,2)+Сред(ДатаСтрокой,15,2)+Сред(ДатаСтрокой,18,2)); ЗаполнитьДатуОтгрузки(ОбъектЗаказ, ДатаОтгрузки); Проводить = Истина; Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не верный формат даты заказа в документе "+Результат.Заказ; Сообщение.Сообщить(); КонецПопытки; Иначе СписокСПустойДатой.Добавить(Результат.Заказ); Продолжить; КонецЕсли; КонецЕсли; Если Исправить Тогда ПриИзмененииСкладаСервер(ОбъектЗаказ); Проводить = Истина; КонецЕсли; Если ЗначениеЗаполнено(УстановитьСтатус) Тогда ОбъектЗаказ.Статус = УстановитьСтатус; ПриИзмененииСтатуса(ОбъектЗаказ); Проводить = Истина; КонецЕсли; Если Проводить Тогда Попытка ОбъектЗаказ.Записать(РежимЗаписиДокумента.Проведение); Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Не удалось провести заказ "+Результат.Заказ+"."; Сообщение.Сообщить(); КонецПопытки; КонецЕсли; КонецЦикла; КонецПроцедуры сама процедура. Чем больше заказов тем сильнее тормозит, причем по началу работает быстро, а чем дальше тем медленнее. Как оптимизировать.  | 
|||
| 
    1
    
        Ёпрст    
     гуру 
    06.08.14 
            ✎
    15:03 
 | 
         
        Зачем ЭТО проводить ?
 
        У вас чего, датаОтгрузки влияет на движения регистров шо ле ?  | 
|||
| 
    2
    
        sqr4    
     06.08.14 
            ✎
    15:05 
 | 
         
        Там и склад прописывается. Т.е проводить вроде как бы надо полюбому     
         | 
|||
| 
    3
    
        Ёпрст    
     гуру 
    06.08.14 
            ✎
    15:06 
 | 
         
        в каком месте склад переопределяется и зачем ?     
         | 
|||
| 
    4
    
        Ёпрст    
     гуру 
    06.08.14 
            ✎
    15:06 
 | 
         
        вижу только ЗаполнитьДатуОтгрузки(ОбъектЗаказ, ДатаОтгрузки);     
         | 
|||
| 
    5
    
        sqr4    
     06.08.14 
            ✎
    15:07 
 | 
         
        Причем проведение первых документов занимает минимум времени. К примеру первые 10 проводятся за секунду, вторые 10 уже за 10 сек, третьи 10 уже за минуту и т.д     
         | 
|||
| 
    6
    
        sqr4    
     06.08.14 
            ✎
    15:09 
 | 
         
        (3) ПриИзмененииСкладаСервер(ОбъектЗаказ);
 
        Документы создаются другой обработкой, загрузкой с сайта, типовой. Причем склад заполняется косячно, при проведении не заполняется по регистру заказов эта аналитика не встает. Данный момент это дело поправляет  | 
|||
| 
    7
    
        sqr4    
     06.08.14 
            ✎
    15:12 
 | 
         
        т.е много быстрее запустить обработку шесть раз по месяцу, чем один раз за пол года. С чем это может быть связано     
         | 
|||
| 
    8
    
        sqr4    
     06.08.14 
            ✎
    15:14 
 | 
         
        Причем быстрее в разы     
         | 
|||
| 
    9
    
        hhhh    
     06.08.14 
            ✎
    15:23 
 | 
         
        попробуйте в транзакции проводить. по сто документов в одной транзакции     
         | 
|||
| 
    10
    
        sqr4    
     06.08.14 
            ✎
    15:36 
 | 
         
        Не разу такого не делал. Можете пример привести подобной транзакции, в плане кода.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |