Имя: Пароль:
1C
1С v8
Зависает обработка при загрузке из регистра накопления
,
0 Татьяна525
 
14.07.23
12:21
Добрый день. Написала обработку, которая подтягивает данные по остаткам товаров из регистра накопления "Товары на складах" (1с розница). Делаю отбор по конкретной папке с товарами. Никаких доп.соединений с другими таблицами нет - только данные из регистра накопления.
Работаю так в районе часа. Потом внезапно при нажатии "Загрузить из регистра" все зависает.
Приходится принудительно отрубать сеанс. Я даже не могу понять, в какой момент зависает, что именно не нравится. И ведь до этого сто раз выполняла загрузку, работало быстро. А тут внезапно стопор.
Подскажите, пожалуйста, в чем может быть дело?
1 Татьяна525
 
14.07.23
12:22
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК Родитель,
    ВЫБОР
        КОГДА ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
            ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
        ИНАЧЕ ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель
    КОНЕЦ КАК Родитель2,
    ТоварыНаСкладахОстатки.Номенклатура.Родитель.Код КАК КодРодителя,
    ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК Артикул,
    ЛОЖЬ КАК УстановитьФлажок
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Кон, Номенклатура.Родитель В ИЕРАРХИИ (&Родитель)) КАК ТоварыНаСкладахОстатки
ГДЕ
    ТоварыНаСкладахОстатки.Номенклатура.ПометкаУдаления = ЛОЖЬ
    И ТоварыНаСкладахОстатки.Номенклатура.Наименование ПОДОБНО "%" + &Наим1 + "%"
    И ТоварыНаСкладахОстатки.Номенклатура.Наименование ПОДОБНО "%" + &Наим2 + "%"
    И ТоварыНаСкладахОстатки.Номенклатура.Наименование ПОДОБНО "%" + &Наим3 + "%"
    И ТоварыНаСкладахОстатки.Номенклатура.Наименование ПОДОБНО "%" + &Наим4 + "%"
    И ТоварыНаСкладахОстатки.Номенклатура.Наименование ПОДОБНО "%" + &Наим5 + "%"

УПОРЯДОЧИТЬ ПО
    Номенклатура
АВТОУПОРЯДОЧИВАНИЕ
2 Галахад
 
гуру
14.07.23
12:35
Вроде не должно совсем уж сильно тормозить.
Но, наверное лучше сначала наложить фильтры на номенклатуру, а затем по полученному списку фильтровать регистр.
3 Мультук
 
гуру
14.07.23
12:35
(0)

1) Если база файловая то возможно "кто-то" еще делает "что-то" большое"

2)  Как по мне вот это полностью равноценно
    ВЫБОР
        КОГДА ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
            ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
        ИНАЧЕ ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель
    КОНЕЦ КАК Родитель2,

вот этому

ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель КАК Родитель2,

3) Сколько записей (тысячи, десятки тысяч) возвращает запрос, если бы в нём не было отборов "ГДЕ" ?


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

P.S.

Пишите в лог (ЖР или просто сообщить) значение "&Родитель"
Возможно оно виснет на какой-то определенной группе
4 lubitelxml
 
14.07.23
12:57
(3) меня смущает ПОДОБНО в плане быстродействия
5 arsik
 
гуру
14.07.23
13:00
А такое условие вас никак не смущает?
Номенклатура.Родитель В ИЕРАРХИИ (&Родитель)
6 lubitelxml
 
14.07.23
13:03
(5) а я как подобно в условии ГДЕ увидел у основной таблицы Остатки - дальше даже смотреть не стал ))
7 Мультук
 
гуру
14.07.23
13:13
(4) (5)

Меня, особенно в пятницу, ничего не смущает. (с)

Я за неделю что-то устал тыкать носом молодежь :-(
и не увидел этого слона.

(4)
ИМХО, если после РегистрНакопления.ТоварыНаСкладах.Остатки(...) останется несчастная тысяча записей, для нормально сервера -- это уже семечки
8 Татьяна525
 
14.07.23
14:23
(3) База серверная. Без условия "где" запрос возвращает где-то 700 записей
9 Татьяна525
 
14.07.23
14:24
(2) Изначально так и было условие было в параметрах вирт. таблицы. Просто, когда начались вот эти тормоза, я перенесла это условие в "где" и потом забыла вернуть обратно) В общем, такое было и без блока "где")
10 Татьяна525
 
14.07.23
14:26
(9) Учитывая количество итоговых записей (около 700), не думаю, что "подобно" должно так уж грузить систему. Да и сам факт, что я довольно долго работаю, запрос выполняется быстро. А потом внезапно на той же самой команде система виснет. Она бы с самого начала висла, разве нет?
11 Татьяна525
 
14.07.23
14:34
(5) Там не так уж много вложенных папок. Т.е. есть основная папка, скажем "Пеналы" и внутри еще 2 папки "Пеналы мягкие", "Пеналы пластиковые". Есть товары во всех этих 3х папках. Там нет 10 уровней вложения папок, все проще
У меня уже есть одна обработка, она точная копия этой. Только там выборка делается из регистра "Продажи. Обороты". Вот там таких глюков не наблюдалось вообще
12 Мимохожий Однако
 
14.07.23
14:35
Попытайся сделать замер и посмотреть на какой строчке кода максимальное время
13 Мультук
 
гуру
14.07.23
14:37
(10) Согласен


1) Переделайте (будет возможно чуть быстрее)

Номенклатура.Родитель В ИЕРАРХИИ (&Родитель)

на

Номенклатура В ИЕРАРХИИ (&Родитель)

2) Постарайтесь понять на какой группе в &Родитель виснет ваша обработка

3) 1С - полна чудес (с)
14 Татьяна525
 
14.07.23
14:45
(13) Условие переделала, спасибо, вроде быстрее.
А вот понять, на каком родителе виснет, сложнее. Я могу час работать и все будет отлично грузиться. А потом там-тарам.
Тем более, сегодня я уже работаю с другим родителем, ситуация та же.
В любом случае, спасибо большое!
Сейчас я уже начала периодически закрывать и открывать заново обработку, не дожидаясь висяков. Тогда все нормально.
15 Татьяна525
 
14.07.23
14:47
(12) Самое большое время тратится даже не на выполнение запроса, а на команду "Вопрос", заданный 1 раз перед началом загрузки из регистра. Забавно, но факт
16 lubitelxml
 
14.07.23
14:52
(15) наверное потому, что пользователь не так быстро отвечает на вопрос, как выполняется строка кода в 1с )
18 OldCondom
 
14.07.23
14:59
когда зависнет, в скуле посмотреть подвисшие запросы "suspended"
Кстати, а битых ссылок нет? Может там у кого в родителе "ссылка не обнаружена"
19 Татьяна525
 
14.07.23
15:49
(18) Тестирование и исправление недавно делали, там все нормально.
20 Мимохожий Однако
 
15.07.23
07:28
(15) Кроме Вопроса посмотри какие еще строки стоят с максимальным временем
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший