Имя: Пароль:
1C
1С v8
Выборка регистратора из регистра с периодичностью День
, , ,
0 Den4ik88
 
28.09.20
15:14
Добрый день! Подскажите как - нибудь можно написать запрос так, что бы можно было выбрать регистрат из регистра накопления остатки и обороты, в котором установлена периодичность День?
1 butterbean
 
28.09.20
15:16
никак естественно
2 ChMikle
 
28.09.20
15:17
а вам что нужно ? поставив периодичность день, обороты будут выходить сводно за день, поставите регистратор - в группировке по регистраторам
3 Den4ik88
 
28.09.20
15:23
(2) Отчет типовой работает с периодичносью день, но мне надо в отчете еще регистратор вывести как то
4 ДенисЧ
 
28.09.20
15:23
(3) Ну, пригласи программиста, заплати ему большую толику денег...
5 Делопроизводитель
 
28.09.20
15:27
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ) КАК День,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот
ПОМЕСТИТЬ втПоДню
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ) КАК День,
    ТоварыНаСкладах.Номенклатура,
    МАКСИМУМ(ТоварыНаСкладах.Регистратор) КАК Регистратор
ПОМЕСТИТЬ втМаксРегПоДню
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    (ТоварыНаСкладах.Номенклатура, НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ)) В
            (ВЫБРАТЬ
                втПоДню.Номенклатура,
                втПоДню.День
            ИЗ
                втПоДню КАК втПоДню)

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладах.Номенклатура,
    НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втПоДню.День,
    втПоДню.Номенклатура,
    ЕСТЬNULL(втМаксРегПоДню.Регистратор, "") КАК Регистратор,
    втПоДню.КоличествоОборот
ИЗ
    втПоДню КАК втПоДню
        ЛЕВОЕ СОЕДИНЕНИЕ втМаксРегПоДню КАК втМаксРегПоДню
        ПО втПоДню.Номенклатура = втМаксРегПоДню.Номенклатура
            И втПоДню.День = втМаксРегПоДню.День
6 Йохохо
 
28.09.20
15:35
(5) вместо МАКСИМУМ(ТоварыНаСкладах.Регистратор) КАК Регистратор можно вывести "учпучмук", смысла столько же, но сильно быстрее
7 mistеr
 
28.09.20
16:33
(3) А если их много?
8 vicof
 
28.09.20
16:37
(3) С какой целью?
9 Делопроизводитель
 
28.09.20
16:48
(6) Зависит от условия задачи. Если условие предполагает один документ в день. А если не предполагает, то надо смотреть  почему именно день. И делать что-то вроде:


ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ) КАК День,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот
ПОМЕСТИТЬ втПоДню
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ) КАК День,
    ТоварыНаСкладах.Номенклатура,
    ТоварыНаСкладах.Регистратор
ПОМЕСТИТЬ втМаксРегПоДню
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    (ТоварыНаСкладах.Номенклатура, НАЧАЛОПЕРИОДА(ТоварыНаСкладах.Период, ДЕНЬ)) В
            (ВЫБРАТЬ
                втПоДню.Номенклатура,
                втПоДню.День
            ИЗ
                втПоДню КАК втПоДню)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втМаксРегПоДню.День,
    втМаксРегПоДню.Номенклатура,
    СУММА(1) КАК КоличествоДокументовЗаДень
ПОМЕСТИТЬ втДокументовВДень
ИЗ
    втМаксРегПоДню КАК втМаксРегПоДню

СГРУППИРОВАТЬ ПО
    втМаксРегПоДню.День,
    втМаксРегПоДню.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    втПоДню.День,
    втПоДню.Номенклатура,
    ЕСТЬNULL(втМаксРегПоДню.Регистратор, "") КАК Регистратор,
    втПоДню.КоличествоОборот / ВЫБОР
        КОГДА ЕСТЬNULL(втДокументовВДень.КоличествоДокументовЗаДень, 0) = 0
            ТОГДА 1
        ИНАЧЕ ЕСТЬNULL(втДокументовВДень.КоличествоДокументовЗаДень, 0)
    КОНЕЦ КАК Поле1
ИЗ
    втПоДню КАК втПоДню
        ЛЕВОЕ СОЕДИНЕНИЕ втМаксРегПоДню КАК втМаксРегПоДню
        ПО втПоДню.Номенклатура = втМаксРегПоДню.Номенклатура
            И втПоДню.День = втМаксРегПоДню.День
            И втПоДню.Номенклатура = втМаксРегПоДню.Номенклатура
            И втПоДню.День = втМаксРегПоДню.День,
    втДокументовВДень КАК втДокументовВДень
10 Сияющий в темноте
 
28.09.20
19:54
отчет может быть или по регистратору или по дню.