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

Хранилище

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

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



> Вопрос по составлению запроса?          
davydovda Подменю пользователя
сообщение 18.12.14, 6:22
Сообщение #1

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

Подскажите пожалуйста начинающему "программисту" корректно сделал запрос или нет. Суть запроса в в следующем: есть номенклатура(авто запчасть) у неё есть регистр сведений рем. комплект. Вытягиваю все остатки, резервы и цены по всем ремкомплектам которые указаны для запчасти. Вот текст запроса:

ВЫБРАТЬ
    РемонтныйКомпл.РемонтныйКомплект,
    ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ РемКомп
ИЗ
    РегистрСведений.РемонтныйКомплект КАК РемонтныйКомпл
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО РемонтныйКомпл.РемонтныйКомплект = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
    РемонтныйКомпл.Владелец = &Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РемКомп.РемонтныйКомплект КАК РемонтныйКомплект,
    ВложенныйЗапрос.Склад КАК Склад,
    СУММА(ВложенныйЗапрос.ВРезерве) КАК ВРезерве,
    СУММА(ВложенныйЗапрос.ОстатокВсего) КАК ОстатокВсего,
    РемКомп.Цена КАК Цена
ИЗ
    РемКомп КАК РемКомп
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
            ТоварыВРезервеНаСкладахОстатки.Склад КАК Склад,
            ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ВРезерве,
            NULL
        ИЗ
            РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                    ,
                    Номенклатура В
                        (ВЫБРАТЬ
                            РемКомп.РемонтныйКомплект
                        ИЗ
                            РемКомп КАК РемКомп)) КАК ТоварыВРезервеНаСкладахОстатки
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            ТоварыНаСкладахОстатки.Номенклатура,
            ТоварыНаСкладахОстатки.Склад,
            NULL,
            ТоварыНаСкладахОстатки.КоличествоОстаток
        ИЗ
            РегистрНакопления.ТоварыНаСкладах.Остатки(
                    ,
                    Номенклатура В
                        (ВЫБРАТЬ
                            РемКомп.РемонтныйКомплект
                        ИЗ
                            РемКомп КАК РемКомп)) КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос
        ПО РемКомп.РемонтныйКомплект = ВложенныйЗапрос.Номенклатура

СГРУППИРОВАТЬ ПО
    РемКомп.РемонтныйКомплект,
    ВложенныйЗапрос.Склад,
    РемКомп.Цена

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

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Первое что бросается в глаза - нет проверки на NULL. Когда используете ЛЕВОЕ СОЕДИНЕНИЕ - соединне может вернуть NULL, и если потом будете обходить результат запроса и выполнять какие-то арифметические действия, то может получится коллапс. Поэтому всегда когда используете ЛЕВОЕ СОЕДИНЕНИЕ используйте конструкцию:
ЕСТЬNULL([Поле], [ЗначениеПоляЕслиРавноНулл])

Например:
|ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)
|
|ЕСТЬNULL(ВложенныйЗапрос.ВРезерве, 0)



 i 

Правила, п.12
 


Сообщение отредактировал logist - 18.12.14, 14:18


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

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


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

 

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