Задачка на Специалиста

все праздники промучался, но так и не нашел решения задачи 2.2 сборника задач для подготовки к специалисту по УТ. по условию задачи нужно доработать прайс-лист, чтобы его можно было формировать в валютах видов цен либо в одной валюте, которая выбирается в диалоге. когда валюта указана, то все работает отлично, но когда нет, то выходит ошибка о том, что не указано значение параметра, а мне его и не нужно указывать, я хочу, чтобы отчет формировался “по старому”, т.е. так как в конфигурации. вот в этом затык, получается, никак не могу найти решение, подскажите пожалуйста или намекните в какую хотя бы сторону смотреть?

Подписаться
Уведомить о
guest
7 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
kostik_love
kostik_love
12 лет назад

вы добавляете параметр в наборе данных?

admin
12 лет назад

Не очень понятно. Какой должна быть валюта “по умолчанию” и как вы ее указываете?

VladC
12 лет назад

по умолчанию у каждого вида цены своя валюта (отчет Прайс-лист в УТ), по условию задачи нужно добавить возможность выбора валюты отчета так, чтобы все цены пересчитались в этой валюте. т.е. если валюта указана, то все цены в ней, если нет, то каждый вид цен должен формироваться в своей валюте.
ситуация, когда валюта указана, у меня отработана, я не могу пока сделать так, чтобы при НЕуказании валюты цены выводились в своих валютах, т.к. если я не указываю валюту, то выходит ошибка о том, что не указан параметр ВалютаОтчета. параметр ВалютаОтчета – это параметр из условия к виртуальной таблице курсов валют, откуда я получаю нужные мне курс и кратность.

kostik_love
kostik_love
12 лет назад

если вот такая ошибка:
Ошибка компоновки макета
по причине:
Не установлено значение параметра “ВалютаОтчета”, то у этого параметра свойство “Запрещать незаполненные значения” нужно выставить в ложь
или
использовать не параметр, а отбор- в этом случае при установленном отборе система компоновки сама добавит нужный параметр в виртуальную таблицу
)))

VladC
12 лет назад

хотя и отбор здесь не получится использовать, мне кажется, поскольку при неуказании валюты отчет должен формироваться “по старому”, как в конфигурации. мне всё-таки кажется, что нужно использовать параметр. решение вижу таким:
Выбор Когда &ВалютаОтчета=Null Тогда
ЦеныНоменклатуры.Цены
Иначе
ЦеныНоменклатуры.Цены*КурсВалютыЦены.Курс/КурсВалютыОтчета.Курс
Конец
загвоздка только в ругачке на не указанный параметр, который должен быть помечен как Null. а как с отбором решать что-то совсем не представляю

VladC
12 лет назад

да, ошибка именно такая, но у параметра не установлен флаг “Запрещать незаполненные значения”, да и вообще я так понимаю, это для пользователей, т.е. отчет даже не начнет формироваться если установлен этот флаг и не заполнен параметр, а здесь немного другая ситуация – пользователю параметр указывать не обязательно, но для СКД он обязателен. похоже остается только отбор. спасибо за ответ.

Головаченко Дима
Головаченко Дима
12 лет назад

Можно использовать следующее условие в тексте запроса:
Выбор Когда &ОтборПоВалюте Тогда
КурсВалютыЦены.Валюта = &ВалютаОтчета
Иначе
Истина
Конец
В коде, в месте передачи параметров в СКД добавить еще один параметр “ОтборПоВалюте”, который приравнять к заполненности реквизита “Валюта”. Плюс этого метода в том, что если валюта не указана, то по условию в запросе параметр “ВалютаОтчета” не будет инициализирован и его заполненность следовательно не будет проверяться. Я так очень часто делаю, так что рабочесть метода гарантирую.
Только условие нужно накладывать на таблицу валют.