1. ulvi96 19.04.19 12:03 Сейчас в теме

Регистр накопления закупки (Запрос)

Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В КА 1.3. Создал отчет (Закупки), с колонкам - контрагент, номенклатура, количество, цена и сумма. И надо добавить еще одна колонка который будить отображать последняя цена товара. Последняя цена товара - выбираем из Регистр накопления - Закупки.ОстаткиИОбороты - ЦенаПриход.
Написал запрос, было группировка, изменил запрос и сейчас нечего не показывает. Как могу решить эту задачу. С объединением, макетам или как?
Спасибо всем за ранее.

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


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

УПОРЯДОЧИТЬ ПО
	ЗакупкиОстаткиИОбороты.Регистратор.Дата УБЫВ
Показать


Второй Документ - Поступление товаров услуг -
ВЫБРАТЬ Первые 1
	ПоступлениеТоваровУслугТовары.Цена КАК ПоследняяЦена,
	ПоступлениеТоваровУслугТовары.Номенклатура
ИЗ
	Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
	ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура

УПОРЯДОЧИТЬ ПО
	ПоступлениеТоваровУслугТовары.Ссылка.Дата УБЫВ
Показать


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

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

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

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

В последним запросе результат не верный по-моему там я делаю группировку. Но без группировку номенклатура дублируются.
Ответы
Избранное Подписка Сортировка: Древо
3. user995537 17 19.04.19 12:49 Сейчас в теме
(1)Во вложении мой отчет, форма под обычное приложение, поэтому если у Вас управляемые формы, уберите форму отчета
Прикрепленные файлы:
Цена последней покупки.erf
2. SedovSU@mail.ru 292 19.04.19 12:45 Сейчас в теме
Чуть чуть не так. Вот так попробуйте

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

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    втЗакупки.Контрагент,
    втЗакупки.Номенклатура,
    втЗакупки.Количество КАК Количество,
    втЗакупки.Цена КАК Цена,
    втЗакупки.Сумма КАК Сумма,
    втПоступление.ПоследняяЦена КАК ПоследняяЦена
ИЗ
    втЗакупки КАК втЗакупки
        ЛЕВОЕ СОЕДИНЕНИЕ втПоступление КАК втПоступление
        ПО втЗакупки.Номенклатура= втПоступление.Номенклатура
Показать
4. ulvi96 19.04.19 13:10 Сейчас в теме
(2)Спасибо за вниманию. Но здесь нам не надо максимальная цена. Цену надо выбрать из подледного документа поступление (для каждого номенклатуры они разные).
Запрос по-моему будить такой но не могу записать финальный запрос.
ВЫБРАТЬ Первые 1
    ПоступлениеТоваровУслугТовары.Цена КАК ПоследняяЦена,
    ПоступлениеТоваровУслугТовары.Номенклатура
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Номенклатура = &Номенклатура

УПОРЯДОЧИТЬ ПО
    ПоступлениеТоваровУслугТовары.Ссылка.Дата УБЫВ  
Показать

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

УПОРЯДОЧИТЬ ПО
    ЗакупкиОстаткиИОбороты.Регистратор.Дата УБЫВ
Показать
7. SedovSU@mail.ru 292 19.04.19 13:33 Сейчас в теме
(4) ну вот максимально для чего. Вот смотрите например у вас на одну дату получилось два прихода с разной цено - тогда вам нужно будет взять какую то одну ведь запись - поэтому можно взять максимальную. А вот если использовать сумма(цена) - это чуть чуть не верный подход в виду того что если будет на одну дату две цены - то запрос их суммирует, а так не должно
8. ulvi96 19.04.19 13:47 Сейчас в теме
(7)Я понимаю но нам надо это (картинке). Как могу отображать это.
Прикрепленные файлы:
9. SedovSU@mail.ru 292 19.04.19 13:52 Сейчас в теме
(8) Вот в этот отчет допишите,

МАКСИМУ(Цена),
МАКСИМУ(Дата);
СГРУППИРОВАТЬ ПО Номенклатура

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

СГРУППИРОВАТЬ ПО 
ПоступлениеТоваровУслугТовары.Номенклатура
Показать
5. ulvi96 19.04.19 13:17 Сейчас в теме
(2)Можете объяснить почему здесь в результате последняя цена пусто. С консулам смотрю нечего не отображаются.
ВЫБРАТЬ 
Закупка.Контрагент, 
Закупка.Номенклатура, 
Закупка.КоличествоПриход КАК Количество, 
Закупка.ЦенаПриход КАК Цена, 
Закупка.СуммаПриход КАК Сумма 
ПОМЕСТИТЬ втЗакупки 
ИЗ 
РегистрНакопления.Закупки.ОстаткиИОбороты(, , , , ) КАК Закупка 
; 

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

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

УПОРЯДОЧИТЬ ПО
	Дата УБЫВ
; 

////////////////////////////////////////////////////////////­//////////////////// 
ВЫБРАТЬ 
втЗакупки.Контрагент, 
втЗакупки.Номенклатура, 
втЗакупки.Количество КАК Количество, 
втЗакупки.Цена КАК Цена, 
втЗакупки.Сумма КАК Сумма, 
втПоступление.ПоследняяЦена КАК ПоследняяЦена 
ИЗ 
втЗакупки КАК втЗакупки 
ЛЕВОЕ СОЕДИНЕНИЕ втПоступление КАК втПоступление 
ПО втЗакупки.Номенклатура= втПоступление.Номенклатура 
Показать
6. SedovSU@mail.ru 292 19.04.19 13:29 Сейчас в теме
(5) да могу обяснить. Смотрите у вас написано в запросе по таблице втПоступление - ВЫБРАТь ПЕРВЫЕ 1. То есть из всего регистра вас программа выберет только одну запись, а нужно не одну, должна быть по одной по каждой номенклатуре.

Вот запрос такой пробуйте и все получиться

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

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

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

////////////////////////////////////////////////////////////­//////////////////// 
ВЫБРАТЬ 
втЗакупки.Контрагент, 
втЗакупки.Номенклатура, 
втЗакупки.Количество КАК Количество, 
втЗакупки.Цена КАК Цена, 
втЗакупки.Сумма КАК Сумма, 
втПоступление.ПоследняяЦена КАК ПоследняяЦена 
ИЗ 
втЗакупки КАК втЗакупки 
ЛЕВОЕ СОЕДИНЕНИЕ втПоступление КАК втПоступление 
ПО втЗакупки.Номенклатура= втПоступление.Номенклатура
Показать
10. Oldsad 22.04.19 07:29 Сейчас в теме
(6)
ВЫБРАТЬ 
МАКСИМУМ(ПоступлениеТоваровУслугТовары.Цена) КАК ПоследняяЦена, 
ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, 
МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) 
ПОМЕСТИТЬ втПоступление 
ИЗ 
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары 

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

таким образом вы получите максимальную, а не последнюю цену
11. SedovSU@mail.ru 292 22.04.19 07:42 Сейчас в теме
(10) Почему??? ведь еще есть и максимум по дате?? то есть по логике возьмется номенклатура которая имеет максимальную дату прихода с максимальной ценой на какой то период! или не правильно я понимаю
12. Oldsad 22.04.19 08:49 Сейчас в теме
ВЫБРАТЬ
	МАКСИМУМ(ПриобретениеТоваровУслугТовары.Ссылка.Дата) КАК Дата,
	ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ втНоменклатураДаты
ИЗ
	Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
	ПоступлениеТоваровУслугТовары.Ссылка.Проведен
	И ПоступлениеТоваровУслугТовары.Номенклатура В
			(ВЫБРАТЬ
				втЗакупки.Номенклатура
			ИЗ
				втЗакупки)

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

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

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

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

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)