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

Хранилище

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

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

> Запрос для получения остатков по дням          
Mongrel Подменю пользователя
сообщение 04.01.18, 10:49
Сообщение #1

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

Добрый день , всех с прошедшими и наступающими!

утп 1.2.42.2 платформа 8.3.8.1652

есть задача получить остатки товаров в заказах на складе на дату заказов. я попробовал вот такой

запрос
ВЫБРАТЬ
    ЗаказПокупателяТовары.Ссылка,
    ЗаказПокупателяТовары.Ссылка.Дата,
    ЗаказПокупателяТовары.Номенклатура,
    ЗаказПокупателяТовары.Количество КАК КоличествоВЗаказе
ПОМЕСТИТЬ ВТ_Заказы
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
    ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
    И ЗаказПокупателяТовары.Номенклатура В ИЕРАРХИИ(&ном)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПартииТоваровНаСкладахОстатки.ДокументОприходования.Организация  КАК Организация,
    ПартииТоваровНаСкладахОстатки.Номенклатура,
    НАЧАЛОПЕРИОДА(&НачПериода, ДЕНЬ) КАК Период,
    ПартииТоваровНаСкладахОстатки.Склад,
    ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.КоличествоОстаток, 0) КАК КолОстаток

ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Остатки(
            &НачПериода,
            Номенклатура В
                (ВЫБРАТЬ
                    ВТ_Заказы.Номенклатура
                ИЗ
                    ВТ_Заказы КАК ВТ_Заказы)) КАК ПартииТоваровНаСкладахОстатки

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

ВЫБРАТЬ
        ПартииТоваровНаСкладахОбороты.ДокументОприходования.Организация,
    
    ПартииТоваровНаСкладахОбороты.Номенклатура,
    ПартииТоваровНаСкладахОбороты.ПериодСекунда,
    ПартииТоваровНаСкладахОбороты.Склад,
    ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоПриход, 0) - ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход, 0)
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Обороты(
            &НачПериода,
            &КонПериода,
            Авто,
            (Номенклатура) В
                (ВЫБРАТЬ
                    ВТ_Заказы.Номенклатура
                    
                ИЗ
                    ВТ_Заказы КАК ВТ_Заказы)) КАК ПартииТоваровНаСкладахОбороты



запрос не работает, так как хотелось бы
посмотрел темы на инфорстарте [необходимо зарегистрироваться для просмотра ссылки] но таким образом можно получить на начало дня если есть записи по в регистре валют.

Может есть более правильный вариант?

есть еще мысль забить на быстродействие и поступить совсем не правильно - получить таблицу заказов , а потом пройтись по ней в цикле выполняя запрос.


 ! 

Правила: 4, 9
 


Сообщение отредактировал Vofka - 04.01.18, 11:13

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

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 668
Из: Хмельницкий
Спасибо сказали: 201 раз
Рейтинг: 182.1

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


Сообщение отредактировал Bernet - 04.01.18, 10:57


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

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

Mongrel Подменю пользователя
сообщение 04.01.18, 12:23
Сообщение #3

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

Bernet @ Сегодня, 10:56 * ,

я не точно написал, нужно не просто на начало дня получить таблицу остатков, а на момент заказа. в один день может быть несколько заказов с одной номенклатурой и отгрузки.

Bernet Подменю пользователя
сообщение 04.01.18, 12:45
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 668
Из: Хмельницкий
Спасибо сказали: 201 раз
Рейтинг: 182.1

Mongrel @ Сегодня, 12:23 * ,
Ну так в качестве ваших дат будет дата заказа вместе со временем


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

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

Mongrel Подменю пользователя
сообщение 04.01.18, 18:03
Сообщение #5

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

накидал приблизительный вариант - у меня правильный ход мысли? я просто боюсь, что результат запроса будет очень большой ...
запрос
ВЫБРАТЬ
    ЗаказПокупателяТовары.Ссылка,
    ЗаказПокупателяТовары.Ссылка.Дата КАК Дата,
    ЗаказПокупателяТовары.Номенклатура,
    ЗаказПокупателяТовары.Количество
ПОМЕСТИТЬ Вт_Заказы
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
    ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
;

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

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

СГРУППИРОВАТЬ ПО
    Вт_Заказы.Дата,
    Вт_Остатки.Номенклатура
;

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

Bernet Подменю пользователя
сообщение 05.01.18, 11:57
Сообщение #6

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 668
Из: Хмельницкий
Спасибо сказали: 201 раз
Рейтинг: 182.1

выполнил ваш запрос в консоли - немного не то и данные не сгруппированы, сейчас попробую переделать

Вот такая вот штука получилась - вытягивает последние остатки на дату заказа. P.S. предполагается использование Складов в Заказах - если не используете то везде Склад удалите в запросе
Запрос - Остатки на даты заказов
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗаказПокупателяТовары.Ссылка КАК Заказ,
    ЗаказПокупателяТовары.Ссылка.Дата КАК Период,
    ЗаказПокупателяТовары.Ссылка.СкладГруппа КАК Склад,
    ЗаказПокупателяТовары.Номенклатура,
    СУММА(ЗаказПокупателяТовары.Количество) КАК Количество
ПОМЕСТИТЬ ВтЗаказы
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ГДЕ
    ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата

СГРУППИРОВАТЬ ПО
    ЗаказПокупателяТовары.Ссылка,
    ЗаказПокупателяТовары.Ссылка.Дата,
    ЗаказПокупателяТовары.Ссылка.СкладГруппа,
    ЗаказПокупателяТовары.Номенклатура
;

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

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

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

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

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

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

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


Сообщение отредактировал Bernet - 05.01.18, 11:58


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

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

Mongrel Подменю пользователя
сообщение 10.01.18, 14:21
Сообщение #7

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

Bernet @ 05.01.18, 11:57 * ,


спасибо , задачу я решил несколько иным способом, может совсем не корректным, но 100% работающим. Попробую сравнить, надеюсь в одном запросе будет быстрее чем так как я сделал.

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


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

 

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

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне