Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 19:48
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обработка с черепашьей скоростью....  (Прочитано 13594 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nail2010

  • ****
  • Сообщений: 325
  • РЕПУТАЦИЯ: 18
  • КПД: 6%
  • Регистрация: 2010-10-27
  • Сайт: 
В чем может быть причина медленного выполнения обработки? Всего-то 1015 документов заполняется и дозаписывается уже 2,5 часа.....делаю скидку на то, что работаю на сервере  с подключенными 6 рабочими машинами, но все равно.....В чем может быть причина?

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


Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Посмотрите, что выполняется в документе ДокументРасчетовСКонтрагентом ПередЗаписью/ПриЗаписи/ПослеЗаписи/ОБработкаПроведения. Возможно, там есть тяжеловесный код, который и тормозит работу.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн Nail2010

  • ****
  • Сообщений: 325
  • РЕПУТАЦИЯ: 18
  • КПД: 6%
  • Регистрация: 2010-10-27
  • Сайт: 
Процедура ПослеЗаписи()

// Установка кнопок печати
УстановитьКнопкиПечати();
МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);

КонецПроцедуры // ПослеЗаписи()
Да код то всего ничего.....хотя обработка до сих пор пашет... нехочется обрывать контрл-альт-дел, потому что так все зааписи стираются в ноль...

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Отладьте с замером производительности. УзнАете где больше всего времени тратится...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Ну раз уж она уже работает, то код править бесполезно, наверное.
А вообще, в таких случаях, посоветовала бы Вам состояние писать. Хоть было бы понятно, на каком она месте сейчас.

И плюс несколько небольших замечаний:
1. Зачем запросом брать табличные части документов ВводНачальныхОстатков, если из запроса Вы все-равно берете только ссылку на сам документ, организацию и дату (это все данные из документа, а не из табличной части). Так запрос выполняется дольше.
2. Если уж Вам нужно обрабатывать табличную часть, то нужно ее было запросом сразу и получить, и не получать потом ее для каждого документа.
3. В цикле каждый раз получаете одно и то же значение:
Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор");
Хотя можно было его получить один раз перед циклом и запомнить в переменную.
4. Можно использовать метод "ОбработкаПрерыванияПользователя", чтобы по Ctrl-break корректно прерывать затянувшуюся процедуру.

Помимо процедур ПередЗаписью/ПриЗаписи/ПослеЗаписи/ОбработкаПроведения могут еще отрабатывать Подписки на события.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Кстати, перечисленные мной процедуры записи/проведения нужно у обоих документов проверять - и у ВводНачальныхОстатков, и у ДокументРасчетовСКонтрагентом.

Почему записи при прерывании стираются в ноль? По идее, должно что-то оставаться.

А, и еще момент. Вот на основании строк табличной части, Вы создаете документы ДокументРасчетовСКонтрагентом. А если второй раз запустим обработку? Данные задвоятся. Будете руками чистить?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн Nail2010

  • ****
  • Сообщений: 325
  • РЕПУТАЦИЯ: 18
  • КПД: 6%
  • Регистрация: 2010-10-27
  • Сайт: 
Обработка Внешняя. Видимо, правда - запрос зацикливается может быть немного, что-ли... насчет лишних документов - так как процедура обработки в принципе, разовая - ввод остатков делается ведь раз в год - то есть кнопочка УДАЛИТЬ, обработчик которой и стирает лишние документы. А как по вашему, можно мой код оптимизировать без запроса?

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Что значит оптимизировать без запроса?)) Не оптимизировать запрос, или вообще его убрать?
Можно и без запроса, но так будет дольше перебирать документы. Лучше запрос допилить. Направление как допилить - я уже описала :)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Оффлайн Nail2010

  • ****
  • Сообщений: 325
  • РЕПУТАЦИЯ: 18
  • КПД: 6%
  • Регистрация: 2010-10-27
  • Сайт: 
А вот и мой рекорд - время выполнения обработки - 5 часов 15 минут..... Процедура ОбалдетьИПадСтол()....

Оффлайн Nail2010

  • ****
  • Сообщений: 325
  • РЕПУТАЦИЯ: 18
  • КПД: 6%
  • Регистрация: 2010-10-27
  • Сайт: 
Может к концу дня у меня мозг уже кипит, но.... где я так зациклил запись, что документ Расчета с Контрагентом у меня создался 1002001 раз???


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
141 Сообщений
AIFrame
71 Сообщений
ilyay ilyay
65 Сообщений
alex0402
52 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
BuhRust
31 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 339
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal