Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выборка документов по доп. характеристике номенклатуры          
stajer Подменю пользователя
сообщение 25.08.20, 10:03
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 17
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте.
Платформа: 1С:Предприятие 8.3 (8.3.8.2322).
Конфигурация: Управление торговлей для Украины, редакция 3.1
Разработка конфигурации: "ABBYY Ukraine", 2005-2017 (3.1.5.1) (http://1c.ua/v8/RegionalSolutions_UA_UT.php)
Copyright © ДП "Еврософтпром", 2005-2017. Все права защищены
(http://www.1c.ua)



Прошу вашего совета. В документе Заказ покупателя среди прочих номенклатур есть номенклатуры с дополнительными характеристиками ( каталог и образец), необходимо выбрать все данные из документов заказ только по номенклатурам с характеристиками "каталог" и "образец" с 2017 года. В дальнейшем ищется оплата по ним (Приходный кассовый ордер) и возвраты. На основании этих данных расчитывается задолжность клиента.
Сложность в том что построенный запрос выполняется очень долго. Посоветуйте, пожалуйста, есть ли возможность хранить таблицы с данными где-то в отчете?

Vofka Подменю пользователя
сообщение 25.08.20, 10:12
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

stajer, было бы не плохо, если бы вы показали запрос.

stajer Подменю пользователя
сообщение 25.08.20, 10:39
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 17
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ Сегодня, 11:12 * ,
Вот запрос по поиску в документах номенклатуры с дополнительной характеристикой "Образец". Конкретно это делается во "Вложенный запрос". Точно такой же запрос для получение документов с номенклатурой с дополнительной характеристикой "Каталог".

ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка КАК ЗаказПокупателя,
    ВложенныйЗапрос.СуммаДокумента КАК СуммаДокумента,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка КАК ПКО,
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
    ВЫБОР
        КОГДА ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов ЕСТЬ NULL
            ТОГДА ВЫБОР
                    КОГДА ВЗВозвраты.Возврат ЕСТЬ NULL
                        ТОГДА ВложенныйЗапрос.СуммаДокумента
                    ИНАЧЕ ВЫБОР
                            КОГДА ВложенныйЗапрос.СуммаДокумента - ВЗВозвраты.СуммаВозврат <= 0
                                ТОГДА ВложенныйЗапрос.СуммаДокумента
                            ИНАЧЕ ВложенныйЗапрос.СуммаДокумента - ВЗВозвраты.СуммаВозврат
                        КОНЕЦ
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА ВложенныйЗапрос.СуммаДокумента - ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов <= 0
                    ТОГДА 0
                ИНАЧЕ ВЫБОР
                        КОГДА ВЗВозвраты.Возврат ЕСТЬ NULL
                            ТОГДА ВложенныйЗапрос.СуммаДокумента - ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов
                        ИНАЧЕ ВЫБОР
                                КОГДА ВложенныйЗапрос.СуммаДокумента - ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов - ВЗВозвраты.СуммаВозврат <= 0
                                    ТОГДА 0
                                ИНАЧЕ ВложенныйЗапрос.СуммаДокумента - ПриходныйКассовыйОрдерРасшифровкаПлатежа.СуммаВзаиморасчетов - ВЗВозвраты.СуммаВозврат
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Разница,
    ВЗВозвраты.Возврат КАК Возврат,
    ВЗВозвраты.СуммаВозврат КАК СуммаВозврат,
    ВложенныйЗапрос.Контрагент КАК Контрагент,
    ВложенныйЗапрос.Валюта КАК Валюта
ИЗ
    (ВЫБРАТЬ
        ЗаказКлиентаТовары.Ссылка КАК Ссылка,
        СУММА(ЕСТЬNULL(ЗаказКлиентаТовары.Сумма, 0)) КАК СуммаДокумента,
        ЗаказКлиентаТовары.Ссылка.Валюта КАК Валюта,
        ЗаказКлиентаТовары.Ссылка.Контрагент КАК Контрагент,
        НоменклатураДополнительныеРеквизиты.Значение КАК Значение
    ИЗ
        Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
            ПО (ЗаказКлиентаТовары.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка)
    ГДЕ
        ЗаказКлиентаТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
        И НоменклатураДополнительныеРеквизиты.Значение.Наименование = "Образец"
        И ЗаказКлиентаТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
        И НоменклатураДополнительныеРеквизиты.Ссылка.ПометкаУдаления = ЛОЖЬ
    
    СГРУППИРОВАТЬ ПО
        ЗаказКлиентаТовары.Ссылка,
        ЗаказКлиентаТовары.Ссылка.Валюта,
        ЗаказКлиентаТовары.Ссылка.Контрагент,
        НоменклатураДополнительныеРеквизиты.Значение) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПриходныйКассовыйОрдерРасшифровкаПлатежа
        ПО ВложенныйЗапрос.Ссылка = ПриходныйКассовыйОрдерРасшифровкаПлатежа.Заказ
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РеализацияТоваровУслугТовары.ЗаказКлиента КАК ЗаказКлиента,
            ВложенныйЗапрос1.Сумма КАК СуммаВозврат,
            ВложенныйЗапрос1.Ссылка КАК Возврат
        ИЗ
            Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ВозвратТоваровОтКлиентаТовары.Ссылка КАК Ссылка,
                    СУММА(ВозвратТоваровОтКлиентаТовары.Сумма) КАК Сумма,
                    ВозвратТоваровОтКлиентаТовары.ДокументРеализации КАК ДокументРеализации
                ИЗ
                    Документ.ВозвратТоваровОтКлиента.Товары КАК ВозвратТоваровОтКлиентаТовары
                        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
                        ПО ВозвратТоваровОтКлиентаТовары.Номенклатура = НоменклатураДополнительныеРеквизиты.Ссылка
                ГДЕ
                    ВозвратТоваровОтКлиентаТовары.Ссылка.Проведен = ИСТИНА
                    И НоменклатураДополнительныеРеквизиты.Значение.Наименование = "Образец"
                    И ВозвратТоваровОтКлиентаТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
                    И НоменклатураДополнительныеРеквизиты.Ссылка.ПометкаУдаления = ЛОЖЬ
                
                СГРУППИРОВАТЬ ПО
                    ВозвратТоваровОтКлиентаТовары.Ссылка,
                    ВозвратТоваровОтКлиентаТовары.ДокументРеализации) КАК ВложенныйЗапрос1
                ПО РеализацияТоваровУслугТовары.Ссылка = ВложенныйЗапрос1.ДокументРеализации
        ГДЕ
            РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
            И РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
            И РеализацияТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
        
        СГРУППИРОВАТЬ ПО
            РеализацияТоваровУслугТовары.ЗаказКлиента,
            ВложенныйЗапрос1.Ссылка,
            ВложенныйЗапрос1.Сумма) КАК ВЗВозвраты
        ПО ВложенныйЗапрос.Ссылка = ВЗВозвраты.ЗаказКлиента
ГДЕ
    ПриходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.ПометкаУдаления = ЛОЖЬ

TohaMonster Подменю пользователя
сообщение 25.08.20, 11:56
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 70
Спасибо сказали: 29 раз
Рейтинг: 29

Если это не запрос для получения динамического списка, то мои советы такие:
1. Попробуйте вместо вложенных запросов использовать временные таблицы
2. С временными таблицами используйте индексы по полям, которые потом будете соединять. Если есть составные поля (Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа.Заказ итп), желательно во временной таблице их типизировать
3. Консолью запроса смотрите, сколько записей в каждой из временных таблиц и сколько времени они формируются. И пытаетесь понять, что не так. Возможно, для конкретно Вашей Базы ничего здесь оптимизацией запроса и не сделаешь: быть может, у Вас слишком много Номенклатуры и Заказов? Нужно анализировать

Временные таблицы:
ВТНоменклатураДополнительныеРеквизиты
ВТВложенныйЗапрос
ВТВложенныйЗапрос1
ВТВЗВозвраты
и финальный запрос, где все они соединяются с ПриходныйКассовыйОрдерРасшифровкаПлатежа

Спасибо сказали: stajer,

stajer Подменю пользователя
сообщение 25.08.20, 12:00
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 17
Спасибо сказали: 0 раз
Рейтинг: 0

TohaMonster @ Сегодня, 12:56 * ,
Спасибо за совет. Попробую переделать запрос и подумаю что еще можно сделать.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 10:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!