1С:Предприятие 8.3 (8.3.8.2027)
"Управление торговлей для Украины", редакция 2.3.
Как выбрать последнее поступление товара ?
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование
ПОМЕСТИТЬ ВТНоменклатура
ИЗ
Справочник.Номенклатура КАК Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииТоваровНаСкладах.Номенклатура.Код КАК КодТовара,
ПартииТоваровНаСкладах.Номенклатура,
СУММА(ПартииТоваровНаСкладах.Стоимость) / СУММА(ПартииТоваровНаСкладах.Количество) КАК Стоимость,
ПартииТоваровНаСкладах.КодОперации.Порядок,
ПартииТоваровНаСкладах.КодОперации.Ссылка,
МАКСИМУМ(ПартииТоваровНаСкладах.Период) КАК Период
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
ПартииТоваровНаСкладах.КодОперации.Порядок = &КодОперации
ИЛИ ПартииТоваровНаСкладах.КодОперации.Порядок = &КодОперации2
И ПартииТоваровНаСкладах.Номенклатура.Наименование В
(ВЫБРАТЬ
ВТНоменклатура.Наименование
ИЗ
ВТНоменклатура)
СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.КодОперации.Порядок,
ПартииТоваровНаСкладах.Номенклатура.Код,
ПартииТоваровНаСкладах.Номенклатура.Наименование,
ПартииТоваровНаСкладах.КодОперации.Ссылка,
ПартииТоваровНаСкладах.Период
УПОРЯДОЧИТЬ ПО
ПартииТоваровНаСкладах.Номенклатура
! | http://pro1c.org.ua/index.php?act=announce&id=2: 4, 8 |
Готовый запрос не напишу, но алгоритм примерно следующий:
1. Нужно выбрать из регистра записи с номенклатурой и периодом (возможно, с дополнительными отборами по коду операции или ещё чему-то), сгруппированные по номенклатуре с МАКСИМУМ(Период), помещаем во временную таблицу;
2. Снова выбираем записи из регистра, соединяемся внутренним соединением с таблицей из пункта (1)
Vidocq05 @ Сегодня, 13:00
,
зависит от бизнес логики: можно взять любой первый попавшийся из них (на моей практике часто именно так поступают в подобных ситуациях), либо взять первый попавшийся у которого стоимость больше/меньше остальных, либо не брать никакой (при этом дополнительно можно как-то оповестить пользователя, что вот мол так и так).
Vofka @ Сегодня, 12:22
,
Ну я думаю можно поймать по моменту времени. Но запросом я не знаю как это сделать, хотя особо и не копал. Просто интересно стало, думал может Вы знаете.
Vidocq05 @ Сегодня, 13:42
,
у меня ни разу не было задач подобного рода, где надо было бы вычислять с точностью до момента времени. Для пользователя это одно и то же время и мне всегда нужно было отталкиваться именно от "пользовательского" времени.
ВЫБРАТЬ
ПартииТоваровНаСкладах.Номенклатура,
СУММА(ПартииТоваровНаСкладах.Стоимость) / СУММА(ПартииТоваровНаСкладах.Количество) КАК Себестоимость,
ПартииТоваровНаСкладах.КодОперации.Порядок КАК Порядок,
МАКСИМУМ(ПартииТоваровНаСкладах.Период) КАК Период
ПОМЕСТИТЬ ВТДокументы
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
(ПартииТоваровНаСкладах.КодОперации.Порядок = &Код
ИЛИ ПартииТоваровНаСкладах.КодОперации.Порядок = &Код1)
СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.Период,
ПартииТоваровНаСкладах.КодОперации.Порядок
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.Период,
ПартииТоваровНаСкладах.КодОперации.Порядок,
СУММА(ПартииТоваровНаСкладах.Стоимость) / СУММА(ПартииТоваровНаСкладах.Количество) КАК СтоимостьПоступления
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДокументы КАК ВТДокументы
ПО ПартииТоваровНаСкладах.Номенклатура = ВТДокументы.Номенклатура
ГДЕ
(ПартииТоваровНаСкладах.КодОперации.Порядок = &Код
ИЛИ ПартииТоваровНаСкладах.КодОперации.Порядок = &Код1)
СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.Период,
ПартииТоваровНаСкладах.КодОперации.Порядок
УПОРЯДОЧИТЬ ПО
ПартииТоваровНаСкладах.Номенклатура
Tseka, на работоспособность не проверял, но ход мыслей должен быть понятен:
ВЫБРАТЬ
ПартииТоваровНаСкладах.Номенклатура,
МАКСИМУМ(ПартииТоваровНаСкладах.Период) КАК Период
ПОМЕСТИТЬ ВТДокументы
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
(ПартииТоваровНаСкладах.КодОперации.Порядок = &Код
ИЛИ ПартииТоваровНаСкладах.КодОперации.Порядок = &Код1)
СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладах.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.Период,
СУММА(ПартииТоваровНаСкладах.Стоимость) / СУММА(ПартииТоваровНаСкладах.Количество) КАК СтоимостьПоступления
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДокументы КАК ВТДокументы
ПО ПартииТоваровНаСкладах.Номенклатура = ВТДокументы.Номенклатура
И ПартииТоваровНаСкладах.Период = ВТДокументы.Период
СГРУППИРОВАТЬ ПО
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.Период
Vofka, спасибо огромное , получилось . Но получилось количество номенклатуры 6201 , а на данный момент должно быть около 6407 . Наверное это какой-то старый товар на который не делали приход .
Tseka, в моем запросе вообще количества нету, поэтому что вы у себя написали я не знаю . Ну и сам запрос который я написал - это может быть не 100% правильный вариант, я его на работоспособность вообще не проверял, так что возможно, что в нем что-то не учтено.
Vofka @ Сегодня, 16:20
,
Вот , тут берётся среднее по себестоимости всех поступлений товара.
ВЫБРАТЬ
Товар.Код КАК Код,
Товар.Наименование КАК Наименование,
ПартииТоваров.КоличествоОстаток КАК Остаток,
ВЫБОР
КОГДА ПартииТоваров.КоличествоОстаток = 0
ТОГДА 0
ИНАЧЕ ПартииТоваров.СтоимостьОстаток / ПартииТоваров.КоличествоОстаток
КОНЕЦ КАК Себестоимость
ИЗ
Справочник.Номенклатура КАК Товар
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки КАК ПартииТоваров
ПО ПартииТоваров.Номенклатура = Товар.Ссылка
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua