|
Прошу подтвердить неоптимальность УТ11.5.22.137 ИначеЕсли, Eugene555, rozer76, mikecool, Dirk Diggler, Kabz, END, Bigbro, Доминошник, Krendel, H A D G E H O G s, JohnGilbert, toypaul, runuts, phabeZ, tulke, Злопчинский, X Leshiy, RomanYS, ДиВаH2, PLUT, scanduta, yanikolay, Федя Тяпкин, Timon1405, Буковка, Dedal, Шурик71, bolder, Волшебник, mTema32, Мультук, kir-g, Telcher, Homer, vbus, PuhUfa, ads55, apiary, paramedic, Ногаминебить, craxx, alkras, Tatitutu, nick86, ЕRPe, roman383, maxar, Рамиль Маугли, Верещагин, LuckyStar, Vstur, maxab72, RAJAH
| ☑ | |||
|---|---|---|---|---|---|
|
0
H A D G E H O G s
30.03.26
✎
16:30
|
День добрый.
Проведение отгрузочного документа, например, РТУ, при онлайн взаиморасчетах вызывает тормоза. Тормоза возникают в процедуре РегистрСведений.ВспомогательнаяИнформацияВзаиморасчетов.ЗаполнитьВспомогательнуюИнформацию() при выполнении запроса. Причина тормозов - в условиях связи небольшой временной таблицу изменений взаиморасчетов с физической таблицей РасчетыСКлиентами, а именно в формуле в выражении, которая отключает индекс, что приводит к полному чтению регистра. Прошу подтвердить ситуацию, если не лениво.
|
||||
|
1
H A D G E H O G s
30.03.26
✎
16:32
|
Собственно, посмотрел, 11.5.25.72 - точно также.
Поправить то просто - просто не ожидаешь такого встретить в типовой и нет ли тут хитрого смысла. |
||||
|
2
toypaul
гуру
30.03.26
✎
16:35
|
"просто не ожидаешь такого встретить в типовой" шо? в типовой как раз очень даже ожидаем.
|
||||
|
3
toypaul
гуру
30.03.26
✎
16:36
|
Они УТ наверное тестируют только на объемах демо базы. И производительность вряд ли отслеживают.
|
||||
|
4
H A D G E H O G s
30.03.26
✎
16:38
|
(2) Типовая - образчик чистоты среди говноподелий, с которыми сталкиваешься.
|
||||
|
5
Мультук
гуру
30.03.26
✎
16:55
|
(0)
ЕРП 2.5.25.85 1) Код точно такой же. 2) Это вы просто "нарвались", это еще не самое худшее. Там связь ПО Изменения.РасчетныйДокумент = Расчеты.Регистратор И я был уверен что тут играет индекс [ОРНР1 + ... +] Регистратор + НомерСтроки А вовсе не (ибо поля "Период" я в запросе не вижу) [ОРРХ | ОРНР1 +] Период + Регистратор + НомерСтроки (Кластерный) https://its.1c.ru/db/metod8dev/content/1590/hdoc 3) А по полям РН.РасчетыСКлиентами.ДатаРегистратора и РН.РасчетыСКлиентами.ДатаРегистратора и РН.РасчетыСКлиентами.ДатаПлатежа индексов нет Если вы ускорили этот запрос, объясните мне, где я ошибся в своих рассуждениях. (если не сложно) |
||||
|
6
H A D G E H O G s
30.03.26
✎
18:28
|
Вот так решается
&ИзменениеИКонтроль("ЗаполнитьВспомогательнуюИнформацию") Процедура АСФЗаполнитьВспомогательнуюИнформацию(МенеджерВТ, ЭтоРасчетыСКлиентами) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = " |ВЫБРАТЬ РАЗЛИЧНЫЕ | ВЫБОР КОГДА Изменения.РасчетныйДокумент ССЫЛКА Документ.ПервичныйДокумент | И Изменения.РасчетныйДокумент <> ЗНАЧЕНИЕ(Документ.ПервичныйДокумент.ПустаяСсылка) | ТОГДА Изменения.РасчетныйДокумент | ИНАЧЕ Изменения.Документ | КОНЕЦ КАК РасчетныйДокумент, | НАЧАЛОПЕРИОДА(ВЫБОР КОГДА Изменения.ДатаПлатежа = ДАТАВРЕМЯ(1,1,1) ИЛИ Изменения.Сторно | ТОГДА Изменения.ДатаРегистратора | ИНАЧЕ Изменения.ДатаПлатежа | КОНЕЦ , ДЕНЬ) КАК ДатаПлановогоПогашения |ПОМЕСТИТЬ ИзмененияВспомогательнойИнформации |ИЗ | &РасчетыИзменения КАК Изменения |ГДЕ | Изменения.Сумма <> 0 ИЛИ Изменения.КОтгрузке <> 0 ИЛИ Изменения.КОплате <> 0 |; #Вставка |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Расчеты.Регистратор КАК Регистратор, | Расчеты.ДатаПлатежа КАК ДатаПлатежа, | Расчеты.ДатаРегистратора КАК ДатаРегистратора, | Расчеты.Сумма КАК Сумма, | Расчеты.КОтгрузке КАК КОтгрузке, | Расчеты.КОплате КАК КОплате, | Расчеты.Сторно КАК Сторно, | Расчеты.СвязанныйДокумент КАК СвязанныйДокумент, | Расчеты.ПорядокОперации КАК ПорядокОперации, | Расчеты.ПорядокЗачетаПоДатеПлатежа КАК ПорядокЗачетаПоДатеПлатежа, | Расчеты.ВалютаДокумента КАК ВалютаДокумента, | Расчеты.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств |ПОМЕСТИТЬ РасчетыПоРегистратору |ИЗ | ИзмененияВспомогательнойИнформации КАК Изменения | ВНУТРЕННЕЕ СОЕДИНЕНИЕ &Расчеты КАК Расчеты | ПО Изменения.РасчетныйДокумент = Расчеты.Регистратор |; #КонецВставки |ВЫБРАТЬ | Изменения.РасчетныйДокумент КАК РасчетныйДокумент, | Изменения.ДатаПлановогоПогашения КАК ДатаПлановогоПогашения, | МИНИМУМ(ЕСТЬNULL(Расчеты.Регистратор, Неопределено)) КАК ДокументРегистратор, | МАКСИМУМ(ЕСТЬNULL(Расчеты.СвязанныйДокумент, Неопределено)) КАК СвязанныйДокумент, | МИНИМУМ(ЕСТЬNULL(Расчеты.ПорядокОперации, Неопределено)) КАК ПорядокОперации, | МИНИМУМ(ЕСТЬNULL(Расчеты.ПорядокЗачетаПоДатеПлатежа, Неопределено)) КАК ПорядокЗачета, | МИНИМУМ(ЕСТЬNULL(Расчеты.ВалютаДокумента, Неопределено)) КАК ВалютаДокумента, | МАКСИМУМ(ЕСТЬNULL(Расчеты.СтатьяДвиженияДенежныхСредств, Неопределено)) КАК СтатьяДвиженияДенежныхСредств |ИЗ | ИзмененияВспомогательнойИнформации КАК Изменения #Удаление | ЛЕВОЕ СОЕДИНЕНИЕ &Расчеты КАК Расчеты #КонецУдаления #Вставка | ЛЕВОЕ СОЕДИНЕНИЕ РасчетыПоРегистратору КАК Расчеты #КонецВставки | ПО Изменения.РасчетныйДокумент = Расчеты.Регистратор | И Изменения.ДатаПлановогоПогашения = НАЧАЛОПЕРИОДА(ВЫБОР КОГДА Расчеты.ДатаПлатежа = ДАТАВРЕМЯ(1,1,1) ИЛИ Расчеты.Сторно | ТОГДА Расчеты.ДатаРегистратора | ИНАЧЕ Расчеты.ДатаПлатежа | КОНЕЦ , ДЕНЬ) | И (Расчеты.Сумма <> 0 ИЛИ Расчеты.КОтгрузке <> 0 ИЛИ Расчеты.КОплате <> 0) |ГДЕ | ТИПЗНАЧЕНИЯ(Изменения.РасчетныйДокумент) <> ТИП(Документ.ПервичныйДокумент) |СГРУППИРОВАТЬ ПО | Изменения.РасчетныйДокумент, | Изменения.ДатаПлановогоПогашения | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | Изменения.РасчетныйДокумент КАК РасчетныйДокумент, | Изменения.ДатаПлановогоПогашения КАК ДатаПлановогоПогашения, | МИНИМУМ(ЕСТЬNULL(Расчеты.Регистратор, Неопределено)) КАК ДокументРегистратор, | МАКСИМУМ(ЕСТЬNULL(Расчеты.СвязанныйДокумент, Неопределено)) КАК СвязанныйДокумент, | МИНИМУМ(ЕСТЬNULL(Расчеты.ПорядокОперации, Неопределено)) КАК ПорядокОперации, | МИНИМУМ(ЕСТЬNULL(Расчеты.ПорядокЗачетаПоДатеПлатежа, Неопределено)) КАК ПорядокЗачета, | МИНИМУМ(ЕСТЬNULL(Расчеты.ВалютаДокумента, Неопределено)) КАК ВалютаДокумента, | МАКСИМУМ(ЕСТЬNULL(Расчеты.СтатьяДвиженияДенежныхСредств, Неопределено)) КАК СтатьяДвиженияДенежныхСредств |ИЗ | ИзмененияВспомогательнойИнформации КАК Изменения | ЛЕВОЕ СОЕДИНЕНИЕ &Расчеты КАК Расчеты | ПО Изменения.РасчетныйДокумент = Расчеты.РасчетныйДокумент | И Изменения.ДатаПлановогоПогашения = НАЧАЛОПЕРИОДА(ВЫБОР КОГДА Расчеты.ДатаПлатежа = ДАТАВРЕМЯ(1,1,1) ИЛИ Расчеты.Сторно | ТОГДА Расчеты.ДатаРегистратора | ИНАЧЕ Расчеты.ДатаПлатежа | КОНЕЦ , ДЕНЬ) | И (Расчеты.Сумма <> 0 ИЛИ Расчеты.КОтгрузке <> 0 ИЛИ Расчеты.КОплате <> 0) |ГДЕ | ТИПЗНАЧЕНИЯ(Изменения.РасчетныйДокумент) = ТИП(Документ.ПервичныйДокумент) |СГРУППИРОВАТЬ ПО | Изменения.РасчетныйДокумент, | Изменения.ДатаПлановогоПогашения |; |УНИЧТОЖИТЬ ИзмененияВспомогательнойИнформации"; Если ЭтоРасчетыСКлиентами Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"&РасчетыИзменения","РасчетыСКлиентамиИзменения"); Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Расчеты","РегистрНакопления.РасчетыСКлиентами"); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст,"&РасчетыИзменения","РасчетыСПоставщикамиИзменения"); Запрос.Текст = СтрЗаменить(Запрос.Текст,"&Расчеты","РегистрНакопления.РасчетыСПоставщиками"); Запрос.Текст = СтрЗаменить(Запрос.Текст,"КОтгрузке","КПоступлению"); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл НаборЗаписей = СоздатьНаборЗаписей(); НаборЗаписей.Отбор.РасчетныйДокумент.Установить(Выборка.РасчетныйДокумент); НаборЗаписей.Отбор.ДатаПлановогоПогашения.Установить(Выборка.ДатаПлановогоПогашения); Если Выборка.ДокументРегистратор <> Неопределено Тогда ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); КонецЕсли; НаборЗаписей.Записать(); КонецЦикла; КонецПроцедуры |
||||
|
7
palsergeich
30.03.26
✎
22:29
|
(0) отвратительный запрос
|
||||
|
8
Eiffil123
31.03.26
✎
08:21
|
(4) Такова цена универсальности для всех. Когда делаешь подобный механизм для себя, то не надо учитывать особенности и применимость на кучу разных контрагентов со своими учетными политиками.
Поэтому свои регистры, запросы к ним и проще, и понятней, и обычно работают быстро. |
||||
|
9
craxx
31.03.26
✎
09:57
|
(0) Спасибо, добрый человек! я долго пытался найти причину тормозов, теперь стало лучше!
|
||||
|
10
scanduta
31.03.26
✎
12:04
|
(4) Это что шутка ? сейчас типовые это как раз образец как делать не нужно во многих случаях.
А особенно они с архитектурой решений косячат, поэтому EPR постоянно переделывают |
||||
|
11
Dedal
31.03.26
✎
14:18
|
(10) Нет реальность, с какими конфигурациями от сторонних разработчиков вы работали?
Иногда сторонние не только не тестируют код, но даже РП отвечают: "Мы не тестировали. Рекомендации 1С по работе с механизмом выполнять не будем. Кушайте что дали. Ну вы можете сами написать у себя." Вот тут и выпадаешь в осадок от коллег по цеху. |
||||
|
12
craxx
31.03.26
✎
14:25
|
(10) угу, особенно понравилось архитектурное решение в БСП с идентификаторами объектов метаданных и идентификаторы объектов расширений. Приводящее, например, к тому, что ты в расширении не сможешь добавить подсистему, подчиненную уже существующей в основной конфе и расширенной в расширении.
|
||||
|
13
H A D G E H O G s
31.03.26
✎
15:55
|
Зарегистрирована ошибка № 00-00851745.
Сошлись 2 звезды: - я поборол лень - меня не отправили писать письма на v8 |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |