1С УТ 11. Доработка типовых отчетов – пересчет показателей в произвольную валюту. Задачи 2.1 – 2.2 сборника «1С: Специалист»

16.04.19

Разработка - Подготовка к аттестации

В сборнике задач для подготовки к экзамену «1С: Специалист» по конфигурированию и внедрению 1С: Управление торговлей 11 имеются задачи по доработке типовых отчетов, связанных пересчетом показателей в выбранную валюту на выбранную дату. В статье предлагается альтернативный способ решения, использующий возможности СКД без изменения типового текста запроса. Подход может применяться как при решении экзаменационных задач, так и на практике при доработках типовых отчетов, связанных с пересчетом валют.

Дано: Один из типовых отчетов "1С: УТ", связанный с выводом цен или стоимостей в одном из видов цен.

Требуется: дополнить(изменить) вывод выбранных цен(стоимостей в выбранном виде цен) выводом цен (стоимостей) в выбранной пользователем валюте.

Решение:

Понятно, что валюта цены и выбранная валюта может являться как рублями (валютой регламентированного учета), так и любой произвольной валютой из справочника.

Таким образом, необходимо рассмотреть 5 вариантов:

Валюта цены

Выбранная валюта

Способ вычисления цены в выбранной валюте

Рубли

Рубли

Не требуется

Не рубли

Рубли

Помножить на курс валюты цены и поделить на кратность валюты цены

Рубли

Не рубли

Разделить на курс выбранной валюты и помножить на кратность выбранной валюты

Не рубли

Не рубли (совпадает с валютой цены)

Не требуется

Не рубли

Не рубли (не совпадает с валютой цены)

Рассчитать по кросс-курсу:

Получить цену в рублях:

Помножить на курс валюты цены и поделить на кратность валюты цены

Пересчитать цену в выбранную валюту:

Разделить на курс выбранной валюты и помножить на кратность выбранной валюты

Последний вариант является наиболее обобщенным случаем. Под этот алгоритм расчета подходят все предыдущие варианты.

 

Сборник задач «1С: Специалист» УТ содержит как минимум 2 задачи по доработке типовых отчетов, в которых необходимо производить пересчет показателей в выбранную пользователем валюту. В задаче 2.1 – необходимо заменить существующие данные в колонке. В задаче 2.2 – требуется добавить новую колонку для вывода. Как на портале Инфостарт, так и на других многочисленных ресурсах опубликованы решения типовых задач из Сборника. Отдельно хочется отметить публикацию //infostart.ru/public/573102/, где приведены наиболее обстоятельные законченные варианты решений.

Что же касается описанных выше заданий, то по ним предлагается наиболее очевидный способ решения. Отчет СКД дополняется пересчетом имеющихся данных в выбранную валюту.

Технически это выглядит следующим образом:

  1. В отчет добавляется виртуальная таблица – Регистр сведений – Валюты - СрезПоследних. В параметрах виртуальной таблицы указывается Период = &ВыбДата и Валюта = {Цена}.Валюта. Задается имя таблицы – ВалютаЦены.
  2. В отчет добавляется вторая виртуальная таблица – Регистр сведений – Валюты - СрезПоследних. В параметрах виртуальной таблицы указывается Период = &ВыбДата и Валюта = &ВыбВалюта. Задается имя таблицы – ВалютаОтчета.
  3. Добавляются новые (или заменяются старые) поля расчета показателей по принципу.

= {Показатель}* ВалютаЦены.Курс*ВалютаОтчета.Кратность/ ВалютаЦены.Кратность/ ВалютаОтчета.Курс.

  1. Параметры отчета ВыбВалюта и ВыбДата добавляются в изменяемые параметры. Для гарантии заполнения следует включить требование обязательностьи заполнения.

 

В одной из задач про дату пересчета ничего не сказано. Можно спросить об этом экзаменатора. А можно понимать под датой пересчета – текущую дату. Для этого запретить изменение этого параметра пользователем, а в поле выражение задать формулу ТекущаяДата().

 

Решение очевидное и несложное, если не считать необходимость задания громоздких формул курсов и кратностей.

Однако на текущем релизе УТ 11 данное решение, увы, не заработало. Причина в том, что текст запроса, введенный в ЭХД в отчетах (по крайне мере тех, которые требуется доработать в данных задачах) в процессе формирования отчетов, подвергается программной доработке. Таким образом, если «родной» текст запроса изменен, то отчет «спотыкается» в связи с невозможностью его программно изменить.

Выкрутиться из этой ситуации, на мой взгляд, можно только программной подменой текста запроса после выполнения всех типовых преобразований. На мой взгляд, очень трудоемкое дело. Кстати, если кому-то известны другие варианты выхода из этой ситуации, напишите, пожалуйста.

 

Я же нашел иной вариант решения, избавляющий от необходимости изменения текста запроса и громоздких формул.

Сначала я задался вопросом. Неужели в типовой конфигурации нет функции пересчета сумм из валюты в валюту, чтобы ей можно было воспользоваться, не «изобретая велосипед»?

Конечно же, такая функция обнаружилась:

Общий модуль – РаботаСКурсамиВалютУТ

Функция ПересчитатьСуммуДокументаВВалюту(СуммаДокумента, ТекущаяВалюта, НоваяВалюта, Дата) Экспорт

 

Рассмотрим ее описание в комментариях.

Вполне очевидно, что эта функция полностью отвечает нашим требованиям – если в качестве параметров указать Цену, Валюту цены, Выбранную валюту и дату пересчета, то на выходе получим Цену в требуемой валюте.

Известно, что в СКД можно вызывать экспортируемые функции общих модулей. Однако, как указано в описании, такой общий модуль должен исполняться на клиенте. В свойствах же общего модуля РаботаСКурсамиВалютУТ указаны параметры исполнения: Сервер и Внешнее соединение.

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

Но вполне допустим следующий вариант – создать дополнительный общий модуль, запускающий нужную функцию из варианта исполнения Клиент с использованием Вызова сервера.

Добавим новый общий модуль (предварительно включив режим редактирования конфигурации). В материалах по подготовке к экзаменам добавляемые общие модули рекомендуют называть «Экзамен». В свойствах укажем галочки: Клиент, Сервер и Вызов сервера. В документации по стандартам 1С рекомендуется имя общего модуля дополнять вариантом исполнения. Для нашего варианта – Вызов сервера.

Таким образом, настройки модуля:

 

Созданный модуль будет содержать одну экспортируемую функцию, которую для ясности можно назвать ПересчитатьСуммуДокументаВВалюту. Назначение данной функции – вызвать одноименную функцию общего модуля РаботаСКурсамиВалютУТ и возвратить результат. Функцию необходимо снабдить инструкцией препроцессора НаСервере

 

Рассмотрим доработку СКД для типового отчета «Прайс-лист».

В СКД находим необходимые данные для пересчета – это поля Цена и Валюта:

Создадим параметр Валюта отчета. Параметр дата формирования уже имеется «Дата отчета».

 

Далее на закладке Вычисляемые поля добавляем вызов новой функции.

Формула:

ЦенаВВалюте  = ЭкзаменВызовСеревера.ПересчитатьСуммуДокументаВВалюту(Цена,Валюта,&ВалютаОтчета,&ДатаОтчета)

После этого добавляем новый ресурс. Заметим, что выражение агрегирования для Цены не является элементарным, поэтому следует его полностью скопировать и заменить аргумент Цена на ЦенаВВалюте.

 

В завершении на закладке Настройки требуется настроить отображение параметра Валюта отчета и добавить вывод ресурса ЦенаВВалюте на соответствующий уровень группировки.

 

Для задачи, в которой требуется не добавить новое поле с выводом суммы в валюте отчета, а изменить значение существующего поля (сумма в валюте цены), вызов функции можно осуществить не путем создания нового поля на закладке Вычисляемые поля, а непосредственно для изменяемого поля на закладке «Наборы данных» (колонка – Выражение представления).

Очевидным плюсом данного решения является то, что в этом случае дополнительных настроек, связанных с созданием ресурса и изменением структуры вывода не потребуется.

Экзамен специалист УТ 11 задача 2.1

См. также

Подготовка к аттестации Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обучающая программа 1С Online представляет собой интерактивное изучение языка запросов с самого начала: - 50 практических заданий с различным уровнем сложности; - Методические материалы по практике написания запросов; - Описание назначения таблиц и индексов 1С Предприятие 8; - Методика решения реальных задач запросом 1С; - Автоматическая система проверки решений с указанием ошибок; - Инструкции по решению задач с разъяснениями; - Техническая поддержка пользователей. Тренажер запросов подходит для начинающих и действующих разработчиков 1С

1800 руб.

11.02.2014    77215    96    15    

190

Подготовка к аттестации Программист Стажер Бесплатно (free)

Меня зовут Татьяна, в 1С-разработке я уже семь лет, а в этом году официально стала junior-специалистом. Рассказываю, как всё происходило.

10.09.2024    7244    PROSTO-1C    21    

13

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

Я Олег, разработчик 1С. Расскажу, как сдавал на сертификат Специалиста, в чём ошибся и что стоит учесть.

11.06.2024    14367    PROSTO-1C    51    

66

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

Хочу поделиться своей историей планирования обучения, подготовки к экзамену и сдачи непосредственно экзамена. Надеюсь, что это будет полезно и откинет все вопросы об экзамене.

04.06.2024    9495    anton99    50    

57

Подготовка к аттестации Стажер Конфигурации 1cv8 Фармацевтика, аптеки Россия Управленческий учет Бесплатно (free)

Краткий рассказ о выборе 1С как основного языка программирования для дипломной работы в университете, и само приложение к диплому.

28.05.2024    4411    DmitryOneBit    20    

20

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Абонемент ($m)

В публикации предоставлено решения 7 билетов из сборника 2022 года . Решения выполнены по пунктам и подробно, каждый БП описан и решен по условиям задач. Благодаря данному решению к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

07.05.2024    8506    87    user1988637    16    

42

Подготовка к аттестации Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

В публикации представлены только решения тех заданий, который попадаются на экзамене 1С:СК управленческого учета ERP. Благодаря данным решениям к экзамену стало подготовиться проще, чем когда-либо.

10 стартмани

08.04.2024    3037    41    user1988637    4    

15

Подготовка к аттестации Программист Стажер Платформа 1С v8.3 Россия Бесплатно (free)

Готовилась три месяца, сдала с первого раза. Делюсь опытом, лайфхаками и ресурсами, по которым учила материал.

14.03.2024    18639    PROSTO-1C    47    

90
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Isach89 17.06.22 05:45 Сейчас в теме
В задаче 2.01 в Отчете "ВедомостьПоТоварамНаСкладахВЦенахНоменклатуры" в СКД нет поля "Цена", данный вариант не совсем подходит для данной задачи.
2. Sergey1CSpb 246 17.06.22 12:24 Сейчас в теме
Я честно уже не очень помню условие. Да и изменилось оно за это время.
Но в СКД этого отчета есть поля
СуммаНачальныйОстаток -СуммаПриход -СуммаРасход-СуммаКонечныйОстаток
Может быть, это можно и нужно пересчитать?
3. dbuldysko 25.01.23 01:31 Сейчас в теме
Спасибо! Рабочий вариант.
Оставьте свое сообщение