• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Оптимизация перепроведения 7.7

  • Автор темы Hryv
  • Дата начала
H

Hryv

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

Теперь по сути

Есть документ
Если создать новый и провести, то проводится относительно быстро
Но если перепровести вчерашний или более старый, то тормозит прилично

Выяснил, что все тормоза находятся в коде

Код:
		Если ИтогиАктуальны()=0 Тогда	
ВремРегистры.Актуальность(1);
ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;

В принципе, тут все понятно, раз итоги не актуальны, то их надо пересчитать - это и тормозит

Но 2-3 раза в месяц случается необходимость перепровести все эти документы
За 10 часов (то есть за ночь) успевает перепровестись примерно 15 дней, а хотелось бы все 30

Можно ли произвести какие-ибудь манипуляции с ТА, чтобы в момент проведения итоги были актуальны?
И за счет этого ускорить перепроведение
 
V

vitfil

Можно ли произвести какие-ибудь манипуляции с ТА, чтобы в момент проведения итоги были актуальны?
Да. Есть 2 варианта:
1. Смещение ТА на первый перепроводимый документ. Так работает функция по восстановлению последовательности в стандартной ТиС.
2. При проведении работать с актуальными итогами. ВСЕГДА с актуальными итогами. В этом случае есть много нюансов, потребуется доработка программы...
Если быстро, используйте первый вариант. Если грамотно, проанализируйте, для чего используется временный расчет, уберите эти ограничения и работайте по второму варианту.
 
H

Hryv

1. Смещение ТА на первый перепроводимый документ. Так работает функция по восстановлению последовательности в стандартной ТиС

То есть надо для первого документа сделать
УстановитьТАна(Док.ТекущийДокумент());

и потом для каждого
Док.Провести(2);

правильно?
 
V

vbs

За 10 часов (то есть за ночь) успевает перепровестись примерно 15 дней, а хотелось бы все 30
ЭТО Ж СКОЛЬКО ДОКУМЕНТОВ ЗА ДЕНЬ В БАЗЕ ? Я такую скорость не наблюдал даже при наличии до 1500 (больше пока не встречал), перепроведение занимает не более 15 мин. за день, если железо хорошее.
Правда, по-моему, время проведения существенно зависит от количества строк в документах...
 
H

Hryv

ЭТО Ж СКОЛЬКО ДОКУМЕНТОВ ЗА ДЕНЬ В БАЗЕ ? Я такую скорость не наблюдал даже при наличии до 1500 (больше пока не встречал), перепроведение занимает не более 15 мин. за день, если железо хорошее.
Правда, по-моему, время проведения существенно зависит от количества строк в документах...

Данные о времени проведения со слов того, кто это сейчас делает

До сих пор использовалась обработка, которая работает по первому варианту от vitfil (если заходить монопольно)
Я ее чуток подправил (не по сути, а только для удобства в использовании) и потестил
Получил результат 1 день - 7 минут, правда это на копии базы и на другом железе
По моим прикидкам "на глазок" оригинал должен еще быстрее работать
Что-то не стыкуется :(

Ночью запущу сам на основной базе
Чтобы за 10 часов успеть 30 дней надо проводить 1 день за 20 минут
Это в 3 раза медленнее, чем мой тест показал
Есть шанс, что все пройдет успешно

Если нет, тогда уже буду анализировать логи, смотреть что больше всего тормозит
Может проблема и не там, где я начал искать
 
H

Hryv

В итоге нашел в чем беда
При использовании обработки время на пересчет итогов не тратится
Проблема совсем в другом
В базе (наверное из-за многочисленных переделок) некорректно идет работа с одним из регистров
Приход по нему делается, а расход - нет
Но при приходе пытается что-то там зачесть
Выгружает остатки в ТЗ, порядка 1000-1500 строк, сортирует ее и перебирает, но в цикле на первом же условии всегда попадает на Продолжить

Пока убрал этот бесполезный зачет
В принципе по плану со второго полугодия новую базу ставить, так что в этой базе, наверное, так "криво" и останется
 
V

vitfil

Хочу взглянуть в глаза тому, что сделал незакрывающийся регистр. Мало того, что 1С сама в таблицу итогов лишние записи кидает (нулевые остатки), так еще и вредитель нашелся!
 
H

Hryv

Скорее всего изначально он закрывался
Эта база на основе стандартной ТиС
Но потом кто-то что-то сделал и закрываться перестало
На мой вопрос: "А как же вы этим регистром пользуетесь?"
Был ответ: "А мы им не пользуемся"

Может они просто не вносят документы, которые его должны закрывать
Честно говоря разбираться по сути в данном конкретном случае желания нет
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!