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

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

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

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

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 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 минут примерно вышло.

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

СМОТРЕТЬ >>


Оффлайн Rasty

  • *****
  • Сообщений: 963
  • РЕПУТАЦИЯ: 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
Просмотров: 3597
Последний ответ 10 Мар 2011, 07:36
от sv_stas_sv
Не работает кнопка "установить интервал дат"

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

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

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

Ответов: 1
Просмотров: 3139
Последний ответ 20 Июн 2011, 11:14
от Zvezo
Слышали, что программа "1С:Управление торговлей 8" рассчитана на управление,

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

Ответов: 1
Просмотров: 2468
Последний ответ 25 Июл 2008, 15:13
от Repz
Здравствуйте!!! Необходимо востановить ИБ на определенную дату. Копии через конфигуратор на эту дату не сделали, но есть файл в формате CD в rar (Это программа сама сделала резервную копию). Возможно ли востановит ее в 1с и работать (как при загрузке копи

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

Ответов: 1
Просмотров: 879
Последний ответ 24 Май 2016, 17:17
от Kironten

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

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

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


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

* Реклама

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

СМОТРЕТЬ >>

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
159 Сообщений
alex0402
61 Сообщений
MuI_I_Ika MuI_I_Ika
45 Сообщений
crow1983
35 Сообщений
LexaK
32 Сообщений
alexandr_ll
32 Сообщений
sertak sertak
27 Сообщений
Vzonder
22 Сообщений
BuhRust
19 Сообщений
дфтын дфтын
17 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal