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 1C:Бухгалтерия Платные (руб)

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

1800 руб.

11.02.2014    78396    100    15    

194

Подготовка к аттестации Программист Запросы 1C:Бухгалтерия Платные (руб)

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1800 руб.

06.07.2015    72680    121    9    

134

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

Источники информации для подготовки к Эксперту.

18.12.2024    10084    GraVVitY    61    

63

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

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

10.09.2024    8126    PROSTO-1C    21    

13

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

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

11.06.2024    16076    PROSTO-1C    51    

66

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

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

04.06.2024    10603    anton99    50    

58

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

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

28.05.2024    4859    DmitryOneBit    20    

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