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С OnLine. Интерактивная обучающая программа.

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

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

1800 руб.

11.02.2014    74134    679    13    

168

Оптимизация запросов 1С - от теории к практике

Подготовка к аттестации Запросы Конфигурации 1cv8 Платные (руб)

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

1800 руб.

06.07.2015    71004    118    9    

128

Экзамен "1С:Специалист-консультант" по внедрению подсистем управленческого учета в 1С:ERP. Полные и правильные решения билетов

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

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

10 стартмани

08.04.2024    1053    10    user1988637    0    

10

Программист 1С: как начать с нуля с минимальными затратами

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

Информация будет полезна многим начинающим программистам 1C и тем, кто хочет что-то изменить в своей жизни, испытывая жизненные трудности, с минимальными затратами.

18.03.2024    2452    AlOkt    4    

6

Как я готовилась к экзамену на Специалиста по платформе 1С

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

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

14.03.2024    11064    PROSTO-1C    46    

83

Как я стал Экспертом по технологическим вопросам за 3 месяца. Часть 2 (обновлена)

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

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам. Часть 2.

04.02.2024    6149    shuhratsj    16    

74

Как я стал Экспертом по технологическим вопросам за 3 месяца

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

Мой опыт подготовки и сдачи к экзамену 1С: Эксперт по технологическим вопросам за 3 месяца. Часть 1.

29.01.2024    13844    shuhratsj    102    

153

1С: Специалист-консультант ЗУП 8. Решения из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023. Часть 6

Подготовка к аттестации Зарплата Кадровый учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Часть шестая. Делюсь сквозным решением 15-ти задач из сборника задач для подготовки к экзамену «1С:Специалист-консультант» по внедрению прикладного решения „1С:Зарплата и управление персоналом 8“, редакция сентябрь 2023.

5 стартмани

01.12.2023    1512    19    Ocherkcons    0    

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