Пройтись по номенклатуре, найти цену розничную , если цена отличается от цены провести документ Установка Цен Номенклатуры

1. SvetaBr 23.02.18 11:51 Сейчас в теме
Добрый день!

Как решить такую задачу, по всей номенклатуре по каждой позиции запросить розничную цену и цену со скидкой 30%
Взять розничную цену вычислить ее с учетом скидки 30% и сравнить с ценой которая стоит в позиции Скидка30% ,
если цена отличается то в справочник нужно записать правильную цену и провести документ Установка Цен Номенклатуры.
Вот похоже сформулировала задачу.

РозничнаяЦена = справочники.ВидыЦен.НайтиПоНаименованию("Розничная");
Скидка30Цена = справочники.ВидыЦен.НайтиПоНаименованию("Скидка30");

Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
// и вот тут не знаю как выбрать цены

КонецЦикла;


не судите строго, еще учусь.
По теме из базы знаний
Найденные решения
3. independ 1520 23.02.18 15:22 Сейчас в теме
(1) Нужен запрос
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЦеныРозничные.Номенклатура,
		|	ЦеныРозничные.Цена КАК ЦенаРозничная,
		|	ЕСТЬNULL(ЦеныСкидка30.Цена, 0) КАК Цена30Скидка
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &РозничнаяЦена) КАК ЦеныРозничные
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Скидка30Цена) КАК ЦеныСкидка30
		|		ПО ЦеныРозничные.Номенклатура = ЦеныСкидка30.Номенклатура";
	
	Запрос.УстановитьПараметр("РозничнаяЦена", РозничнаяЦена);
	Запрос.УстановитьПараметр("Скидка30Цена", Скидка30Цена);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если Выборка.ЦенаРозничная*0,3<>Выборка.Цена30Скидка Тогда

                КонецЕсли;
	КонецЦикла;
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Показать


И Условие лучше добавить в запрос
		|ГДЕ
		|	ЦеныРозничные.Цена * 0.3 <> ЦеныСкидка30.Цена";
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DJDUH 17 23.02.18 13:30 Сейчас в теме
(1) по регистру смотреть (ценыНоменклатуры)
3. independ 1520 23.02.18 15:22 Сейчас в теме
(1) Нужен запрос
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ЦеныРозничные.Номенклатура,
		|	ЦеныРозничные.Цена КАК ЦенаРозничная,
		|	ЕСТЬNULL(ЦеныСкидка30.Цена, 0) КАК Цена30Скидка
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &РозничнаяЦена) КАК ЦеныРозничные
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Скидка30Цена) КАК ЦеныСкидка30
		|		ПО ЦеныРозничные.Номенклатура = ЦеныСкидка30.Номенклатура";
	
	Запрос.УстановитьПараметр("РозничнаяЦена", РозничнаяЦена);
	Запрос.УстановитьПараметр("Скидка30Цена", Скидка30Цена);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если Выборка.ЦенаРозничная*0,3<>Выборка.Цена30Скидка Тогда

                КонецЕсли;
	КонецЦикла;
	
	//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Показать


И Условие лучше добавить в запрос
		|ГДЕ
		|	ЦеныРозничные.Цена * 0.3 <> ЦеныСкидка30.Цена";
4. SvetaBr 25.02.18 15:05 Сейчас в теме
(3) Спасибо большое! все получилось.
Оставьте свое сообщение

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