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

СМОТРЕТЬ >>

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

Автор Тема: Почему моя программа работает о-о-очень долго???  (Прочитано 589 раз)

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

Оффлайн Рексарыч

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-19
  • Сайт: 
Всем добрый день, господа.

Не считаю себя виртузом в программировании, скорее - очень средний середнячок, но вроде теорию программирования понимаю.

Сам вопрос задан в названии темы: "Почему моя программа работает о-о-очень долго???", - может кто подскажет, если есть время и желание, друзья :).

Платформа: 1С: Предприятие 8.3 (8.3.7.2027).
Конфигурация: 1С: ERP УП 2.0 (2.0.10.199).
Толстый клиент.
Тестирую программу через клиентскую часть.

Задача: отобрать по нужным критериям маршрутные листы, удалить объекты из "Трудозатрат" и провести документ (на всякий случай).

Проверив через консоль запросов запрос, выявил, что нужных записей более 1600-а, что немного (по моим прикидкам).

Но запустив обработку, уже сижу более ~30-и минут, а она всё крутится.

Сам код:


&НаСервере
Процедура УстановитьКоличествоНаСервере()

//лёгкая защита от невнимательности ;)
//проверка на заполненность данных
        Если Не ЗначениеЗаполнено(Подразделение) или Не ЗначениеЗаполнено(ДатаНачалаПериода) или Не ЗначениеЗаполнено(ДатаКонцаПериода) Тогда
    Сообщить("Значение не заполнено. Обработка невозможна.");
    Возврат;
КонецЕсли;

        //извлекаю из базы нужные МЛ
ТрудозатратыВМЛНаУдаление = новый запрос("
|Выбрать различные //первые 10
| Трудозатраты.Ссылка,
| ВидыРабот.Распоряжение.Ссылка,
| Трудозатраты.Ссылка.Подразделение.Ссылка,
| Трудозатраты.Ссылка.Начало,
| Трудозатраты.Ссылка.Статус,
| Трудозатраты.Ссылка.Статус.Порядок
|Из
| Документ.МаршрутныйЛистПроизводства.Трудозатраты как Трудозатраты
| левое соединение Документ.ВыработкаСотрудников.ВидыРабот КАК ВидыРабот
|По
| Трудозатраты.Ссылка.Ссылка=Распоряжение.Ссылка
|Где
| Трудозатраты.Ссылка.Подразделение.Ссылка = &Подразделение //Берутся МЛ по заданному подразделению
| и Трудозатраты.ВидРабот.Ссылка есть не NULL //Отбираются те МЛ, в которых в трудозатратах что-то есть
| и &ДатаНачалаПериода <= Трудозатраты.Ссылка.Начало <= &ДатаКонцаПериода //МЛ берутся за нужный интервал
| и Трудозатраты.Ссылка.Статус.Порядок = 3 //Статус = Выполнен
| и ВидыРабот.Распоряжение.Ссылка есть NULL //Выработка сотрудников нам ненужна
| и Трудозатраты.Ссылка.ПометкаУдаления = &ПроверкаНаУдаление");

        //передаю параметры из формы, которые вводит пользователь
ТрудозатратыВМЛНаУдаление.УстановитьПараметр("Подразделение", Подразделение);
ТрудозатратыВМЛНаУдаление.УстановитьПараметр("ДатаНачалаПериода", ДатаНачалаПериода);
ТрудозатратыВМЛНаУдаление.УстановитьПараметр("ДатаКонцаПериода", ДатаКонцаПериода);
ТрудозатратыВМЛНаУдаление.УстановитьПараметр("ПроверкаНаУдаление", ПроверкаНаУдаление);

ТрудозатратыВМЛНаУдаление = ТрудозатратыВМЛНаУдаление.Выполнить().Выбрать();

//осуществляю пробежку по всем отобранным объектам
Пока ТрудозатратыВМЛНаУдаление.Следующий() Цикл

//сообщить(2);
ТрудозатратыОбъект = ТрудозатратыВМЛНаУдаление.Ссылка.Ссылка.ПолучитьОбъект();

//сообщить(3.5);
ТрудозатратыСсылка = ТрудозатратыОбъект.Трудозатраты;

//очищаю табличную часть от всех данных
ТрудозатратыСсылка.Очистить();

//провожу документ
ТрудозатратыОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура УстановитьКоличество(Команда)
   
    сообщить("Обработка начата.");
    УстановитьКоличествоНаСервере();
    сообщить("Обработка завершена.");

КонецПроцедуры

Старался сделать так, чтобы программа была линейна, а значит время должно быть приемлемым, но выходит, что можно выспаться, пока программа отработает.

P.S.

Пока дописывал сообщение - она завершила наконец обработывать данные. Итого: 40-45 минут примерно вышло.


Оффлайн Rasty

  • *****
  • Сообщений: 976
  • РЕПУТАЦИЯ: 137
  • КПД: 14%
  • Регистрация: 2015-03-25
    • Skype: alex1cbit
  • Сайт: 
  • Профессия: Программист 1С
вопрос не в этом, а в том что вы перепроводите все 1600 документов, естесвено это не быстро, удалить проводки, сформировать проводки и так 1600 раз
Добавлено: 20 Май 2016, 15:54

ну и проведение одного документ 1-3 секунды умножаем и получаем 27 - 80 минут
Добавлено: 20 Май 2016, 15:56

и кстати чтобы избежать Ссылка.Ссылка можно в запросе писать
|  Трудозатраты.Ссылка.Подразделение.Ссылка КАК Подразделение
и обращение будет .Подразделение
Добавлено: 20 Май 2016, 15:57

Да и писать
|  Трудозатраты.Ссылка.Подразделение.Ссылка не имеет смысла
|  Трудозатраты.Ссылка.Подразделение  так короче и Подразделение уже несет в себе ссылку на нужный вам объект
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)


Теги:
 

Не работает структура подчиненности документов "Требование-накладная" и "Передач

Автор sv_stas_svРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 3896
Последний ответ 10 Мар 2011, 07:36
от sv_stas_sv
Не работает кнопка "установить интервал дат"

Автор depp_juniorРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 3257
Последний ответ 11 Июл 2014, 18:07
от LexaK
не работает отчет "Выработка сотрудника" в ЗУП2.5.35.3

Автор a_a2001Раздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 3469
Последний ответ 20 Июн 2011, 11:14
от Zvezo
Как работает "НайтиПоРеквизиту" при большом количестве элементов с подходящим реквизитом?

Автор Дмитрий КасаткинРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 143
Последний ответ 04 Май 2017, 10:21
от ilyay
Слышали, что программа "1С:Управление торговлей 8" рассчитана на управление,

Автор КОТТРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2704
Последний ответ 25 Июл 2008, 15:13
от Repz

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

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

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


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

* Реклама

* Поиск

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

* Реклама

* Последние вакансии

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

alex0402
94 Сообщений
oleg-x
71 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
66 Сообщений
Golickoff Golickoff
51 Сообщений
AIFrame
46 Сообщений
ilyay ilyay
42 Сообщений
Амал
30 Сообщений
Dethmontt Dethmontt
22 Сообщений
BuhRust
22 Сообщений
lansy
22 Сообщений

* Кто онлайн

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal