|
УТ 11 произвольный алгоритм | ☑ | ||
---|---|---|---|---|
0
varyag
23.08.16
✎
11:29
|
Здравствуйте!
Стоит задача разработать вид цены с произвольным алгоритмом. По первоначальной постановке задачи всё работало, но уточнения и дополнительные требования к алгоритму привели в тупик. В общем в консоли СКД все работает, а когда загружаю схему компоновки в ВидЦены - там начинаются чудеса. Т.е. в консоли цена из таблицы ЦеныНоменкдатурыСрезПоследних берется на ДатуДокумента, а при расчете ВидаЦены в прайсе Цена берется самая последняя. Вот история изменения цен: http://storage4.static.itmages.ru/i/16/0823/h_1471940089_8884673_9a81b85f9c.png Вот значение в консоли на дату до последнего изменения цены: http://storage4.static.itmages.ru/i/16/0823/h_1471940089_8717045_35aa8ccd9c.png Вот консоль после последнего изменения цены: http://storage4.static.itmages.ru/i/16/0823/h_1471940089_5891339_bd78139db9.png А вот что считается в прайсе (специально дату поставил даже до первого ввода цены): http://storage5.static.itmages.ru/i/16/0823/h_1471940089_7331743_ad9d605dc9.png Получается что в консоли отрабатывает нормально а реальной ситуации нет. Думал что ДатаДокумента берется просто текущая, но вывел в поле цена параметр ДатаДокумента, выразив как число, и дата оказалась не текущая а та что установлена в прайсе.. Алгоритм делал на основе типового алгоритма "Цены поступления". Но есть товары введенные вводом остатков или посредством сборки из комплектующих, для них цены установили руками и в дальнейшем при расчете если нет документа поступления и соответственно цены поступления, необходимо брать текущую цену на дату документа установки цен. Код запроса сюда лепить не стал, т.к. не знаю как сделать его сворачиваемым, а без этого он всю страницу займет. |
|||
1
varyag
23.08.16
✎
12:03
|
Никто не поможет? у меня кончились мысли куда копать, что проверять
|
|||
2
Cyberhawk
23.08.16
✎
12:24
|
Так там же два столбика - цена на дату и новая цена. В качестве ноыой цены он тебе пишет последнюю актуальную. В качестве цены на дату - пусто. Что не так?
|
|||
3
varyag
24.08.16
✎
04:52
|
(2) Ты внимательно посмотри. 1й столбец - действующая цена на 23.07 - её нет, т.к. первая установка цен только 25.07. Мы расчитываем цену на 24.07 - и она соответственно тоже должна равняться нулю. Если я ставлю дату например 26.07 тогда в 1м столбце(текущая цена) получаем 44000, и во втором тоже должно быть 44000, т.к. 45000 действует с 28.07. Но получаю вот что:
http://storage2.static.itmages.ru/i/16/0824/h_1472003528_2793987_d55e1eedb4.png |
|||
4
varyag
24.08.16
✎
11:53
|
поле Цена прописал как
ВЫРАЗИТЬ(ДЕНЬ(ВТ_ЦеныСрезПоследних.Период) КАК ЧИСЛО(10, 2)) в итоге в прайсе выводится: http://storage9.static.itmages.ru/i/16/0824/h_1472028795_4901384_b0841ea38f.png |
|||
5
varyag
24.08.16
✎
11:54
|
Уже удалил из запроса все лишнее и оставил так:
ВЫБРАТЬ РАЗЛИЧНЫЕ Сегменты.Номенклатура, Сегменты.Характеристика, ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры ИЗ РегистрСведений.НоменклатураСегмента КАК Сегменты {ГДЕ Сегменты.Сегмент.* КАК СегментНоменклатуры, Сегменты.Номенклатура.* КАК Номенклатура, Сегменты.Характеристика.* КАК Характеристика} ИНДЕКСИРОВАТЬ ПО Сегменты.Номенклатура, Сегменты.Характеристика, ИспользуетсяОтборПоСегментуНоменклатуры ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика, МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК МаксимальнаяДата ПОМЕСТИТЬ ВременнаяТаблица_1 ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата <= КОНЕЦПЕРИОДА(&ДатаДокумента, ДЕНЬ) И ПоступлениеТоваровУслугТовары.Ссылка.Проведен И НЕ &ЭтоВводНаОсновании {ГДЕ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика} СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугТовары.Характеристика, ПоступлениеТоваровУслугТовары.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Характеристика КАК Характеристика, МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка) КАК ДокументПоступления ПОМЕСТИТЬ ВременнаяТаблица_2 ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица_1 КАК Таблица ПО ПоступлениеТоваровУслугТовары.Номенклатура = Таблица.Номенклатура И ПоступлениеТоваровУслугТовары.Характеристика = Таблица.Характеристика И ПоступлениеТоваровУслугТовары.Ссылка.Дата = Таблица.МаксимальнаяДата ГДЕ НЕ &ЭтоВводНаОсновании И ПоступлениеТоваровУслугТовары.Ссылка.Проведен СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугТовары.Характеристика, ПоступлениеТоваровУслугТовары.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыДокумента.Номенклатура КАК Номенклатура, ТоварыДокумента.Характеристика КАК Характеристика, ТоварыДокумента.Упаковка КАК Упаковка, ТоварыДокумента.КоличествоУпаковок КАК КоличествоУпаковок, ЕСТЬNULL(ТоварыДокумента.Упаковка.Коэффициент, 1) КАК Коэффициент, ВЫРАЗИТЬ(ВЫБОР КОГДА ВидыЦен.ЦенаВключаетНДС И ТоварыДокумента.Ссылка.ЦенаВключаетНДС ИЛИ НЕ ВидыЦен.ЦенаВключаетНДС И НЕ ТоварыДокумента.Ссылка.ЦенаВключаетНДС ТОГДА ТоварыДокумента.Цена КОГДА ВидыЦен.ЦенаВключаетНДС И НЕ ТоварыДокумента.Ссылка.ЦенаВключаетНДС ТОГДА (ТоварыДокумента.Сумма + ТоварыДокумента.СуммаНДС) / ТоварыДокумента.КоличествоУпаковок КОГДА НЕ ВидыЦен.ЦенаВключаетНДС И ТоварыДокумента.Ссылка.ЦенаВключаетНДС ТОГДА (ТоварыДокумента.Сумма - ТоварыДокумента.СуммаНДС) / ТоварыДокумента.КоличествоУпаковок КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена, ТоварыДокумента.Ссылка.Валюта КАК Валюта ПОМЕСТИТЬ ТаблицаЦены ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыДокумента ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВременнаяТаблица_2 КАК Таблица ПО ТоварыДокумента.Номенклатура = Таблица.Номенклатура И ТоварыДокумента.Характеристика = Таблица.Характеристика И ТоварыДокумента.Ссылка = Таблица.ДокументПоступления ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен ПО (ВидыЦен.Ссылка = &ВидЦены) ГДЕ НЕ &ЭтоВводНаОсновании И ТоварыДокумента.КоличествоУпаковок <> 0 И ТоварыДокумента.Ссылка.Проведен {ГДЕ ((ТоварыДокумента.Номенклатура, ТоварыДокумента.Характеристика) В (ВЫБРАТЬ ОтборПоСегментуНоменклатуры.Номенклатура, ОтборПоСегментуНоменклатуры.Характеристика ИЗ ОтборПоСегментуНоменклатуры ГДЕ ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика, ТоварыДокументаВводНаОсновании.Упаковка, ТоварыДокументаВводНаОсновании.КоличествоУпаковок, ЕСТЬNULL(ТоварыДокументаВводНаОсновании.Упаковка.Коэффициент, 1), ВЫРАЗИТЬ(ВЫБОР КОГДА ВидыЦен.ЦенаВключаетНДС И ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ИЛИ НЕ ВидыЦен.ЦенаВключаетНДС И НЕ ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ТОГДА ТоварыДокументаВводНаОсновании.Цена КОГДА ВидыЦен.ЦенаВключаетНДС И НЕ ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ТОГДА (ТоварыДокументаВводНаОсновании.Сумма + ТоварыДокументаВводНаОсновании.СуммаНДС) / ТоварыДокументаВводНаОсновании.КоличествоУпаковок КОГДА НЕ ВидыЦен.ЦенаВключаетНДС И ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ТОГДА (ТоварыДокументаВводНаОсновании.Сумма - ТоварыДокументаВводНаОсновании.СуммаНДС) / ТоварыДокументаВводНаОсновании.КоличествоУпаковок КОНЕЦ КАК ЧИСЛО(15, 2)), ТоварыДокументаВводНаОсновании.Ссылка.Валюта ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ТоварыДокументаВводНаОсновании ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен ПО (ВидыЦен.Ссылка = &ВидЦены) ГДЕ ТоварыДокументаВводНаОсновании.Ссылка = &Основание И ТоварыДокументаВводНаОсновании.КоличествоУпаковок <> 0 И ТоварыДокументаВводНаОсновании.Ссылка.Проведен И &ЭтоВводНаОсновании {ГДЕ ((ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика) В (ВЫБРАТЬ ОтборПоСегментуНоменклатуры.Номенклатура, ОтборПоСегментуНоменклатуры.Характеристика ИЗ ОтборПоСегментуНоменклатуры ГДЕ ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика, ТоварыДокументаВводНаОсновании.Упаковка, ТоварыДокументаВводНаОсновании.КоличествоУпаковок, ЕСТЬNULL(ТоварыДокументаВводНаОсновании.Упаковка.Коэффициент, 1), ВЫРАЗИТЬ(ВЫБОР КОГДА ВидыЦен.ЦенаВключаетНДС И ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ИЛИ НЕ ВидыЦен.ЦенаВключаетНДС И НЕ ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ТОГДА ТоварыДокументаВводНаОсновании.Цена КОГДА ВидыЦен.ЦенаВключаетНДС И НЕ ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ТОГДА (ТоварыДокументаВводНаОсновании.Сумма + ТоварыДокументаВводНаОсновании.СуммаНДС) / ТоварыДокументаВводНаОсновании.КоличествоУпаковок КОГДА НЕ ВидыЦен.ЦенаВключаетНДС И ТоварыДокументаВводНаОсновании.Ссылка.ЦенаВключаетНДС ТОГДА (ТоварыДокументаВводНаОсновании.Сумма - ТоварыДокументаВводНаОсновании.СуммаНДС) / ТоварыДокументаВводНаОсновании.КоличествоУпаковок КОНЕЦ КАК ЧИСЛО(15, 2)), ТоварыДокументаВводНаОсновании.Ссылка.Валюта ИЗ Документ.ЗаказПоставщику.Товары КАК ТоварыДокументаВводНаОсновании ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен ПО (ВидыЦен.Ссылка = &ВидЦены) ГДЕ ТоварыДокументаВводНаОсновании.Ссылка = &Основание И ТоварыДокументаВводНаОсновании.КоличествоУпаковок <> 0 И ТоварыДокументаВводНаОсновании.Ссылка.Проведен И &ЭтоВводНаОсновании {ГДЕ ((ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика) В (ВЫБРАТЬ ОтборПоСегментуНоменклатуры.Номенклатура, ОтборПоСегментуНоменклатуры.Характеристика ИЗ ОтборПоСегментуНоменклатуры ГДЕ ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыДокументаВводНаОсновании.НоменклатураОприходование, ТоварыДокументаВводНаОсновании.ХарактеристикаОприходование, ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка), ТоварыДокументаВводНаОсновании.Количество, 1, ВЫРАЗИТЬ(ВЫБОР КОГДА ВидыЦен.ЦенаВключаетНДС ТОГДА ТоварыДокументаВводНаОсновании.Цена КОГДА НЕ ВидыЦен.ЦенаВключаетНДС ТОГДА ТоварыДокументаВводНаОсновании.Цена - ТоварыДокументаВводНаОсновании.Цена * ВЫБОР КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) ТОГДА 0.18 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0) ТОГДА 0 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) ТОГДА 0 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118) ТОГДА 0.18 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110) ТОГДА 0.1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ЧИСЛО(15, 2)), Константы.ВалютаУправленческогоУчета ИЗ Документ.ПорчаТоваров.Товары КАК ТоварыДокументаВводНаОсновании ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен ПО (ВидыЦен.Ссылка = &ВидЦены) ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы ПО (ИСТИНА) ГДЕ ТоварыДокументаВводНаОсновании.Ссылка = &Основание И ТоварыДокументаВводНаОсновании.Количество <> 0 И ТоварыДокументаВводНаОсновании.Ссылка.Проведен И &ЭтоВводНаОсновании {ГДЕ ((ТоварыДокументаВводНаОсновании.НоменклатураОприходование, ТоварыДокументаВводНаОсновании.ХарактеристикаОприходование) В (ВЫБРАТЬ ОтборПоСегментуНоменклатуры.Номенклатура, ОтборПоСегментуНоменклатуры.Характеристика ИЗ ОтборПоСегментуНоменклатуры ГДЕ ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика, ТоварыДокументаВводНаОсновании.Упаковка, ТоварыДокументаВводНаОсновании.КоличествоУпаковок, ЕСТЬNULL(ТоварыДокументаВводНаОсновании.Упаковка.Коэффициент, 1), ВЫРАЗИТЬ(ВЫБОР КОГДА ВидыЦен.ЦенаВключаетНДС ТОГДА ТоварыДокументаВводНаОсновании.Цена КОГДА НЕ ВидыЦен.ЦенаВключаетНДС ТОГДА ТоварыДокументаВводНаОсновании.Цена - ТоварыДокументаВводНаОсновании.Цена * ВЫБОР КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) ТОГДА 0.18 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС0) ТОГДА 0 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.БезНДС) ТОГДА 0 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18_118) ТОГДА 0.18 КОГДА ТоварыДокументаВводНаОсновании.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10_110) ТОГДА 0.1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ЧИСЛО(15, 2)), Константы.ВалютаУправленческогоУчета ИЗ Документ.ПрочееОприходованиеТоваров.Товары КАК ТоварыДокументаВводНаОсновании ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен ПО (ВидыЦен.Ссылка = &ВидЦены) ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы ПО (ИСТИНА) ГДЕ ТоварыДокументаВводНаОсновании.Ссылка = &Основание И ТоварыДокументаВводНаОсновании.КоличествоУпаковок <> 0 И ТоварыДокументаВводНаОсновании.Ссылка.Проведен И &ЭтоВводНаОсновании {ГДЕ ((ТоварыДокументаВводНаОсновании.Номенклатура, ТоварыДокументаВводНаОсновании.Характеристика) В (ВЫБРАТЬ ОтборПоСегментуНоменклатуры.Номенклатура, ОтборПоСегментуНоменклатуры.Характеристика ИЗ ОтборПоСегментуНоменклатуры ГДЕ ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ТаблицаЦены.Номенклатура КАК Номенклатура, ТаблицаЦены.Характеристика КАК Характеристика, ТаблицаЦены.Упаковка КАК Упаковка, ТаблицаЦены.Коэффициент КАК Коэффициент, ВЫБОР КОГДА &ВыборЦены = 1 ТОГДА ВЫРАЗИТЬ(Цены.МаксимальнаяЦенаЗаЕдиницу * ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2)) КОГДА &ВыборЦены = 2 ТОГДА ВЫРАЗИТЬ(Цены.МинимальнаяЦенаЗаЕдиницу * ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2)) КОГДА &ВыборЦены = 3 ТОГДА ВЫРАЗИТЬ(Цены.СредняяЦенаЗаЕдиницу * ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2)) ИНАЧЕ 0 КОНЕЦ КАК Цена, ТаблицаЦены.Валюта КАК Валюта ПОМЕСТИТЬ ВТ_ЦеныПоступления ИЗ ТаблицаЦены КАК ТаблицаЦены ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТаблицаЦены.Номенклатура КАК Номенклатура, ТаблицаЦены.Характеристика КАК Характеристика, МАКСИМУМ(ВЫРАЗИТЬ(ТаблицаЦены.Цена / ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) КАК МаксимальнаяЦенаЗаЕдиницу, МИНИМУМ(ВЫРАЗИТЬ(ТаблицаЦены.Цена / ТаблицаЦены.Коэффициент КАК ЧИСЛО(15, 2))) КАК МинимальнаяЦенаЗаЕдиницу, СУММА(ТаблицаЦены.Цена * ТаблицаЦены.КоличествоУпаковок) / СУММА(ТаблицаЦены.КоличествоУпаковок * ТаблицаЦены.Коэффициент) КАК СредняяЦенаЗаЕдиницу, ТаблицаЦены.Валюта КАК Валюта ИЗ ТаблицаЦены КАК ТаблицаЦены СГРУППИРОВАТЬ ПО ТаблицаЦены.Номенклатура, ТаблицаЦены.Характеристика, ТаблицаЦены.Валюта) КАК Цены ПО (Цены.Номенклатура = ТаблицаЦены.Номенклатура) И (Цены.Характеристика = ТаблицаЦены.Характеристика) И (Цены.Валюта = ТаблицаЦены.Валюта) ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТаблицаЦены.Номенклатура КАК Номенклатура, ТаблицаЦены.Характеристика КАК Характеристика, МАКСИМУМ(ТаблицаЦены.Коэффициент) КАК МаксимальныйКоэффициент, МИНИМУМ(ТаблицаЦены.Коэффициент) КАК МинимальныйКоэффициент ИЗ ТаблицаЦены КАК ТаблицаЦены СГРУППИРОВАТЬ ПО ТаблицаЦены.Номенклатура, ТаблицаЦены.Характеристика) КАК Коэффициенты ПО (Коэффициенты.Номенклатура = ТаблицаЦены.Номенклатура) И (Коэффициенты.Характеристика = ТаблицаЦены.Характеристика) ГДЕ ВЫБОР КОГДА &ВыборУпаковки = 1 ТОГДА ТаблицаЦены.Коэффициент = Коэффициенты.МаксимальныйКоэффициент КОГДА &ВыборУпаковки = 2 ТОГДА ТаблицаЦены.Коэффициент = Коэффициенты.МинимальныйКоэффициент ИНАЧЕ ЛОЖЬ КОНЕЦ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Характеристика, ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.Упаковка, ЦеныНоменклатурыСрезПоследних.Валюта, ЦеныНоменклатурыСрезПоследних.Период, ЦеныНоменклатурыСрезПоследних.Регистратор ПОМЕСТИТЬ ВТ_ЦеныСрезПоследних ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаДокумента)}, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних {ГДЕ ((ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Характеристика) В (ВЫБРАТЬ ОтборПоСегментуНоменклатуры.Номенклатура, ОтборПоСегментуНоменклатуры.Характеристика ИЗ ОтборПоСегментуНоменклатуры ГДЕ ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры))} ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ЦеныПоступления.Номенклатура, ВТ_ЦеныПоступления.Характеристика, ВТ_ЦеныПоступления.Валюта, ВТ_ЦеныПоступления.Цена, ВТ_ЦеныПоступления.Упаковка, ВТ_ЦеныПоступления.Коэффициент, "ЦеныПоступления" КАК Запрос ИЗ ВТ_ЦеныПоступления КАК ВТ_ЦеныПоступления ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_ЦеныСрезПоследних.Номенклатура, ВТ_ЦеныСрезПоследних.Характеристика, ВТ_ЦеныСрезПоследних.Валюта, ВЫРАЗИТЬ(ДЕНЬ(ВТ_ЦеныСрезПоследних.Период) КАК ЧИСЛО(10, 2)), ВТ_ЦеныСрезПоследних.Упаковка, 1, "ЦеныСрезПоследних" ИЗ ВТ_ЦеныСрезПоследних КАК ВТ_ЦеныСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦеныПоступления КАК ВТ_ЦеныПоступления ПО ВТ_ЦеныСрезПоследних.Номенклатура = ВТ_ЦеныПоступления.Номенклатура И ВТ_ЦеныСрезПоследних.Характеристика = ВТ_ЦеныПоступления.Характеристика ГДЕ ВТ_ЦеныПоступления.Номенклатура ЕСТЬ NULL |
|||
6
Cyberhawk
24.08.16
✎
11:55
|
Я правильно понял, что поведение первого столбца (цена на дату) тебя полностью устраивает?
|
|||
7
varyag
24.08.16
✎
12:01
|
(6) Правильно - это типовой механизм куда я не лез. Там просто отображается предыдущая цена, если она была задана. Косяк предполагаю в том, что в параметрах виртуальной таблицы Период я задаю на вкладке "Компоновка данных"
|
|||
8
Cyberhawk
24.08.16
✎
12:06
|
Теперь второй вопрос: почему считаешь, что в столбике "Новая цена" (который второй и тебя не устраивает) должна подставляться не последняя цена на конец времен, а цена на дату среза?
|
|||
9
varyag
24.08.16
✎
12:07
|
в общем похоже я все таки выяснил - если я задаю параметр период для ЦеныНоменклатурыСрезПоследних только на вкладке КомпоновкаДанных - то при расчете этот параметр игнорируется, если задаю только на вкладке Таблицы и поля - то появляется стандартный параметр Период на вкладке Параметры в СКД. Задал на обейх вкладка этот параметр как ДатаДокумента и все заработало.
|
|||
10
varyag
24.08.16
✎
12:08
|
(8) Потому что в параметрах таблицы я задавал параметр период, равный &ДатаДокумента. И в консоли СКД все нормально отрабатывало - посмотри скрин. Но в прайсе этот параметр игнгрировался
|
|||
11
varyag
24.08.16
✎
12:12
|
А форум действительно волшебный - сколько раз решались здесь проблемы, когда казалось же только бубен поможет)))
|
|||
12
Cyberhawk
24.08.16
✎
12:34
|
(9) Поздравляю
|
|||
13
varyag
24.08.16
✎
12:43
|
(12) Спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |