Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
04 июн 2024, 09:22

Ведомость по продукции на складах в ценах номенклатуры в 1С

Автор 1cwiki, 05 фев 2016, 14:34

0 Пользователей и 1 гость просматривают эту тему.

1cwiki

Первое, что нужно сделать, это в параметры схемы компоновки отчета под названием «ВедомостьПоТоварамНаСкладахВЦенахНоменклатуры» добавить новый параметр с именем «ВалютаОтчёта». Тип — «СправочникСсылка.Валюта», который необходимо использовать всегда:

Скрин 1

Далее добавьте новое поле в итоговый запрос, а также следующую конструкцию:

ВЫБОР
КОГДА &ВалютаОтчёта = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
ТОГДА ВидыЦен.ВалютаЦены
ИНАЧЕ &ВалютаОтчёта
КОНЕЦ КАК ВалютаДляОтчёта

А смысл данной конструкции состоит в том, что система будет брать валюту из вида цен, если такая не заполнена в параметрах.

С целью упрощения нужно будет итоговую таблицу поместить во временную таблицу с именем «ПредИтог». После этого создайте  новый запрос для того, что бы туда поместить всю предыдущую таблицу, а также 2 новые виртуальные: «Курсы Отчёта» и «Курсы Цены» (срез последних регистра сведений с именем «КурсыВалют»):

Скрин 2

Далее для 2 новых временных таблиц внесите параметр под названием «&Период»:

Скрин 3

Таблица с именем «Курсы Цены» имеет курс, что указан для этого вида цена, а таблица под названием «Курсы Отчёта» имеет курс для валюты, которая указана в отчете.

После этого таблицу «Курсы Цены» свяжите по полю с именем  «Валюта», а таблицу под названием «Курсы Отчёта» - по полю под названием «Валюта Для Отчета».

Скрин 4

Далее замените поля сумм «Сумма Начальный Остаток», «Сумма Приход», «Сумма Расход» и «Сумма КонечныйОстаток» на новые, вычисляемые поля, с помощью добавления конструкции «* Курсы Цены. Курс * Курсы Отчёта. Кратность/(Курсы Цены. Кратность * Курсы Отчёта. Курс)»:

ПредИтог.СуммаНачальныйОстаток * КурсыЦены.Курс * КурсыОтчёта.Кратность / (КурсыЦены.Кратность * КурсыОтчёта.Курс) КАК СуммаНачальныйОстаток,
ПредИтог.СуммаПриход * КурсыЦены.Курс * КурсыОтчёта.Кратность / (КурсыЦены.Кратность * КурсыОтчёта.Курс) КАК СуммаПриход,
ПредИтог.СуммаРасход * КурсыЦены.Курс * КурсыОтчёта.Кратность / (КурсыЦены.Кратность * КурсыОтчёта.Курс) КАК СуммаРасход,
ПредИтог.СуммаКонечныйОстаток * КурсыЦены.Курс * КурсыОтчёта.Кратность / (КурсыЦены.Кратность * КурсыОтчёта.Курс) КАК СуммаКонечныйОстаток,

Что касается запроса, то мы сделали все. Теперь переходим к настройкам отображения отчета.

Скрин 5

После этого включите в пользовательские настройки новые параметры. Одному из них – параметру под названием «Период» задайте представление с именем «Дата курса валюты», с целью лучшей наглядности.

Потом в группировках и выбранных полях поле под названием «Валюта» замените  на поле с именем «ВалютаДляОтчёта»:

Скрин 6

С целью реализации требования заполните поля с именем «Валюты» в момент выбора типа цены нужно сформировать форму отчета по умолчанию и в обработчик «При Изменении»:

Скрин 7

Где прописать нижеуказанный программный код:

&НаКлиенте
Процедура КомпоновщикНастроекПользовательскиеНастройкиПриИзменении(Элемент)
Настройка = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ПолучитьОбъектПоИдентификатору(Элемент.ТекущаяСтрока);
Если Настройка <> Неопределено
И Настройка.Параметр = Новый ПараметрКомпоновкиДанных(«ВидЦены») тогда
НастройкаВалюты = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(Отчет.КомпоновщикНастроек.ПользовательскиеНастройки,»ВалютаОтчёта»);
Если НастройкаВалюты <> Неопределено Тогда
НастройкаВалюты.Значение=ВалютаВидаЦены(Настройка.Значение);
Конецесли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВалютаВидаЦены(ВидЦены)
Возврат ВидЦены.ВалютаЦены;
КонецФункции

Теги:

Похожие темы (4)

Рейтинг@Mail.ru

Поиск