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

Хранилище

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

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



> Выбрать последнее поступление товара с себестоимостью.          
Tseka Подменю пользователя
сообщение 23.05.19, 17:45
Сообщение #1

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

1С:Предприятие 8.3 (8.3.8.2027)

"Управление торговлей для Украины", редакция 2.3.



Как выбрать последнее поступление товара ? 32000000.gif

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

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

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

УПОРЯДОЧИТЬ ПО
    ПартииТоваровНаСкладах.Номенклатура






 ! 

Правила: 4, 8
 


Сообщение отредактировал Vofka - 24.05.19, 8:26

Vofka Подменю пользователя
сообщение 24.05.19, 8:33
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Готовый запрос не напишу, но алгоритм примерно следующий:

1. Нужно выбрать из регистра записи с номенклатурой и периодом (возможно, с дополнительными отборами по коду операции или ещё чему-то), сгруппированные по номенклатуре с МАКСИМУМ(Период), помещаем во временную таблицу;
2. Снова выбираем записи из регистра, соединяемся внутренним соединением с таблицей из пункта (1)

Tseka Подменю пользователя
сообщение 24.05.19, 10:26
Сообщение #3

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

Цитата(Vofka @ 24.05.19, 9:33) *
1. Нужно выбрать из регистра записи с номенклатурой и периодом (возможно, с дополнительными отборами по коду операции или ещё чему-то), сгруппированные по номенклатуре с МАКСИМУМ(Период), помещаем во временную таблицу;
2. Снова выбираем записи из регистра, соединяемся внутренним соединением с таблицей из пункта (1)


Спасибо , попробую сейчас .

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

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Цитата(Vofka @ 24.05.19, 8:33) *
сгруппированные по номенклатуре с МАКСИМУМ(Период)

Мне просто стало интересно. А если было два разных документов поступления по номенклатуре "Товар1" на 24.05.2019 00:00:00 с разной стоимостью?

Vofka Подменю пользователя
сообщение 24.05.19, 12:22
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Vidocq05 @ Сегодня, 13:00 * ,
зависит от бизнес логики: можно взять любой первый попавшийся из них (на моей практике часто именно так поступают в подобных ситуациях), либо взять первый попавшийся у которого стоимость больше/меньше остальных, либо не брать никакой (при этом дополнительно можно как-то оповестить пользователя, что вот мол так и так).

Сообщение отредактировал Vofka - 24.05.19, 12:24

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

Vidocq05 Подменю пользователя
сообщение 24.05.19, 12:42
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

Vofka @ Сегодня, 12:22 * ,
Ну я думаю можно поймать по моменту времени. Но запросом я не знаю как это сделать, хотя особо и не копал. Просто интересно стало, думал может Вы знаете.

Vofka Подменю пользователя
сообщение 24.05.19, 13:00
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Vidocq05 @ Сегодня, 13:42 * ,
у меня ни разу не было задач подобного рода, где надо было бы вычислять с точностью до момента времени. Для пользователя это одно и то же время и мне всегда нужно было отталкиваться именно от "пользовательского" времени.

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

Tseka Подменю пользователя
сообщение 24.05.19, 14:23
Сообщение #8

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

Цитата(Vofka @ 24.05.19, 9:33) *
1. Нужно выбрать из регистра записи с номенклатурой и периодом (возможно, с дополнительными отборами по коду операции или ещё чему-то), сгруппированные по номенклатуре с МАКСИМУМ(Период), помещаем во временную таблицу;
2. Снова выбираем записи из регистра, соединяемся внутренним соединением с таблицей из пункта (1)


Результат такой же 09000000.gif

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

СГРУППИРОВАТЬ ПО
    ПартииТоваровНаСкладах.Номенклатура,
    ПартииТоваровНаСкладах.Период,
    ПартииТоваровНаСкладах.КодОперации.Порядок
;

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

Vofka Подменю пользователя
сообщение 24.05.19, 14:54
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Tseka, на работоспособность не проверял, но ход мыслей должен быть понятен:

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

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

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

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


Если окажется, что по одной номенклатуре было 2 разных поступления одной и той же датой и временем, например
Номенклатура 1, количество 1, стоимость 10
Номенклатура 1, количество 1, стоимость 20

То в результате запроса получится стоимость поступления 15 (Vidocq05, вот, кстати, ещё один вариант: взять среднее значение).

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

Tseka Подменю пользователя
сообщение 24.05.19, 15:16
Сообщение #10

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

Vofka, спасибо огромное , получилось . Но получилось количество номенклатуры 6201 , а на данный момент должно быть около 6407 . Наверное это какой-то старый товар на который не делали приход .

Vofka Подменю пользователя
сообщение 24.05.19, 15:20
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Tseka, в моем запросе вообще количества нету, поэтому что вы у себя написали я не знаю smile.gif . Ну и сам запрос который я написал - это может быть не 100% правильный вариант, я его на работоспособность вообще не проверял, так что возможно, что в нем что-то не учтено.

Tseka Подменю пользователя
сообщение 28.05.19, 15:44
Сообщение #12

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

Vofka @ Сегодня, 16:20 * ,

Вот , тут берётся среднее по себестоимости всех поступлений товара.

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

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


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

 

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