Имя: Пароль:
1C
1С v8
Последнее поступление для товара
0 Chuchi
 
25.07.14
12:18
УТ 10.3 хочу посмотреть для номенклатуры последнее поступление с количеством в посуплении.. никак не получается в скд сделать запрос с вложенным выбрать первые... выдает ошибку неоднозначное поле Номенклатура.Ссылка ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Артикул,
    Номенклатура.Код,
    Номенклатура.БазоваяЕдиницаИзмерения
ПОМЕСТИТЬ Номен
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            Закупки.Количество КАК Количество,
            Закупки.Номенклатура КАК Номенклатура,
            Закупки.Регистратор.Ссылка КАК РегистраторСсылка,
            Закупки.Регистратор.Дата КАК РегистраторДата
        ИЗ
            РегистрНакопления.Закупки КАК Закупки) КАК ВложенныйЗапрос
        ПО Номенклатура.Ссылка = ВложенныйЗапрос.Номенклатура
;
1 Chuchi
 
25.07.14
12:19
или возможно как то решить запрос через переменную
"ВЫБРАТЬ ПЕРВЫЕ 1
                   |    Закупки.Количество КАК КОЛВО,
                   |    Закупки.Регистратор.Дата КАК ДатаОперации,
                   |    Закупки.Номенклатура,
                   |    Закупки.ДокументЗакупки
                   |ИЗ
                   |    РегистрНакопления.Закупки КАК Закупки
                   |ГДЕ
                   |    Закупки.Номенклатура.Код = &спНоменклатуры
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ДатаОперации УБЫВ";
2 lxndr
 
25.07.14
12:21
Переименуй или вообще убери строку:
Закупки.Номенклатура КАК Номенклатура

А во-вторых, "ВЫБРАТЬ ПЕРВЫЕ 1" не даст тебе последнего поступления :)
3 Enders
 
25.07.14
12:26
Если надо для каждой номенклатуры,
то:
1) к справочнику документы по номенклатуре, группировка, дата док в максимум
2) К полученному из 1, ещё раз документы по номенклатуре И ДАТЕ дока, группировка, ссылка в максимум
3) К полученому из 1, ещё раз документы по номенклатуре,дате и ссылки, вытягиваем кол-во

Если для одной номенклатуры, то (1) вполне сгодится
4 Chuchi
 
28.07.14
11:00
(3) Спасибо большое! так получилось!
подскажите пожалуйста еще как в СКД сделать условие что если в регистре сведений НоменклатураКонтрагентов нет записи соответствия то строку номенклатуры в отчете все равно выводить только не заполнять колонки вытягиваемые из этого регистра
ВЫБРАТЬ
    НоменклатураКонтрагентов.Номенклатура.Ссылка,
    НоменклатураКонтрагентов.КодНоменклатурыКонтрагента,
    НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента,
    НоменклатураКонтрагентов.Контрагент
ПОМЕСТИТЬ Контр
ИЗ
    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
ГДЕ
    НоменклатураКонтрагентов.Контрагент = &Контрагент
;
5 Chuchi
 
28.07.14
11:01
..есть использовать ЕСТЬNULL(Контр.Контрагент, "") то не понимаю что написать после запятой
6 Asmody
 
28.07.14
11:21
ВЫБОР КОГДА НЕ Контр.Контрагент ЕСТЬ NULL
ТОГДА Закупки.Количество КАК Количество
ИНАЧЕ 0
КОНЕЦ КАК КОЛВО
7 Chuchi
 
28.07.14
11:50
(6) мне не количество нужно в 0, а код номенклатурыКонтрагента, если по номенклатуре нет записи в регистре сведений то в колонках КодНоменклатурыКонтрагента и ЕдИзм нужны или пустые поля или прочерки
8 Asmody
 
28.07.14
11:52
(7) замени 0 на "" или на "-"
9 Chuchi
 
28.07.14
12:07
..что то вообще ничего не стало выходить

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

СГРУППИРОВАТЬ ПО
    Закупки.Номенклатура,
    Закупки.Номенклатура.Код,
    Закупки.Номенклатура.Артикул,
    Закупки.Номенклатура.БазоваяЕдиницаИзмерения,
    Закупки.Номенклатура.ОтветственныйМенеджерЗаПокупки,
    Закупки.Номенклатура.ОсновнойПоставщик
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Закупки.Регистратор.Ссылка,
    Закупки.Номенклатура.Ссылка,
    Закупки.Количество
ПОМЕСТИТЬ кол
ИЗ
    РегистрНакопления.Закупки КАК Закупки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыВРозницеОстаткиИОбороты.Номенклатура.Ссылка КАК НомОб,
    ТоварыВРозницеОстаткиИОбороты.КоличествоНачальныйОстаток,
    ТоварыВРозницеОстаткиИОбороты.КоличествоКонечныйОстаток,
    ТоварыВРозницеОстаткиИОбороты.КоличествоОборот,
    ТоварыВРозницеОстаткиИОбороты.КоличествоПриход,
    ТоварыВРозницеОстаткиИОбороты.КоличествоРасход
ПОМЕСТИТЬ Об
ИЗ
    РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты КАК ТоварыВРозницеОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НоменклатураКонтрагентов.Номенклатура.Ссылка,
    НоменклатураКонтрагентов.КодНоменклатурыКонтрагента,
    НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента,
    ВЫБОР КОГДА НЕ &Контрагент ЕСТЬ NULL
    ТОГДА  НоменклатураКонтрагентов.Контрагент    
    ИНАЧЕ "-"
    КОНЕЦ КАК Контра
ПОМЕСТИТЬ Контр
ИЗ
    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
ГДЕ
    НоменклатураКонтрагентов.Контрагент = &Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    номен.Номенклатура,
    номен.РегистраторДата,
    номен.НоменклатураКод,
    номен.НоменклатураАртикул,
    номен.НоменклатураБазоваяЕдиницаИзмерения,
    кол.Количество,
    Об.КоличествоНачальныйОстаток,
    Об.КоличествоКонечныйОстаток,
    Об.КоличествоПриход,
    Об.КоличествоРасход,
    Об.НомОб,
    Контр.КодНоменклатурыКонтрагента,
    Контр.ЕдиницаНоменклатурыКонтрагента,
    Контр.Контра,
    номен.НоменклатураОсновнойПоставщик,
    номен.НоменклатураОтветственныйМенеджерЗаПокупки
ИЗ
    номен КАК номен
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ кол КАК кол
        ПО номен.Номенклатура = кол.НоменклатураСсылка
            И номен.РегистраторДата = кол.РегистраторСсылка.Дата
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Об КАК Об
        ПО номен.Номенклатура = Об.НомОб
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Контр КАК Контр
        ПО номен.Номенклатура = Контр.НоменклатураСсылка
10 Ненавижу 1С
 
гуру
28.07.14
12:11
какой-то треш
11 Холодильник
 
28.07.14
12:16
(10) +100
вместо этого мегазапроса проще было искать по таблице проведенных поступлений) будет однозначно быстрее всех этих внутренних соединений
12 Chuchi
 
30.07.14
10:06
Спасибо.. а можно все таки подсказать как же выводить строки с пустыми колонками если по ним нет записи в регистре сведений номенклатураконтрагента?
13 IVT_2009
 
30.07.14
10:14
ВЫБОР
КОГДА какоеТоЗначение IS NULL тогда "нет значение"
ИНАЧЕ какоеТоЗначение
КОНЕЦ
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.