Как получить список товаров с указанием цены последнего поступления?

1. umberto_nobile 5 10.04.14 13:31 Сейчас в теме
Добрый день дорогие единомышленники.

Очень нужна ваша помощь в написании запроса для Управления Торговлей ред.10.3

Задача очень проста. Необходима таблица товаров, в которой будет две колонки Номенклатура и Цена последнего поступления.
К сожалению, не могу в данном случае ориентироваться на регистрацию цен поставщика потому что не во всех документах поступления цены регистрируются.

Заранее благодарен.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. x_under 13 10.04.14 14:04 Сейчас в теме
С регистрациями было бы конечно очень просто: если бы делали ПТУ с регистрацией цены - Установка цен номенклатуры, то эти данные были бы доступны в отчете "Анализ цен". (И может проще перевести учет на такую схему?)

Если нет, то можно попробовать собрать данные согласно РН "Партии товаров на складах" (опять же при условии корректности их ведения). Возьмете остатки этого регистра - одно из измерений как раз поступление. Их надо будет упорядочить и взять необходимые записи

Если и тут нет, то извращаться с РН "Товары на складах". Но тут схему я вам не накидаю. И это будет капец как медленно.

Я бы остановился на первом варианте. Решается это несколькими обработками:
- создадите всем поставщикам типы цен, если их нет и запихнете их в договоры
- проставите в настройках пользователя обязательную регистрацию цен номенклатуры
- пробежите поступления и на основании них наклепаете установки цен номенклатуры контрагентов, а следом за ними - установки цен номенклатуры. Потом будете смотреть анализ цен
3. umberto_nobile 5 10.04.14 14:08 Сейчас в теме
:) Спасибо. Если б было так просто и партии товаров у них велись не чёрте как и как нибудь... тогда б я уже б давно написал бы всё. в любом случае спасибо за отзыв
4. x_under 13 11.04.14 11:42 Сейчас в теме
Используйте первый вариант. Перепроводить не нужно же
5. reazek 14.04.14 12:34 Сейчас в теме
По партиям вариант не всегда корректен - в зависимости включен ли ндс в стоимость али нет.
В частном случае - если в приходных накладных стоит галка регистрировать цены поставщиков - можно посмотреть цены в регистре сведений цены номенклатуры контрагентов. Если же нет - запрос к ТЧ поступления товара за период с выбором максимальной строки по дате.
6. пользователь 17.04.14 17:22
Сообщение было скрыто модератором.
...
10. пользователь 18.04.14 00:23
Сообщение было скрыто модератором.
...
7. пользователь 17.04.14 17:27
Сообщение было скрыто модератором.
...
8. umberto_nobile 5 17.04.14 17:34 Сейчас в теме
Большое спасибо всем кто откликнулся на мою просьбу. выкладываю вариант решения задачи. сразу скажу, что придумал не я. Это мне подсказал один мой хороший знакомый, за что ему моя огромная благодарность. Проверено отчёт действительно работает.

Итак Запрос

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

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

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

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

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

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

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

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

УПОРЯДОЧИТЬ ПО
	тНоменклатура.Номенклатура.Наименование
Показать
antonius888; +1 Ответить
9. пользователь 18.04.14 00:20
Сообщение было скрыто модератором.
...
11. umberto_nobile 5 18.04.14 12:26 Сейчас в теме
Тестировал на базе с неимоверными оборотами. Результат выполнения 10-12 секунд.
Мне было нужно решение конкретной задачи в конкретных рамках. я его получил и поделился опытом того как можно решать подобные вопросы. Результат для меня оказался приемлем. Уверен, что если я буду поставлен в другие рамки, то, возможно методы будут другими.
Уважаемый Eugeneer, я прочитал ваш вариант решения. он очень понравился, и я обязательно как-нибудь использую его в дальнейшем. Большое Вам спасибо.
12. insurgut 207 19.08.18 11:26 Сейчас в теме
Не претендую на истину, замеров не делал, но так разве не правильнее и не понятнее?

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

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтДатыПоследнихПоступлений.Номенклатура,
	ВтДатыПоследнихПоступлений.ДатаПоступления,
	ЕСТЬNULL(ВтЦеныПоступлений.Цена, 0) КАК Цена
ИЗ
	ВтДатыПоследнихПоступлений КАК ВтДатыПоследнихПоступлений
		ЛЕВОЕ СОЕДИНЕНИЕ ВтЦеныПоступлений КАК ВтЦеныПоступлений
		ПО (ВтЦеныПоступлений.Номенклатура = ВтДатыПоследнихПоступлений.Номенклатура)
			И (ВтЦеныПоступлений.ДатаПоступления = ВтДатыПоследнихПоступлений.ДатаПоступления)
Показать


P.S. Отборы при необходимости сами наложите, список номенклатуры из документа например передаем параметром Товары.Выгрузить(, "Номенклатура");
13. WillWill888 08.05.21 08:31 Сейчас в теме
(10)(12) Доброго дня,
подскажите, пожалуйста, новичку.
Как этот отчет в 1С добавить?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот