Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация - Возврат
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Bon Jovi
Конфигурация: Trade (10.3.29.1) (http://v8.1c.ru/trade/), версия: 8.3.11.2867, обычные формы.
Добрый день. Подскажите пожалуйста, как можно реализация следующий функционал (саму логику): Мне нужно запросом получить количество документов реализации и возврата по позиции так, чтобы они шли друг за другом. То есть идёт документ РЕАЛИЗАЦИИ, за ним документ ВОЗВРАТА. Если же идёт документ РЕАЛИЗАЦИИ, за ним опять документ РЕАЛИЗАЦИИ, то это ошибочная ситуация.
sava1
добавть дополн. поле ДокументРеализации (РТиУ) - в Возвратах должна быть ссылка на документ реализации + флаг (для реализации 1, для возврата -2).
Упорядочить по ДокументРеализации,Флаг
Bon Jovi
sava1 @ 26.05.20, 11:03 необходимо зарегистрироваться для просмотра ссылки ,
Нужно определить количество последних реализаций (например & = 3). Затем узнать были ли возвраты за дату (& = дата) и в таком же количестве как и реализации (& = 3). То есть, чтобы шли реализация - возврат, реализация - возврат, реализация - возврат. И не было между ними просто реализации без возврата.
sava1
выбираем из регистра продажи все документы, где регистратор Возврат... В рег. есть измерение ДокументПродажи.
а дальше, как и писАл - для продажи фл=1, для Возврата =2.
Упорядочиваем по ДокументуПродажи + фл.
Bon Jovi
sava1 @ Сегодня, 16:07 необходимо зарегистрироваться для просмотра ссылки ,
Я дико извиняюсь, в тупик зашёл. Можете кодом помочь? И что значит флаг?
Vofka
Bon Jovi, а что вы подразумеваете под "чтобы они шли друг за другом"?
Bon Jovi
Vofka @ 28.05.20, 17:19 необходимо зарегистрироваться для просмотра ссылки ,
В общем нужно было мне получить три последние документа реализации, у которых был возврат. За возврат расписывать не буду, а вот как получал три последние документа реализации по номенклатуре напишу:
ВЫБРАТЬ
    Продажи.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ НоменклатураВозвратов
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ГДЕ
    Продажи.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    И НАЧАЛОПЕРИОДА(Продажи.Период, ДЕНЬ) = &ДатаВозврата

СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура
;

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

СГРУППИРОВАТЬ ПО
    Продажи.Номенклатура,
    Продажи.Период,
    Продажи.Регистратор
;

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

СГРУППИРОВАТЬ ПО
    РеализацииНоменклатуыВозвратов.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    МАКСИМУМ(РеализацииНоменклатуыВозвратов.ДатаРеализации) КАК ДатаРеализации,
    РеализацииНоменклатуыВозвратов.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВтороеСостояние
ИЗ
    РеализацииНоменклатуыВозвратов КАК РеализацииНоменклатуыВозвратов
        ЛЕВОЕ СОЕДИНЕНИЕ ПервоеСостояние КАК ПервоеСостояние
        ПО РеализацииНоменклатуыВозвратов.Номенклатура = ПервоеСостояние.Номенклатура
            И РеализацииНоменклатуыВозвратов.ДатаРеализации = ПервоеСостояние.ДатаРеализации
ГДЕ
    ПервоеСостояние.Номенклатура ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    РеализацииНоменклатуыВозвратов.Номенклатура
;

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

СГРУППИРОВАТЬ ПО
    РеализацииНоменклатуыВозвратов.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПервоеСостояние.Номенклатура КАК Номенклатура,
    РеализацииНоменклатуыВозвратов.Реализация КАК Реализация
ИЗ
    ПервоеСостояние КАК ПервоеСостояние
        ЛЕВОЕ СОЕДИНЕНИЕ РеализацииНоменклатуыВозвратов КАК РеализацииНоменклатуыВозвратов
        ПО ПервоеСостояние.Номенклатура = РеализацииНоменклатуыВозвратов.Номенклатура
            И ПервоеСостояние.ДатаРеализации = РеализацииНоменклатуыВозвратов.ДатаРеализации

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВтороеСостояние.Номенклатура,
    РеализацииНоменклатуыВозвратов.Реализация
ИЗ
    ВтороеСостояние КАК ВтороеСостояние
        ЛЕВОЕ СОЕДИНЕНИЕ РеализацииНоменклатуыВозвратов КАК РеализацииНоменклатуыВозвратов
        ПО ВтороеСостояние.Номенклатура = РеализацииНоменклатуыВозвратов.Номенклатура
            И ВтороеСостояние.ДатаРеализации = РеализацииНоменклатуыВозвратов.ДатаРеализации

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТретьеСостояние.Номенклатура,
    РеализацииНоменклатуыВозвратов.Реализация
ИЗ
    ТретьеСостояние КАК ТретьеСостояние
        ЛЕВОЕ СОЕДИНЕНИЕ РеализацииНоменклатуыВозвратов КАК РеализацииНоменклатуыВозвратов
        ПО ТретьеСостояние.Номенклатура = РеализацииНоменклатуыВозвратов.Номенклатура
            И ТретьеСостояние.ДатаРеализации = РеализацииНоменклатуыВозвратов.ДатаРеализации

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