|
Как получить динамические цены | ☑ | ||
---|---|---|---|---|
0
Виталий777
08.10.17
✎
00:20
|
Всем привет.
Нужен прайс с использованием скидок по ценовым группам. Вроде все сделал, работает. Но появилась проблема, Если у клиента динамический тип цен, тогда прайс не формируется. Так как динамические цены нигде не хранятся, как их вычислить??? Код: Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ЦеныНоменклатурыСрезПоследних.Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения, | ЦеныНоменклатурыСрезПоследних.Валюта, | СкидкиНаценкиПоЦеновымГруппамСрезПоследних.ПроцентСкидкиНаценки, | ЦеныНоменклатурыСрезПоследних.Цена - ЦеныНоменклатурыСрезПоследних.Цена * СкидкиНаценкиПоЦеновымГруппамСрезПоследних.ПроцентСкидкиНаценки / 100 КАК Цена2 |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиНаценкиПоЦеновымГруппам.СрезПоследних КАК СкидкиНаценкиПоЦеновымГруппамСрезПоследних | ПО ЦеныНоменклатурыСрезПоследних.Номенклатура.ЦеноваяГруппа = СкидкиНаценкиПоЦеновымГруппамСрезПоследних.ЦеноваяГруппа | И ЦеныНоменклатурыСрезПоследних.ТипЦен = СкидкиНаценкиПоЦеновымГруппамСрезПоследних.ПолучательСкидки.ТипЦен |ГДЕ | ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен"; Если Номенклатура1.Количество()>0 Тогда Запрос.Текст=Запрос.Текст+" | И ЦеныНоменклатурыСрезПоследних.Номенклатура В ИЕРАРХИИ (&Номенклатура1)"; КонецЕсли; Если Номенклатура2.Количество()>0 Тогда Запрос.Текст=Запрос.Текст+" | И ЦеныНоменклатурыСрезПоследних.Номенклатура НЕ В ИЕРАРХИИ (&Номенклатура2)"; КонецЕсли; Запрос.УстановитьПараметр("Дата",Дата); Запрос.УстановитьПараметр("Номенклатура1",Номенклатура1); Запрос.УстановитьПараметр("Номенклатура2",Номенклатура2); Запрос.УстановитьПараметр("ТипЦен",ТипЦен); Результат=Запрос.Выполнить(); ТЗцены=Результат.Выгрузить(); МассивНоменклатуры=ТЗцены.ВыгрузитьКолонку("Номенклатура"); МассивРодителей=Новый Массив; Родитель=0; Для каждого ЭлементМассиваНоменклатура Из МассивНоменклатуры Цикл Если Родитель<>ЭлементМассиваНоменклатура.Родитель Тогда ТекРодитель=ЭлементМассиваНоменклатура.Родитель; Пока ТекРодитель<>Справочники.Номенклатура.ПустаяСсылка() Цикл Если МассивРодителей.Найти(ТекРодитель)=Неопределено Тогда МассивРодителей.Добавить(ТекРодитель); КонецЕсли; ТекРодитель=ТекРодитель.Родитель; КонецЦикла; Родитель=ЭлементМассиваНоменклатура.Родитель; КонецЕсли; КонецЦикла; Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В(&МассивНоменклатуры) | ИЛИ Номенклатура.Ссылка В(&МассивРодителей) | |УПОРЯДОЧИТЬ ПО | Номенклатура.Наименование ИЕРАРХИЯ"; Запрос.УстановитьПараметр("МассивНоменклатуры",МассивНоменклатуры); Запрос.УстановитьПараметр("МассивРодителей",МассивРодителей); Результат=Запрос.Выполнить(); // ТабДок=Новый ТабличныйДокумент; Макет=ЭтотОбъект.ПолучитьМакет("Макет"); ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок"); ОбластьШапкаТаблицы=Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьГруппа=Макет.ПолучитьОбласть("Группа"); ОбластьЭлемент=Макет.ПолучитьОбласть("Элемент"); ОбластьЗаголовок.Параметры.Организация=ЭлементыФормы.Организация.Значение; ОбластьЗаголовок.Параметры.Контрагент=Контрагент; ОбластьЗаголовок.Параметры.Дата="на дату "+Формат(Дата,"ДФ=dd.MM.yyyy"); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи=Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.Ссылка.ЭтоГруппа Тогда ТекОбласть=ОбластьГруппа; Иначе // ЕдиницаИзмерения=ВыборкаДетальныеЗаписи.Ссылка.ЕдиницаХраненияОстатков; Цена=0; // ПараметрыОтбора=Новый Структура; ПараметрыОтбора.Вставить("Номенклатура",ВыборкаДетальныеЗаписи.Ссылка); Строки_ТЗцены=ТЗцены.НайтиСтроки(ПараметрыОтбора); Если Строки_ТЗцены.Количество()>0 Тогда ЕдиницаИзмерения=Строки_ТЗцены[0].ЕдиницаИзмерения; Валюта=Строки_ТЗцены[0].Валюта; Цена=Строки_ТЗцены[0].Цена; КонецЕсли; Если Цена>0 Тогда Цена=Строки_ТЗцены[0].Цена2; КонецЕсли; ТекОбласть=ОбластьЭлемент; ТекОбласть.Параметры.ЕдиницаИзмерения=ЕдиницаИзмерения; ТекОбласть.Параметры.Валюта=Валюта; ТекОбласть.Параметры.Цена=Цена; КонецЕсли; ТекОбласть.Параметры.Номенклатура=ВыборкаДетальныеЗаписи.Ссылка; ТабДок.Вывести(ТекОбласть,ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.ОтображатьСетку=Ложь; ТабДок.ОтображатьЗаголовки=Ложь; ТабДок.ТолькоПросмотр=Истина; ТабДок.Показать(); |
|||
1
Злопчинский
08.10.17
✎
00:21
|
(0) "Так как динамические цены нигде не хранятся, как их вычислить??"
- очевидно так же как вычисляются при их появлении в типовых местах типовых конфигураций... |
|||
2
Виталий777
08.10.17
✎
00:27
|
ожидал конечно более конкретного ответа ...
|
|||
3
Злопчинский
08.10.17
✎
00:32
|
- "Я хренею с вас, дорогая редакция..." пишет нам девочка Маша. И мы ей - верим!!!
|
|||
4
ildary
08.10.17
✎
07:46
|
(2) Даю конкретный ответ - предварительно рассчитываем динамические цены и суем их в запрос. На вопрос "Как?" - отвечаю - стуча по клавишам в конфигураторе.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |