0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 42
|
|
1 | |
Оптимизация Цикла17.02.2013, 19:10. Показов 14128. Ответов 22
Метки нет (Все метки)
добрый день
ситуация такая, ассортимент товаров очень велик и постоянно увеличивается на каждый товар заводится карточка на сегодняшний день, открытие новой карточки занимает 24 секунды, долго покопался и нашел цикл, пробегающий по уже всем существующим кодам товара для установления нового, уникального //________________________________ Процедура ВводНового() ПеремКода=0; //<<------------------------------ ПеремКода Справ=СоздатьОбъект("Справочник.Номенклатура"); А=0; Пока А=0 Цикл Если (Число(Код)<0) Или (Справ.НайтиПоКоду(Код)=1) Тогда ПеремКода=ПеремКода+1; Код=Число(ПеремКода); Иначе А=1; КонецЕсли; КонецЦикла; //_________________________________ в общем, именно "пробегание" по всем уже существующим кодам и затягивает процесс. если выставить начальное значение ПеремКода=10000; то создание карточки занимает десятую долю секунды решение некрасивое, топорное и через некоторое время к этому вопросу придется снова вернутся, чтобы выставить ещё более высокую цифру..... хотелось бы узнать мнение опытных товарищей, нет ли какого-нибудь более изящного решения ускорить прохождение цикла, которое бы закрыло вопрос окончательно, например, как узнать наивысший код в справочнике, не перебирая его весь
0
|
17.02.2013, 19:10 | |
Ответы с готовыми решениями:
22
Оптимизация цикла for Оптимизация цикла for Оптимизация цикла Оптимизация цикла for() |
0 / 0 / 0
Регистрация: 31.01.2008
Сообщений: 89
|
|
12.03.2013, 18:27 | 21 |
0
|
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
|
|
12.03.2013, 23:06 | 22 |
касательно одновременной записи одинаковых кодов :
При автонумерации в семерке ,если не ошибаюсь, есть еще одна табличка - она содержит еще не записанные, но уже занятые номера. Так что для полной гарантии - прямой запрос с блокировкой таблицы временных номеров при вводе туда нового номера. а остальные пусть подождут - мало у кого время ожидания захвата таблиц меньше минуты. Что это за таблица с времянками можо глянуть через профайлер при вызове процедуры установитьновыйномер() для незаписанного документа/элемента справочника. а по проблеме - прямой запрос в руки (там все скулевое работает, в отличие от восьмерки <_< ), и опять-же - учитываем занятые незаписанные номера.
0
|
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 42
|
|
13.03.2013, 13:59 | 23 |
Сообщение от puh14
0
|
13.03.2013, 13:59 | |
13.03.2013, 13:59 | |
Помогаю со студенческими работами здесь
23
Оптимизация цикла for в таймере Оптимизация условия цикла while Оптимизация цикла по скорости Оптимизация цикла (перебор 5000000 элементов) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |