#0
by Boudybuilder
Всем доброго вечера! Работаю на рабочим столом менеджера по продажам. Есть поле "ДеревоНоменклатуры" ТипЗначения:СправочникСписок.Номенклатура , только группы. Оно служит для навигации. При активации строки выполняется запрос , и все элементы попадают в табличную часть , откуда я уже подбираю в заказ. Все бы хорошо , но запрос долго выполняется, особенно первое выполнение запроса. Пока не закешируется. Вопрос в том , как бы тут его оптимизировать. Или как подскажете сделать по другому. Вот запрос: ВЫБРАТЬ РАЗРЕШЕННЫЕ ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( РегистрНакопления.ТоварыВРознице.Остатки( РегистрНакопления.ТоварыВНТТ.Остатки(
#3
by Armando
Номенклатура.Родитель = &Родитель ИЛИ Номенклатура.Родитель.Родитель = &Родитель тоже не очень
#5
by Armando
Срезы по курсам и ценам можно выполнить один раз при открытии формы, поместить во временную таблицу. И каждый раз брать уже оттуда
#8
by Armando
у тебя выполняется 3 раза. Можно отдельным пакетом выбрать номенклатуру, поместить в ВТ и в параметрах виртуальной таблицы прописывать условие по номенклатуре из этой ВТ
#10
by Boudybuilder
Я думал что лучше сразу отбор делать в ВиртуальнойТаблице чем получать данные по всем трем запросам , и их уже отбирать.
#12
by romansun
имхо трижды Родители вот эти через стопятьсот точек в параметрах виртуальной таблицы сводят скуль с ума отбери нужную тебе номенклатуру один раз в ВТ... как в посоветовали, да. Должно помочь, ибо в остальном каких-то прям явно видимых косяков вроде нет. Ну, курсы еще, да
#13
by romansun
)))) вынеси всё номенклатуру в ВТ и запускай запросы по одному, два остальных заремарь. Отследи какой запрос больше всего затыкается.
#14
by Armando
не, что-то типа такого должно получиться: где .... ; выбрать * из РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура в (выбрать Ссылка из ВТ_Номенклатура))
#15
by romansun
+ если есть где в условиях джоинов многотиповые поля - их надо типизировать принудительно к нужному типу обязательно "ХарактеристикаНоменклатуры" не такое? Я просто хз, что там, да как..
#20
by Boudybuilder
Это значительно помогло. Немного изменилась суть результата , но это не так важно...
#24
by ViSo76
Хорошо вопрос на засыпку кто скажет как будет выполнен данный кусок запроса? РегистрНакопления.ТоварыНаСкладах.Остатки( ,
#27
by ViSo76
А будет вот что, в начале будут получены все ближайшие остатки + движения до последнего изменения, т.к. открытый период то и захватит к примеру приход через неделю, далее идёт не два соединения а 3 соединения с фильтрацией. Это не оптимально, было бы лучше получить остатки не для всех позиций, а только для необходимой номенклатуры, вот так ( пишу запрос в блакноте так что если будут ошибки поправьте ): ВЫБРАТЬ ИЗ ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В ( ВЫБРАТЬ Ссылка ИЗ тзСписокНоменклатурыДляФильтрации ) ) ИЗ РегистрНакопления.ТоварыВРознице.Остатки( , Номенклатура В ( ВЫБРАТЬ Ссылка ИЗ тзСписокНоменклатурыДляФильтрации ) ) ИЗ РегистрНакопления.ТоварыВНТТ.Остатки( , Номенклатура В ( ВЫБРАТЬ Ссылка ИЗ тзСписокНоменклатурыДляФильтрации ) ) Далее естественно срез последних так же идёт для всех номенклатур что тоже не является оптимальным... Вопрос на засыпку что нужно сделать далее?
#29
by Armando
>> А будет вот что, в начале будут получены все ближайшие остатки + движения до последнего изменения, т.к. открытый период то и захватит к примеру приход через неделю, далее идёт не два соединения а 3 соединения с фильтрацией Не так. Просто будут получены остатки на какую-то большую дату, типа 3999 год. И 2 соединения с Номенклатурой.
#30
by viktor_vv
А вот это "и все элементы попадают в табличную часть" табличная часть - это что ? Табличное поле с источником данных таблица значений? Лучше так сделать. Оставляешь дерево групп для навигации. Вешаешь на форму табличное поле с источником СправочникСписок. При активизации строки дерева накладываешь отбор на список по Ссылка с условием ВГруппе. А остатки и цены выгребаешь в ПриВыводеСтроки списка (простое условие по конкретной номенклатуре) или ПриПолученииДанных (немного сложнее условие по массиву ссылок, но проще чем твои через несколько точек).
#31
by viktor_vv
+ У тебя в группе может быть десяток тысяч позиций номенклатуры, нафига тебе тащить остатки и цены по ним всем при активации группы, да еще и с таким тяжелым условием в параметрах, если на экран влезет максимум 50-100, вот по ним и тащи.
#32
by Boudybuilder
РегистрНакопления.ТоварыНаСкладах.Остатки( ИЗ РегистрНакопления.ТоварыВРознице.Остатки( ИЗ РегистрНакопления.ТоварыВНТТ.Остатки( РегистрСведений.ЦеныНоменклатуры.СрезПоследних( Работает в 100 раз быстрее , + 1С не зависает при его выполнении
#33
by Armando
Будет еще быстрее, если сделаешь Зачем здесь еще один срез, тем более без соединения: "ИЗ ВТ_ОстаткиИЦены КАК ВТ_ОстаткиИЦены ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК Курсы ВТ_ОстаткиИЦены.Цена * Курсы.Курс / Курсы.Кратность / КурсВалютыВзаиморасчетов.Курс * КурсВалютыВзаиморасчетов.Кратность КАК Цена,
#34
by Sammo
Я бы таки попробовал номенклатуру убрать из параметра виртуальной таблицы и сделать внутреннее с ВТ_ВГруппе Это скорее всего не первое измерение, размер выборки может быть большой.
#36
by ViSo76
А ты проверил вместе с соединением срез последних? Конечно никакой разницы ты не почувствуешь, т.к. я только часть кода привёл. Получение цены разумеется нужно делать так: ВЫБРАТЬ Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦены И ХарактеристикаНоменклатуры В ( ВЫБРАТЬ РАЗЛИЧНЫЕ Номенклатура ИЗ тзОстатки ) И ХарактеристикаНоменклатуры В ( ВЫБРАТЬ ХарактеристикаНоменклатуры ИЗ тзОстатки ) ) А то самое тормознутое оставил и радуется что не помогло... И мой запрос будет работать быстрее по тому что изначально номенклатуры может быть меньше и после получения остатков номенклатуры может ещё стать меньше и количество цен соответственно будет вычислено меньше... PS: Остальную часть запроса я предлагал написать вам...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- v7: Введение корректировочного СФ
- Раскрасить колонки в СКД по условию
- обмен УТ - БП реализация - НДС не падает на 19,03
- Как заблокировать выполнение процедуры ПриАктивизацииСтроки?
- Выбрать из табличной части формы только строки отобранные по поиску
- Построитель отчетов vs построитель запроса
- v7: Изменеие объекта "Перечисления" строки "Представление" программно
- Картинки объектов метаданных в виде одного файла
- Чтение файла Excel на сервере(фоновое задание)
- Документация на 1С "Система проектирования прикладных решений"
- СКД. Вывод в группировке нужного значения ресурса
- РИБ. Создание начального образа.
- Подскажите с регистрацией КАМИН 3.0 ...
- TeamViewer, скорость передачи файлов зависит от направления?
- Курсовые разницы в УПП
- СКД вывел отбор на форму. правое значение = неопределено. как исправить ?
- Проведение по регистру накопления (обороты) УТ 11.1
- Создание WSПрокси
- Регламентное задание запускается не по расписанию
- Шаблон инвентарных номеров БГУ