![]() |
|
Проведение группы документов | ☑ | ||
---|---|---|---|---|
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
|
Не разу такого не делал. Можете пример привести подобной транзакции, в плане кода.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |