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

Хранилище

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

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



> Как получить для каждой номенклатуры в остатке последнюю партию.          
DrLivsi Подменю пользователя
сообщение 22.12.13, 19:33
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

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

Конфигурация дописанная УТП.

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

УПОРЯДОЧИТЬ ПО
    Номенклатура

logist Подменю пользователя
сообщение 22.12.13, 19:39
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата) КАК ДокументОприходования,

не?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Ardi Подменю пользователя
сообщение 22.12.13, 19:51
Сообщение #3

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Подзапрос 1 - Таблица1: выбираем пары Номенклатура/Последний документ.
Подзапрос 2 - Таблица2: вида Номенклатура/Документ/сумма/количество
Подзапрос 3 - делаем левое соединение таблицы 1 и таблицы 2.
Подзапрос 4 - клеим с остатками.

(Показал сам принцип, кво. подзапросов можно сделать меньше)

Сообщение отредактировал Ardi - 22.12.13, 19:52


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

DrLivsi Подменю пользователя
сообщение 22.12.13, 20:23
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(logist @ 22.12.13, 19:39) *
МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования.Дата) КАК ДокументОприходования,

не?


Да, вроде все верно, выводит дату последнего документа партии, но в поле" Документ" (ссылка на док. партии) все равно поступление полугодичной давности. Это когда добавляю документ в суммируемые поля:
МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты.ДокументОприходования) КАК ДокументОприходования
. А когда добавляю в групповое поле, то выводит все поступления по номенклатуре. Хотелось бы получить правильную ссылку на документ...

Ardi, вроде все так и сделал. Но либо ссылка на документ не выводится, либо попадают все документы.

Ardi Подменю пользователя
сообщение 22.12.13, 20:27
Сообщение #5

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(DrLivsi @ 22.12.13, 20:23) *
вроде все так и сделал

Всё не так. Вообще. Совсем.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Zaval Подменю пользователя
сообщение 22.12.13, 21:53
Сообщение #6

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Зачем ТоварыНаСкладах, если в ПартииТоваровНаСкладах есть все необходимое?
Цитата(DrLivsi @ 22.12.13, 19:33) *
вывести только последний документ партии и цену из него

По-моему, не нужно искать макс дату. Упорядочить по убыванию документов и "ВЫБРАТЬ 1".

DrLivsi Подменю пользователя
сообщение 22.12.13, 22:02
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(Ardi @ 22.12.13, 19:51) *
Подзапрос 1 - Таблица1: выбираем пары Номенклатура/Последний документ.


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

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


В результате получаю:
---------------------------------------------------------------------------------
|Номенклатура_1 | 13.08.2013 | Поступление_№1 01..3.2013|

Цитата(Zaval @ 22.12.13, 21:53) *
Зачем ТоварыНаСкладах, если в ПартииТоваровНаСкладах есть все необходимое?

По-моему, не нужно искать макс дату. Упорядочить по убыванию документов и "ВЫБРАТЬ 1".


По партиям очень большие несоответствие с реальным остатком, поэтому количество берется из ТоварыНаСкладах.
Если я не ошибаюсь, то при "выбрать 1" запрос вернет только одну строку для первой попавшейся номенклатуры.

Ardi Подменю пользователя
сообщение 22.12.13, 22:39
Сообщение #8

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(DrLivsi @ 22.12.13, 22:02) *
В результате получаю:---------------------------------------------------------------------------------|Номенклатура_1 | 13.08.2013 | Поступление_№1 01..3.2013|

Значит максимум работает с датой. С документом не работает. Объединять по дате и номенклатуре из одной таблицы и дате документа и номенклатуре из другой.

Сообщение отредактировал Ardi - 22.12.13, 22:41


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

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

alex040269 Подменю пользователя
сообщение 23.12.13, 8:18
Сообщение #9

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(DrLivsi @ 22.12.13, 22:02) *
Если я не ошибаюсь, то при "выбрать 1" запрос вернет только одну строку для первой попавшейся номенклатуры.

Упорядочит выборку и вернет первую запись


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

DrLivsi Подменю пользователя
сообщение 23.12.13, 9:58
Сообщение #10

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(Ardi @ 22.12.13, 22:39) *
Значит максимум работает с датой. С документом не работает. Объединять по дате и номенклатуре из одной таблицы и дате документа и номенклатуре из другой.


Блин точно, добавил связь таблиц по дате документа. Большое спасибо Ardi!

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


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

 

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